<?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>128261</bug_id>
          
          <creation_ts>2014-02-05 10:58:03 -0800</creation_ts>
          <short_desc>GC timer should intelligently choose between EdenCollections and FullCollections</short_desc>
          <delta_ts>2014-03-19 18:56:54 -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>
          <dependson>130488</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>aestes</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976863</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-05 10:58:03 -0800</bug_when>
    <thetext>Most of the GCs while browsing the web are due to the GC timer. Currently the GC timer always does FullCollections. To reduce the impact of the GC timer on the system we should add some logic to intelligently schedule both EdenCollections and FullCollections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990064</commentid>
    <comment_count>1</comment_count>
      <attachid>226599</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-13 10:53:46 -0700</bug_when>
    <thetext>Created attachment 226599
straw man</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990065</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2014-03-13 10:55:15 -0700</bug_when>
    <thetext>Attachment 226599 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990077</commentid>
    <comment_count>3</comment_count>
      <attachid>226600</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-13 11:07:54 -0700</bug_when>
    <thetext>Created attachment 226600
straw man 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990117</commentid>
    <comment_count>4</comment_count>
      <attachid>226600</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-13 12:28:34 -0700</bug_when>
    <thetext>Comment on attachment 226600
straw man 2

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

r=me

Please test PLT before landing this.

Plus a few fixups below.

&gt; Source/JavaScriptCore/heap/GCActivityCallback.cpp:-97
&gt;      if (heap-&gt;isPagedOut(startTime + pagingTimeOut)) {
&gt; -        heap-&gt;activityCallback()-&gt;cancel();

EdenCollection probably should not do the isPagedOut check.

I think isPagedOut touches the whole heap, so that&apos;s not great for Eden.

Also, EdenCollection is more likely to find free space than FullCollection, so I think it should be less conservative about whether collection is &quot;worth it&quot;.

&gt; Source/JavaScriptCore/heap/GCActivityCallback.cpp:112
&gt; +    heap-&gt;setShouldDoFullCollection(true);
&gt;      heap-&gt;collect();

I think it would be a slightly better abstraction to pass a collection type to collect(), rather than setting a data member. Perhaps the Heap implements things internally in terms of a data member, but clients need not know that detail.

&gt; Source/JavaScriptCore/heap/Heap.cpp:281
&gt; +    , m_fullActivityCallback(GCActivityCallback::createFullTimer(this))
&gt; +    , m_edenActivityCallback(GCActivityCallback::createEdenTimer(this))

If GenGC is disabled, both pointers should point to the same callback, and it should be a full callback. That way, we can still A/B test GenGC on vs off.

&gt; Source/JavaScriptCore/heap/Heap.cpp:340
&gt; -    if (m_activityCallback)
&gt; -        m_activityCallback-&gt;didAllocate(m_bytesAllocatedThisCycle + m_bytesAbandonedThisCycle);
&gt; +    if (m_fullActivityCallback)
&gt; +        m_fullActivityCallback-&gt;didAllocate(m_sizeAfterLastCollect + m_bytesAbandonedThisCycle);

This is pretty aggro. The first abandoned object graph reports that it abandoned the whole heap! I think you want this instead:

    m_sizeAfterLastCollect - m_sizeAfterLastFullCollect + m_bytesAllocatedThisCycle + m_bytesAbandonedThisCycle

That way, we only report our growth since the last full collect. 

Also: You should rename m_bytesAbandonedThisCycle to m_bytesAbandonedSinceLastFullCollect, and change it so that it only resets to 0 during a full collect. Our theory of abandoned object graphs is that they should hasten full collections, so we should not reset the abandoned counter during eden collections.

For example, if I navigate between three websites, and do three eden collections, I still want to do a full collection soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991791</commentid>
    <comment_count>5</comment_count>
      <attachid>227087</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 12:29:01 -0700</bug_when>
    <thetext>Created attachment 227087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991872</commentid>
    <comment_count>6</comment_count>
      <attachid>227107</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 14:26:09 -0700</bug_when>
    <thetext>Created attachment 227107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991891</commentid>
    <comment_count>7</comment_count>
      <attachid>227114</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 14:49:45 -0700</bug_when>
    <thetext>Created attachment 227114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991906</commentid>
    <comment_count>8</comment_count>
      <attachid>227117</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 15:06:46 -0700</bug_when>
    <thetext>Created attachment 227117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991935</commentid>
    <comment_count>9</comment_count>
      <attachid>227125</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 16:04:53 -0700</bug_when>
    <thetext>Created attachment 227125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991943</commentid>
    <comment_count>10</comment_count>
      <attachid>227128</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 16:24:01 -0700</bug_when>
    <thetext>Created attachment 227128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991967</commentid>
    <comment_count>11</comment_count>
      <attachid>227138</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 17:48:08 -0700</bug_when>
    <thetext>Created attachment 227138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991976</commentid>
    <comment_count>12</comment_count>
      <attachid>227142</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-18 18:37:56 -0700</bug_when>
    <thetext>Created attachment 227142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992227</commentid>
    <comment_count>13</comment_count>
      <attachid>227142</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-03-19 13:30:58 -0700</bug_when>
    <thetext>Comment on attachment 227142
Patch

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

r=me

&gt; Source/JavaScriptCore/heap/EdenGCActivityCallback.cpp:57
&gt; +    return double(sizeBefore - sizeAfter) / double(sizeBefore);

static_cast&lt;double&gt; is more our style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992290</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-19 15:22:22 -0700</bug_when>
    <thetext>Committed r165926: &lt;http://trac.webkit.org/changeset/165926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992330</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-19 17:15:53 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 130488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992334</commentid>
    <comment_count>16</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-03-19 17:19:58 -0700</bug_when>
    <thetext>This broke linking WebCore on iOS:

Undefined symbols for architecture x86_64:
  &quot;__ZN3JSC22FullGCActivityCallback12doCollectionEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC22FullGCActivityCallback11gcTimeSliceEm&quot;, referenced from:
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC18GCActivityCallback11willCollectEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC22FullGCActivityCallback12lastGCLengthEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC22FullGCActivityCallback9deathRateEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;_wkQueryDecoderAvailability&quot;, referenced from:
     -exported_symbol[s_list] command line option
  &quot;__ZN3JSC18GCActivityCallback6doWorkEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC22EdenGCActivityCallback12doCollectionEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC18GCActivityCallback6cancelEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC22EdenGCActivityCallback9deathRateEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC18GCActivityCallback11didAllocateEm&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
      __ZTVN7WebCore29WebSafeFullGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC22EdenGCActivityCallback12lastGCLengthEv&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
  &quot;__ZN3JSC22EdenGCActivityCallback11gcTimeSliceEm&quot;, referenced from:
      __ZTVN7WebCore29WebSafeEdenGCActivityCallbackE in JSDOMWindowBase.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992356</commentid>
    <comment_count>17</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-03-19 18:56:54 -0700</bug_when>
    <thetext>Committed r165940: &lt;http://trac.webkit.org/changeset/165940&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226599</attachid>
            <date>2014-03-13 10:53:46 -0700</date>
            <delta_ts>2014-03-13 11:07:49 -0700</delta_ts>
            <desc>straw man</desc>
            <filename>bug-128261-20140313105323.patch</filename>
            <type>text/plain</type>
            <size>18838</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1NTQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE0LTAzLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHdvdWxkbid0IGJl
IAorICAgICAgICBkZXRlY3RlZCBieSBhbiBFZGVuQ29sbGVjdGlvbikuCisKKyAgICAgICAgKiBo
ZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxs
YmFjazo6R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxi
YWNrOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFj
azo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6
RWRlbkdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmRvQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6
c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2Vs
VGltZXIpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKToK
KyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCk6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKToKKyAgICAgICAgKiBoZWFwL0dDQWN0
aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0
aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
RnVsbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVu
VGltZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRBYmFuZG9uKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6d2lsbFN0YXJ0Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZUFsbG9j
YXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFj
ayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVkZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VD
b2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUp
OgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp0aW1lckRpZEZpcmUpOgorCiAyMDE0LTAzLTEzICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJl
bW92ZSB1bnVzZWQgY2FsbElkIHBhcmFtZXRlciBmcm9tIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcAkocmV2aXNpb24gMTY1NTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjYgKzYwLDIzIEBA
IGNvbnN0IGRvdWJsZSBob3VyID0gNjAgKiA2MDsKICNlbmRpZgogCiAjaWYgVVNFKENGKQotRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBo
ZWFwKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkK
ICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50
KCkpCi0gICAgLCBtX2RlbGF5KHNfZGVjYWRlKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJl
ZiBydW5Mb29wKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCog
aGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVh
cC0+dm0oKSwgcnVuTG9vcCkKLSAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAjZWxpZiBQ
TEFURk9STShFRkwpCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxs
YmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIFdU
Rjo6aXNNYWluVGhyZWFkKCkpCi0gICAgLCBtX2RlbGF5KGhvdXIpCiB7CiB9CiAjZW5kaWYKIAot
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmRvV29yaygpCiB7CiAgICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOwogICAg
IGlmICghaXNFbmFibGVkKCkpCkBAIC05NCwxNyArOTEsNDEgQEAgdm9pZCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpkb1dvcmsoKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgZG91YmxlIHN0
YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgaWYgKGhl
YXAtPmlzUGFnZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKLSAgICAgICAgaGVh
cC0+YWN0aXZpdHlDYWxsYmFjaygpLT5jYW5jZWwoKTsKKyAgICAgICAgY2FuY2VsKCk7CiAgICAg
ICAgIGhlYXAtPmluY3JlYXNlTGFzdEdDTGVuZ3RoKHBhZ2luZ1RpbWVPdXQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgaGVhcC0+Z2NUaW1lckRpZEZpcmUoKTsKKworICAg
IGRvQ29sbGVjdGlvbigpOworfQorCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkK
K3sKK30KKwordm9pZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQorewor
ICAgIEhlYXAqIGhlYXAgPSAmbV92bS0+aGVhcDsKKyAgICBoZWFwLT5zZXRTaG91bGREb0Z1bGxD
b2xsZWN0aW9uKHRydWUpOwogICAgIGhlYXAtPmNvbGxlY3QoKTsKIH0KLSAgICAKKworRWRlbkdD
QWN0aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAg
IDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlD
YWxsYmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7
CisgICAgaGVhcC0+c2V0U2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSk7CisgICAgaGVhcC0+
Y29sbGVjdCgpOworfQorCiAjaWYgVVNFKENGKQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxi
YWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsKICAgICBpZiAobmV3RGVsYXkg
KiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47CkBAIC0xMTMsMTMgKzEzNCwx
MyBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlCiAgICAgQ0ZSdW5M
b29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZSdW5Mb29wVGltZXJHZXRO
ZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSkgLSBkZWx0YSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmNhbmNlbFRpbWVyKCkKIHsKICAgICBtX2RlbGF5ID0gc19kZWNhZGU7CiAgICAgQ0ZSdW5Mb29w
VGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJy
ZW50KCkgKyBzX2RlY2FkZSk7CiB9CiAjZWxpZiBQTEFURk9STShFRkwpCi12b2lkIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQordm9pZCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQogewogICAg
IGlmIChuZXdEZWxheSAqIHRpbWVyU2xvcCA+IG1fZGVsYXkpCiAgICAgICAgIHJldHVybjsKQEAg
LTEzMSwxNCArMTUyLDE0IEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1
bGUKICAgICBtX3RpbWVyID0gYWRkKG5ld0RlbGF5LCB0aGlzKTsKIH0KIAotdm9pZCBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFj
azo6Y2FuY2VsVGltZXIoKQogewogICAgIG1fZGVsYXkgPSBob3VyOwogICAgIHN0b3AoKTsKIH0K
ICNlbmRpZgogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNp
emVfdCBieXRlcykKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3Qg
Ynl0ZXMpCiB7CiAjaWYgUExBVEZPUk0oRUZMKQogICAgIGlmICghaXNFbmFibGVkKCkpCkBAIC0x
NTcsMzYgKzE3OCwzNiBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9j
CiAgICAgc2NoZWR1bGVUaW1lcihuZXdEZWxheSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxD
b2xsZWN0KCkKIHsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkK
IHsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCiAjZWxzZQogCi1EZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5
Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0
eUNhbGxiYWNrKGhlYXAtPnZtKCkpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Xb3JrKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQogewogfQog
Ci12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCkKK3Zv
aWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QpCiB7CiB9CiAKLXZvaWQg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpjYW5jZWwoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxs
YmFjay5oCShyZXZpc2lvbiAxNjU1MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q0FjdGl2aXR5Q2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsMTggQEAgY2xh
c3MgSGVhcDsKIGNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBIZWFwVGltZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBk
aWRBbGxvY2F0ZShzaXplX3QpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSB7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxH
Q0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGVFZGVuVGltZXIoSGVhcCopOworCisg
ICAgR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkb1dvcmso
KSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWxsb2NhdGUoc2l6ZV90KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bENvbGxlY3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAgICAgYm9vbCBpc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KIApAQCAtNTcsNDAgKzY2LDMwIEBA
IHByb3RlY3RlZDoKICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2soVk0qIHZtLCBDRlJ1bkxvb3BSZWYg
cnVuTG9vcCkKICAgICAgICAgOiBIZWFwVGltZXIodm0sIHJ1bkxvb3ApCiAgICAgICAgICwgbV9l
bmFibGVkKHRydWUpCisgICAgICAgICwgbV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQog
I2VsaWYgUExBVEZPUk0oRUZMKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0sIGJvb2wg
ZmxhZykKICAgICAgICAgOiBIZWFwVGltZXIodm0pCiAgICAgICAgICwgbV9lbmFibGVkKGZsYWcp
CisgICAgICAgICwgbV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQogI2Vsc2UKICAgICBH
Q0FjdGl2aXR5Q2FsbGJhY2soVk0qIHZtKQogICAgICAgICA6IEhlYXBUaW1lcih2bSkKICAgICAg
ICAgLCBtX2VuYWJsZWQodHJ1ZSkKKyAgICAgICAgLCBtX2RlbGF5KHNfZGVjYWRlKQogICAgIHsK
ICAgICB9CiAjZW5kaWYKIAogICAgIGJvb2wgbV9lbmFibGVkOwotfTsKLQotY2xhc3MgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0
ZShIZWFwKik7Ci0KLSAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKLQotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpIG92ZXJy
aWRlOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIG92
ZXJyaWRlOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBvdmVy
cmlkZTsKLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkb1dvcmsoKSBvdmVy
cmlkZTsKIAogI2lmIFVTRShDRikKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKICNl
bmRpZgogI2lmIFVTRShDRikgfHwgUExBVEZPUk0oRUZMKQogcHJvdGVjdGVkOgpAQCAtMTAyLDEx
ICsxMDEsMzAgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotaW5saW5lIFBhc3NPd25QdHI8RGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
KEhlYXAqIGhlYXApCitjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0
aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7Cit9OworCitj
bGFzcyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7
CitwdWJsaWM6CisgICAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7Cit9OworCitpbmxpbmUgUGFzc093blB0
cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVy
KEhlYXAqIGhlYXApCiB7Ci0gICAgcmV0dXJuIEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRD
cmVhdGVHQ1RpbWVyID8gYWRvcHRQdHIobmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVh
cCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRvcHRQ
dHIobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKIH0KIAoraW5s
aW5lIFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNy
ZWF0ZUVkZW5UaW1lcihIZWFwKiBoZWFwKQoreworICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdD
VGltZXIgPyBhZG9wdFB0cihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxs
cHRyOwogfQogCit9IC8vIG5hbWVzcGFjZSBKU0MKKwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTY1NTIxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw2ICsyNTMsNyBAQCBI
ZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX3JhbVNpemUocmFt
U2l6ZSgpKQogICAgICwgbV9taW5CeXRlc1BlckN5Y2xlKG1pbkhlYXBTaXplKG1faGVhcFR5cGUs
IG1fcmFtU2l6ZSkpCiAgICAgLCBtX3NpemVBZnRlckxhc3RDb2xsZWN0KDApCisgICAgLCBtX3Np
emVBZnRlckxhc3RGdWxsQ29sbGVjdCgwKQogICAgICwgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNs
ZSgwKQogICAgICwgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZSgwKQogICAgICwgbV9tYXhFZGVu
U2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCkBAIC0yNzYsNyArMjc3LDggQEAgSGVhcDo6SGVhcChW
TSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fbGFzdEdD
TGVuZ3RoKDApCiAgICAgLCBtX2xhc3RDb2RlRGlzY2FyZFRpbWUoV1RGOjptb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoKSkKLSAgICAsIG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCisgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKHRoaXMpKQorICAgICwgbV9lZGVu
QWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0aGlz
KSkKICAgICAsIG1fc3dlZXBlcihJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZSh0aGlzKSkKICAg
ICAsIG1fZGVmZXJyYWxEZXB0aCgwKQogewpAQCAtMzM0LDggKzMzNiw4IEBAIHZvaWQgSGVhcDo6
cmVwb3J0QWJhbmRvbmVkT2JqZWN0R3JhcGgoKQogCiB2b2lkIEhlYXA6OmRpZEFiYW5kb24oc2l6
ZV90IGJ5dGVzKQogewotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0
aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1f
Ynl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOworICAgIGlmIChtX2VkZW5BY3Rpdml0eUNhbGxiYWNr
KQorICAgICAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5kaWRBbGxvY2F0ZShtX2J5dGVzQWxs
b2NhdGVkVGhpc0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZSk7CiAgICAgbV9ieXRl
c0FiYW5kb25lZFRoaXNDeWNsZSArPSBieXRlczsKIH0KIApAQCAtOTQxLDExICs5NDMsMTUgQEAg
dm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKCkKICAgICAgICAgaWYgKE9wdGlvbnM6Omxv
Z0dDKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJFZGVuQ29sbGVjdGlvbiwgIik7CiAgICAgfQot
ICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYg
KG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgewogICAgICAgICBtX2V4
dHJhTWVtb3J5VXNhZ2UgPSAwOwogCi0gICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAg
ICAgbV9hY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVjdCgpOworICAgICAgICBpZiAobV9mdWxs
QWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPndp
bGxDb2xsZWN0KCk7CisgICAgfQorCisgICAgaWYgKG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2spCisg
ICAgICAgIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiB9CiAKIHZvaWQg
SGVhcDo6ZGVsZXRlT2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpCkBAIC0xMDQzLDYgKzEwNDks
NyBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAgICAgICAvLyBmaXhl
ZCBtaW5pbXVtLgogICAgICAgICBtX21heEhlYXBTaXplID0gbWF4KG1pbkhlYXBTaXplKG1faGVh
cFR5cGUsIG1fcmFtU2l6ZSksIHByb3BvcnRpb25hbEhlYXBTaXplKGN1cnJlbnRIZWFwU2l6ZSwg
bV9yYW1TaXplKSk7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXplIC0gY3Vy
cmVudEhlYXBTaXplOworICAgICAgICBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdCA9IGN1cnJl
bnRIZWFwU2l6ZTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoY3VycmVudEhlYXBTaXpl
ID49IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QpOwogICAgICAgICBtX21heEVkZW5TaXplID0gbV9t
YXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKQEAgLTEwNTIsNiArMTA1OSwxMCBAQCB2b2lk
IEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAgICAgICAgICAgbV9zaG91bGREb0Z1
bGxDb2xsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9tYXhIZWFwU2l6ZSArPSBjdXJyZW50SGVh
cFNpemUgLSBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogICAgICAgICBtX21heEVkZW5TaXplID0g
bV9tYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKKyAgICAgICAgaWYgKG1fZnVsbEFjdGl2
aXR5Q2FsbGJhY2spIHsKKyAgICAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9z
aXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QpOworICAgICAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxs
YmFjay0+ZGlkQWxsb2NhdGUoY3VycmVudEhlYXBTaXplIC0gbV9zaXplQWZ0ZXJMYXN0RnVsbENv
bGxlY3QpOworICAgICAgICB9CiAgICAgfQogCiAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9
IGN1cnJlbnRIZWFwU2l6ZTsKQEAgLTExMDIsMTQgKzExMTMsMjQgQEAgdm9pZCBIZWFwOjptYXJr
RGVhZE9iamVjdHMoKQogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPE1hcmtPYmpl
Y3Q+KGl0ZXJhdGlvblNjb3BlKTsKIH0KIAotdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNr
KFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQordm9pZCBI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCit7CisgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjayA9
IGFjdGl2aXR5Q2FsbGJhY2s7Cit9CisKK3ZvaWQgSGVhcDo6c2V0RWRlbkFjdGl2aXR5Q2FsbGJh
Y2soUGFzc093blB0cjxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQor
eworICAgIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOworfQorCitH
Q0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkKIHsKLSAgICBt
X2FjdGl2aXR5Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOworICAgIHJldHVybiBtX2Z1bGxB
Y3Rpdml0eUNhbGxiYWNrLmdldCgpOwogfQogCi1HQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmFj
dGl2aXR5Q2FsbGJhY2soKQorR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFwOjplZGVuQWN0aXZpdHlD
YWxsYmFjaygpCiB7Ci0gICAgcmV0dXJuIG1fYWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKKyAgICBy
ZXR1cm4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRJ
bmNyZW1lbnRhbFN3ZWVwZXIoUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IHN3ZWVwZXIp
CkBAIC0xMTI0LDE0ICsxMTQ1LDE2IEBAIEluY3JlbWVudGFsU3dlZXBlciogSGVhcDo6c3dlZXBl
cigpCiAKIHZvaWQgSGVhcDo6c2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCBl
bmFibGUpCiB7Ci0gICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rpdml0
eUNhbGxiYWNrLT5zZXRFbmFibGVkKGVuYWJsZSk7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spCisgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJsZWQoZW5hYmxl
KTsKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZp
dHlDYWxsYmFjay0+c2V0RW5hYmxlZChlbmFibGUpOwogfQogCiB2b2lkIEhlYXA6OmRpZEFsbG9j
YXRlKHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAg
ICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3lj
bGUgKyBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKTsKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlD
YWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOwogICAg
IG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKz0gYnl0ZXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDE2NTUyMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDggKzExOCwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4g
bV9vYmplY3RTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMo
KSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7Ci0gICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZp
dHlDYWxsYmFjaz4pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJh
Y2sqIGZ1bGxBY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdD
QWN0aXZpdHlDYWxsYmFjayogZWRlbkFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRF
ZGVuQWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+KTsK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVy
RW5hYmxlZChib29sKTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbmNyZW1lbnRhbFN3
ZWVwZXIqIHN3ZWVwZXIoKTsKQEAgLTMwOSw2ICszMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgY29uc3Qgc2l6ZV90IG1fcmFtU2l6ZTsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fbWlu
Qnl0ZXNQZXJDeWNsZTsKICAgICAgICAgc2l6ZV90IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3Q7Cisg
ICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdDsKIAogICAgICAgICBzaXpl
X3QgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICAgICAgc2l6ZV90IG1fYnl0ZXNBYmFu
ZG9uZWRUaGlzQ3ljbGU7CkBAIC0zNTQsNyArMzU3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgRG91Ymx5TGlua2VkTGlzdDxFeGVjdXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAg
ICAgICAgIAotICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2Fs
bGJhY2s7CisgICAgICAgIE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5
Q2FsbGJhY2s7CisgICAgICAgIE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZWRlbkFjdGl2
aXR5Q2FsbGJhY2s7CiAgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBl
cjsKICAgICAgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja1NuYXBzaG90OwogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAkocmV2aXNp
b24gMTY1NTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODUsOCArODUsMTAgQEAgdm9pZCBIZWFwVGltZXI6OnRpbWVyRGlk
RmlyZShDRlJ1bkxvb3BUaQogICAgIH0KIAogICAgIEhlYXBUaW1lciogaGVhcFRpbWVyID0gMDsK
LSAgICBpZiAodm0tPmhlYXAuYWN0aXZpdHlDYWxsYmFjaygpICYmIHZtLT5oZWFwLmFjdGl2aXR5
Q2FsbGJhY2soKS0+bV90aW1lci5nZXQoKSA9PSB0aW1lcikKLSAgICAgICAgaGVhcFRpbWVyID0g
dm0tPmhlYXAuYWN0aXZpdHlDYWxsYmFjaygpOworICAgIGlmICh2bS0+aGVhcC5mdWxsQWN0aXZp
dHlDYWxsYmFjaygpICYmIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIu
Z2V0KCkgPT0gdGltZXIpCisgICAgICAgIGhlYXBUaW1lciA9IHZtLT5oZWFwLmZ1bGxBY3Rpdml0
eUNhbGxiYWNrKCk7CisgICAgZWxzZSBpZiAodm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2so
KSAmJiB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT5tX3RpbWVyLmdldCgpID09IHRp
bWVyKQorICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygp
OwogICAgIGVsc2UgaWYgKHZtLT5oZWFwLnN3ZWVwZXIoKS0+bV90aW1lci5nZXQoKSA9PSB0aW1l
cikKICAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuc3dlZXBlcigpOwogICAgIGVsc2UKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTU0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE0LTAzLTEzICBNYXJrIEhhaG5l
bmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgR0MgdGltZXIgc2hvdWxk
IGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRlbkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29s
bGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBi
cm93c2luZyB0aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdD
IHRpbWVyIAorICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0
aGUgaW1wYWN0IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAg
ICAgY2hhbmdlcyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0
eXBlIG9mIGNvbGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBu
b3RpZmllZCBhdCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBo
YXMgZ3Jvd24gc2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVu
IHNvbWVib2R5IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHdv
dWxkbid0IGJlIAorICAgICAgICBkZXRlY3RlZCBieSBhbiBFZGVuQ29sbGVjdGlvbikuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oOgorCiAy
MDE0LTAzLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgY2FsbElkIHBhcmFtZXRlciBmcm9tIGV2YWx1YXRlSW5X
ZWJJbnNwZWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZlR0NB
Y3Rpdml0eUNhbGxiYWNrSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaAkocmV2aXNpb24gMTY1NTIxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJ
T1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgSlND
OjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrIHsKK2NsYXNzIFdlYlNhZmVHQ0FjdGl2aXR5Q2Fs
bGJhY2sgZmluYWwgOiBwdWJsaWMgSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShK
U0M6OkhlYXAqIGhlYXApCiAgICAgewpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCi0gICAg
ICAgIDogSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1bkxv
b3AoKSkKKyAgICAgICAgOiBKU0M6OkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBXZWJUaHJlYWRS
dW5Mb29wKCkpCiAgICAgewogICAgIH0KIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226600</attachid>
            <date>2014-03-13 11:07:54 -0700</date>
            <delta_ts>2014-03-18 12:28:59 -0700</delta_ts>
            <desc>straw man 2</desc>
            <filename>bug-128261-20140313110730.patch</filename>
            <type>text/plain</type>
            <size>19572</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1NTQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE0LTAzLTEzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHdvdWxkbid0IGJl
IAorICAgICAgICBkZXRlY3RlZCBieSBhbiBFZGVuQ29sbGVjdGlvbikuCisKKyAgICAgICAgKiBo
ZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxs
YmFjazo6R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxi
YWNrOjpkb1dvcmspOgorICAgICAgICAoSlNDOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFj
azo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6
RWRlbkdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmRvQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6
c2NoZWR1bGVUaW1lcik6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2Vs
VGltZXIpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKToK
KyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCk6CisgICAgICAg
IChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKToKKyAgICAgICAgKiBoZWFwL0dDQWN0
aXZpdHlDYWxsYmFjay5oOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0
aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
RnVsbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVu
VGltZXIpOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6Okhl
YXApOgorICAgICAgICAoSlNDOjpIZWFwOjpkaWRBYmFuZG9uKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6d2lsbFN0YXJ0Q29sbGVjdGlvbik6CisgICAgICAgIChKU0M6OkhlYXA6OnVwZGF0ZUFsbG9j
YXRpb25MaW1pdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFj
ayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVkZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAoSlNDOjpIZWFw
OjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VD
b2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUp
OgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvSGVhcFRpbWVyLmNwcDoK
KyAgICAgICAgKEpTQzo6SGVhcFRpbWVyOjp0aW1lckRpZEZpcmUpOgorCiAyMDE0LTAzLTEzICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJl
bW92ZSB1bnVzZWQgY2FsbElkIHBhcmFtZXRlciBmcm9tIGV2YWx1YXRlSW5XZWJJbnNwZWN0b3IK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcAkocmV2aXNpb24gMTY1NTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMjYgKzYwLDIzIEBA
IGNvbnN0IGRvdWJsZSBob3VyID0gNjAgKiA2MDsKICNlbmRpZgogCiAjaWYgVVNFKENGKQotRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBo
ZWFwKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkK
ICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50
KCkpCi0gICAgLCBtX2RlbGF5KHNfZGVjYWRlKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJl
ZiBydW5Mb29wKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCog
aGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVh
cC0+dm0oKSwgcnVuTG9vcCkKLSAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAjZWxpZiBQ
TEFURk9STShFRkwpCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxs
YmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIFdU
Rjo6aXNNYWluVGhyZWFkKCkpCi0gICAgLCBtX2RlbGF5KGhvdXIpCiB7CiB9CiAjZW5kaWYKIAot
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmRvV29yaygpCiB7CiAgICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOwogICAg
IGlmICghaXNFbmFibGVkKCkpCkBAIC05NCwxNyArOTEsNDEgQEAgdm9pZCBEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrOjpkb1dvcmsoKQogI2lmICFQTEFURk9STShJT1MpCiAgICAgZG91YmxlIHN0
YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAgICAgaWYgKGhl
YXAtPmlzUGFnZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKLSAgICAgICAgaGVh
cC0+YWN0aXZpdHlDYWxsYmFjaygpLT5jYW5jZWwoKTsKKyAgICAgICAgY2FuY2VsKCk7CiAgICAg
ICAgIGhlYXAtPmluY3JlYXNlTGFzdEdDTGVuZ3RoKHBhZ2luZ1RpbWVPdXQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgaGVhcC0+Z2NUaW1lckRpZEZpcmUoKTsKKworICAg
IGRvQ29sbGVjdGlvbigpOworfQorCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkK
K3sKK30KKwordm9pZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQorewor
ICAgIEhlYXAqIGhlYXAgPSAmbV92bS0+aGVhcDsKKyAgICBoZWFwLT5zZXRTaG91bGREb0Z1bGxD
b2xsZWN0aW9uKHRydWUpOwogICAgIGhlYXAtPmNvbGxlY3QoKTsKIH0KLSAgICAKKworRWRlbkdD
QWN0aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAg
IDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlD
YWxsYmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7
CisgICAgaGVhcC0+c2V0U2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSk7CisgICAgaGVhcC0+
Y29sbGVjdCgpOworfQorCiAjaWYgVVNFKENGKQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxi
YWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsKICAgICBpZiAobmV3RGVsYXkg
KiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47CkBAIC0xMTMsMTMgKzEzNCwx
MyBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlCiAgICAgQ0ZSdW5M
b29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZSdW5Mb29wVGltZXJHZXRO
ZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSkgLSBkZWx0YSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmNhbmNlbFRpbWVyKCkKIHsKICAgICBtX2RlbGF5ID0gc19kZWNhZGU7CiAgICAgQ0ZSdW5Mb29w
VGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJy
ZW50KCkgKyBzX2RlY2FkZSk7CiB9CiAjZWxpZiBQTEFURk9STShFRkwpCi12b2lkIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQordm9pZCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQogewogICAg
IGlmIChuZXdEZWxheSAqIHRpbWVyU2xvcCA+IG1fZGVsYXkpCiAgICAgICAgIHJldHVybjsKQEAg
LTEzMSwxNCArMTUyLDE0IEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1
bGUKICAgICBtX3RpbWVyID0gYWRkKG5ld0RlbGF5LCB0aGlzKTsKIH0KIAotdm9pZCBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFj
azo6Y2FuY2VsVGltZXIoKQogewogICAgIG1fZGVsYXkgPSBob3VyOwogICAgIHN0b3AoKTsKIH0K
ICNlbmRpZgogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNp
emVfdCBieXRlcykKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3Qg
Ynl0ZXMpCiB7CiAjaWYgUExBVEZPUk0oRUZMKQogICAgIGlmICghaXNFbmFibGVkKCkpCkBAIC0x
NTcsMzYgKzE3OCwzNiBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9j
CiAgICAgc2NoZWR1bGVUaW1lcihuZXdEZWxheSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxD
b2xsZWN0KCkKIHsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkK
IHsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCiAjZWxzZQogCi1EZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5
Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0
eUNhbGxiYWNrKGhlYXAtPnZtKCkpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Xb3JrKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQogewogfQog
Ci12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCkKK3Zv
aWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QpCiB7CiB9CiAKLXZvaWQg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpjYW5jZWwoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxs
YmFjay5oCShyZXZpc2lvbiAxNjU1MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q0FjdGl2aXR5Q2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSArNDQsMTggQEAgY2xh
c3MgSGVhcDsKIGNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBIZWFwVGltZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBk
aWRBbGxvY2F0ZShzaXplX3QpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSB7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxH
Q0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZUZ1bGxUaW1lcihIZWFwKik7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGVFZGVuVGltZXIoSGVhcCopOworCisg
ICAgR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkb1dvcmso
KSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSA9IDA7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWxsb2NhdGUoc2l6ZV90KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bENvbGxlY3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCk7CiAgICAgYm9vbCBpc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQoYm9v
bCBlbmFibGVkKSB7IG1fZW5hYmxlZCA9IGVuYWJsZWQ7IH0KIApAQCAtNTcsNDAgKzY2LDMwIEBA
IHByb3RlY3RlZDoKICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2soVk0qIHZtLCBDRlJ1bkxvb3BSZWYg
cnVuTG9vcCkKICAgICAgICAgOiBIZWFwVGltZXIodm0sIHJ1bkxvb3ApCiAgICAgICAgICwgbV9l
bmFibGVkKHRydWUpCisgICAgICAgICwgbV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQog
I2VsaWYgUExBVEZPUk0oRUZMKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0sIGJvb2wg
ZmxhZykKICAgICAgICAgOiBIZWFwVGltZXIodm0pCiAgICAgICAgICwgbV9lbmFibGVkKGZsYWcp
CisgICAgICAgICwgbV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQogI2Vsc2UKICAgICBH
Q0FjdGl2aXR5Q2FsbGJhY2soVk0qIHZtKQogICAgICAgICA6IEhlYXBUaW1lcih2bSkKICAgICAg
ICAgLCBtX2VuYWJsZWQodHJ1ZSkKKyAgICAgICAgLCBtX2RlbGF5KHNfZGVjYWRlKQogICAgIHsK
ICAgICB9CiAjZW5kaWYKIAogICAgIGJvb2wgbV9lbmFibGVkOwotfTsKLQotY2xhc3MgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0
ZShIZWFwKik7Ci0KLSAgICBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKLQotICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpIG92ZXJy
aWRlOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIG92
ZXJyaWRlOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBvdmVy
cmlkZTsKLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkb1dvcmsoKSBvdmVy
cmlkZTsKIAogI2lmIFVTRShDRikKIHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKICNl
bmRpZgogI2lmIFVTRShDRikgfHwgUExBVEZPUk0oRUZMKQogcHJvdGVjdGVkOgpAQCAtMTAyLDEx
ICsxMDEsNDMgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotaW5saW5lIFBhc3NPd25QdHI8RGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
KEhlYXAqIGhlYXApCitjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0
aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7CisKK3Byb3Rl
Y3RlZDoKKyAgICBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJl
ZiBydW5Mb29wKQorICAgICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBydW5Mb29wKQor
ICAgIHsKKyAgICB9CisKK307CisKK2NsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJs
aWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSBvdmVycmlkZTsK
KworcHJvdGVjdGVkOgorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZS
dW5Mb29wUmVmIHJ1bkxvb3ApCisgICAgICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIHJ1
bkxvb3ApCisgICAgeworICAgIH0KK307CisKK2lubGluZSBQYXNzT3duUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIoSGVhcCogaGVhcCkK
IHsKLSAgICByZXR1cm4gR0NBY3Rpdml0eUNhbGxiYWNrOjpzX3Nob3VsZENyZWF0ZUdDVGltZXIg
PyBhZG9wdFB0cihuZXcgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRy
OworICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9wdFB0cihuZXcgRnVsbEdD
QWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOwogfQogCitpbmxpbmUgUGFzc093blB0
cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRWRlblRpbWVy
KEhlYXAqIGhlYXApCit7CisgICAgcmV0dXJuIHNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/IGFkb3B0
UHRyKG5ldyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7CiB9CiAKK30g
Ly8gbmFtZXNwYWNlIEpTQworCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCShyZXZpc2lvbiAxNjU1MjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYgKzI1Myw3IEBAIEhlYXA6OkhlYXAoVk0q
IHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcmFtU2l6ZShyYW1TaXplKCkpCiAgICAg
LCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlwZSwgbV9yYW1TaXplKSkK
ICAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKKyAgICAsIG1fc2l6ZUFmdGVyTGFzdEZ1
bGxDb2xsZWN0KDApCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlKDApCiAgICAgLCBt
X2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKDApCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0
ZXNQZXJDeWNsZSkKQEAgLTI3Niw3ICsyNzcsOCBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgLCBtX3ZtKHZtKQogICAgICwgbV9sYXN0R0NMZW5ndGgoMCkKICAg
ICAsIG1fbGFzdENvZGVEaXNjYXJkVGltZShXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpKQotICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNh
bGxiYWNrOjpjcmVhdGVGdWxsVGltZXIodGhpcykpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxi
YWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRWRlblRpbWVyKHRoaXMpKQogICAgICwgbV9z
d2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9kZWZlcnJh
bERlcHRoKDApCiB7CkBAIC0zMzQsOCArMzM2LDggQEAgdm9pZCBIZWFwOjpyZXBvcnRBYmFuZG9u
ZWRPYmplY3RHcmFwaCgpCiAKIHZvaWQgSGVhcDo6ZGlkQWJhbmRvbihzaXplX3QgYnl0ZXMpCiB7
Ci0gICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNr
LT5kaWRBbGxvY2F0ZShtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICsgbV9ieXRlc0FiYW5kb25l
ZFRoaXNDeWNsZSk7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCisgICAgICAgIG1f
ZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKG1fc2l6ZUFmdGVyTGFzdENvbGxlY3Qg
KyBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKTsKICAgICBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5
Y2xlICs9IGJ5dGVzOwogfQogCkBAIC05NDEsMTEgKzk0MywxNSBAQCB2b2lkIEhlYXA6OndpbGxT
dGFydENvbGxlY3Rpb24oKQogICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAg
ICAgIGRhdGFMb2coIkVkZW5Db2xsZWN0aW9uLCAiKTsKICAgICB9Ci0gICAgaWYgKG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9vcGVyYXRpb25JblBy
b2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKSB7CiAgICAgICAgIG1fZXh0cmFNZW1vcnlVc2FnZSA9
IDA7CiAKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2Fs
bGJhY2stPndpbGxDb2xsZWN0KCk7CisgICAgICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNr
KQorICAgICAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+d2lsbENvbGxlY3QoKTsKKyAg
ICB9CisKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0
aXZpdHlDYWxsYmFjay0+d2lsbENvbGxlY3QoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVPbGRD
b2RlKGRvdWJsZSBnY1N0YXJ0VGltZSkKQEAgLTEwNDMsNiArMTA0OSw3IEBAIHZvaWQgSGVhcDo6
dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAgIC8vIGZpeGVkIG1pbmltdW0uCiAgICAg
ICAgIG1fbWF4SGVhcFNpemUgPSBtYXgobWluSGVhcFNpemUobV9oZWFwVHlwZSwgbV9yYW1TaXpl
KSwgcHJvcG9ydGlvbmFsSGVhcFNpemUoY3VycmVudEhlYXBTaXplLCBtX3JhbVNpemUpKTsKICAg
ICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50SGVhcFNpemU7Cisg
ICAgICAgIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0ID0gY3VycmVudEhlYXBTaXplOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9zaXplQWZ0ZXJM
YXN0Q29sbGVjdCk7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXplIC0gY3Vy
cmVudEhlYXBTaXplOwpAQCAtMTA1Miw2ICsxMDU5LDEwIEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxs
b2NhdGlvbkxpbWl0cygpCiAgICAgICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0
cnVlOwogICAgICAgICBtX21heEhlYXBTaXplICs9IGN1cnJlbnRIZWFwU2l6ZSAtIG1fc2l6ZUFm
dGVyTGFzdENvbGxlY3Q7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXplIC0g
Y3VycmVudEhlYXBTaXplOworICAgICAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykgewor
ICAgICAgICAgICAgQVNTRVJUKGN1cnJlbnRIZWFwU2l6ZSA+PSBtX3NpemVBZnRlckxhc3RGdWxs
Q29sbGVjdCk7CisgICAgICAgICAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT5kaWRBbGxvY2F0
ZShjdXJyZW50SGVhcFNpemUgLSBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdCk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBtX3NpemVBZnRlckxhc3RDb2xsZWN0ID0gY3VycmVudEhlYXBTaXpl
OwpAQCAtMTEwMiwxNCArMTExMywyNCBAQCB2b2lkIEhlYXA6Om1hcmtEZWFkT2JqZWN0cygpCiAg
ICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGw8TWFya09iamVjdD4oaXRlcmF0aW9uU2Nv
cGUpOwogfQogCi12b2lkIEhlYXA6OnNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0Fj
dGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCit2b2lkIEhlYXA6OnNldEZ1bGxBY3Rp
dml0eUNhbGxiYWNrKFBhc3NPd25QdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlD
YWxsYmFjaykKK3sKKyAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxsYmFj
azsKK30KKwordm9pZCBIZWFwOjpzZXRFZGVuQWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCit7CisgICAgbV9lZGVuQWN0
aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2FsbGJhY2s7Cit9CisKK0dDQWN0aXZpdHlDYWxsYmFj
ayogSGVhcDo6ZnVsbEFjdGl2aXR5Q2FsbGJhY2soKQogewotICAgIG1fYWN0aXZpdHlDYWxsYmFj
ayA9IGFjdGl2aXR5Q2FsbGJhY2s7CisgICAgcmV0dXJuIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2su
Z2V0KCk7CiB9CiAKLUdDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6YWN0aXZpdHlDYWxsYmFjaygp
CitHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKIHsKLSAg
ICByZXR1cm4gbV9hY3Rpdml0eUNhbGxiYWNrLmdldCgpOworICAgIHJldHVybiBtX2VkZW5BY3Rp
dml0eUNhbGxiYWNrLmdldCgpOwogfQogCiB2b2lkIEhlYXA6OnNldEluY3JlbWVudGFsU3dlZXBl
cihQYXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gc3dlZXBlcikKQEAgLTExMjQsMTQgKzEx
NDUsMTYgQEAgSW5jcmVtZW50YWxTd2VlcGVyKiBIZWFwOjpzd2VlcGVyKCkKIAogdm9pZCBIZWFw
OjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKIHsKLSAgICBp
ZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPnNldEVu
YWJsZWQoZW5hYmxlKTsKKyAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAg
bV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+c2V0RW5hYmxlZChlbmFibGUpOworICAgIGlmIChtX2Vk
ZW5BY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5zZXRF
bmFibGVkKGVuYWJsZSk7CiB9CiAKIHZvaWQgSGVhcDo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVz
KQogewotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxs
YmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFu
ZG9uZWRUaGlzQ3ljbGUpOworICAgIGlmIChtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKQorICAgICAg
ICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5kaWRBbGxvY2F0ZShtX2J5dGVzQWxsb2NhdGVkVGhp
c0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZSk7CiAgICAgbV9ieXRlc0FsbG9jYXRl
ZFRoaXNDeWNsZSArPSBieXRlczsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkocmV2aXNpb24gMTY1NTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsOCArMTE4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBNYXJrZWRTcGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBtX29iamVjdFNwYWNlOyB9
CiAgICAgICAgIE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFj
aGluZVRocmVhZHM7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2Fs
bGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPik7Cisg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogZnVsbEFjdGl2aXR5
Q2FsbGJhY2soKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNr
KiBlZGVuQWN0aXZpdHlDYWxsYmFjaygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldEZ1bGxBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFj
az4pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVkZW5BY3Rpdml0eUNhbGxi
YWNrKFBhc3NPd25QdHI8RWRlbkdDQWN0aXZpdHlDYWxsYmFjaz4pOwogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wpOwog
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEluY3JlbWVudGFsU3dlZXBlciogc3dlZXBlcigp
OwpAQCAtMzA5LDYgKzMxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBzaXpl
X3QgbV9yYW1TaXplOwogICAgICAgICBjb25zdCBzaXplX3QgbV9taW5CeXRlc1BlckN5Y2xlOwog
ICAgICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1f
c2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0OwogCiAgICAgICAgIHNpemVfdCBtX2J5dGVzQWxsb2Nh
dGVkVGhpc0N5Y2xlOwogICAgICAgICBzaXplX3QgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZTsK
QEAgLTM1NCw3ICszNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBEb3VibHlMaW5r
ZWRMaXN0PEV4ZWN1dGFibGVCYXNlPiBtX2NvbXBpbGVkQ29kZTsKICAgICAgICAgCi0gICAgICAg
IE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fYWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAg
T3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKKyAgICAg
ICAgT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKICAg
ICAgICAgT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOwogICAgICAgICBWZWN0
b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2NrU25hcHNob3Q7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCShyZXZpc2lvbiAxNjU1MjEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw4ICs4NSwxMCBAQCB2b2lkIEhlYXBUaW1lcjo6dGltZXJEaWRGaXJlKENGUnVuTG9vcFRp
CiAgICAgfQogCiAgICAgSGVhcFRpbWVyKiBoZWFwVGltZXIgPSAwOwotICAgIGlmICh2bS0+aGVh
cC5hY3Rpdml0eUNhbGxiYWNrKCkgJiYgdm0tPmhlYXAuYWN0aXZpdHlDYWxsYmFjaygpLT5tX3Rp
bWVyLmdldCgpID09IHRpbWVyKQotICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5hY3Rpdml0
eUNhbGxiYWNrKCk7CisgICAgaWYgKHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkgJiYg
dm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+bV90aW1lci5nZXQoKSA9PSB0aW1lcikK
KyAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKTsKKyAg
ICBlbHNlIGlmICh2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpICYmIHZtLT5oZWFwLmVk
ZW5BY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIpCisgICAgICAgIGhl
YXBUaW1lciA9IHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCk7CiAgICAgZWxzZSBpZiAo
dm0tPmhlYXAuc3dlZXBlcigpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQogICAgICAgICBoZWFw
VGltZXIgPSB2bS0+aGVhcC5zd2VlcGVyKCk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTY1NTQ1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDMtMTMgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5i
ZXJnQGFwcGxlLmNvbT4KKworICAgICAgICBHQyB0aW1lciBzaG91bGQgaW50ZWxsaWdlbnRseSBj
aG9vc2UgYmV0d2VlbiBFZGVuQ29sbGVjdGlvbnMgYW5kIEZ1bGxDb2xsZWN0aW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjYxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaDog
VXBkYXRlIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2sKKyAgICAgICAgYXBwcm9wcmlhdGVseSBm
b3IgdGhlIGludHJvZHVjdGlvbiBvZiBhbm90aGVyIHR5cGUgb2YgR0NBY3Rpdml0eUNhbGxiYWNr
LgorCiAyMDE0LTAzLTEzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgY2FsbElkIHBhcmFtZXRlciBmcm9tIGV2YWx1
YXRlSW5XZWJJbnNwZWN0b3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJT
YWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaAkocmV2aXNpb24gMTY1
NTIxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2Fs
bGJhY2tJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjIgKzMxLDM3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjayBmaW5hbCA6IHB1
YmxpYyBKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2sgeworY2xhc3MgV2ViU2FmZUZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgSlNDOjpGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxXZWJTYWZlR0NBY3Rpdml0eUNh
bGxiYWNrPiBjcmVhdGUoSlNDOjpIZWFwKiBoZWFwKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGUoSlNDOjpIZWFwKiBoZWFwKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNr
KGhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTYWZlRnVsbEdDQWN0aXZp
dHlDYWxsYmFjayhoZWFwKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2ViU2FmZUdDQWN0aXZp
dHlDYWxsYmFjaygpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwgfldlYlNhZmVGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViU2FmZUdDQWN0
aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCi0gICAgICAgIDogSlNDOjpEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1bkxvb3AoKSkKKyAgICBXZWJTYWZlRnVs
bEdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCisgICAgICAgIDogSlNDOjpGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1bkxvb3AoKSkKICAgICB7CiAgICAg
fQogfTsKIAorY2xhc3MgV2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgZmluYWwgOiBwdWJs
aWMgSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SGVhcCog
aGVhcCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU2FmZUVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2soaGVhcCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfldlYlNhZmVFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CisKK3ByaXZhdGU6CisgICAgV2ViU2Fm
ZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSlNDOjpIZWFwKiBoZWFwKQorICAgICAgICA6IEpTQzo6
RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBXZWJUaHJlYWRSdW5Mb29wKCkpCisgICAgewor
ICAgIH0KK307CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBXZWJTYWZlR0NB
Y3Rpdml0eUNhbGxiYWNrSU9TX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227087</attachid>
            <date>2014-03-18 12:29:01 -0700</date>
            <delta_ts>2014-03-18 14:26:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318122751.patch</filename>
            <type>text/plain</type>
            <size>52133</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKQoreworfQor
Cit2b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCit7CisgICAgbV92
bS0+aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKK30KKworZG91YmxlIEVkZW5HQ0FjdGl2
aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCit7CisgICAgcmV0dXJuIG1fdm0tPmhlYXAubGFz
dEVkZW5HQ0xlbmd0aCgpOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6ZGVh
dGhSYXRlKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7CisgICAgc2l6ZV90IHNp
emVCZWZvcmUgPSBoZWFwLT5zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgc2l6
ZV90IHNpemVBZnRlciA9IGhlYXAtPnNpemVBZnRlckxhc3RFZGVuQ29sbGVjdGlvbigpOworICAg
IGlmICghc2l6ZUJlZm9yZSkKKyAgICAgICAgcmV0dXJuIDEuMDsKKyAgICByZXR1cm4gZG91Ymxl
KHNpemVCZWZvcmUgLSBzaXplQWZ0ZXIpIC8gZG91YmxlKHNpemVCZWZvcmUpOworfQorCitkb3Vi
bGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6Z2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKQorewor
ICAgIHJldHVybiBzdGQ6Om1pbigoc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgLyBNQikgKiBP
cHRpb25zOjpwZXJjZW50Q1BVUGVyTUJGb3JFZGVuVGltZXIoKSwgT3B0aW9uczo6Y29sbGVjdGlv
blRpbWVyTWF4UGVyY2VudENQVSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0
aXZpdHlDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrX2gKKworI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0Fj
dGl2aXR5Q2FsbGJhY2sgeworcHVibGljOgorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVh
cCopOworCisgICAgdmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpIG92ZXJyaWRlOworCitwcm90
ZWN0ZWQ6CisgICAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCkKKyAgICAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgcnVuTG9vcCkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlkZTsKK307CisKK2lubGlu
ZSBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVh
dGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK3sKKyAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1Rp
bWVyID8gYWRvcHRSZWYobmV3IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJWTS5oIgorCisjaWYgIVBM
QVRGT1JNKElPUykKK2NvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0ID0gMC4xOyAvLyBUaW1lIGlu
IHNlY29uZHMgdG8gYWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0byBpdGVyYXRlIG92ZXIgYWxs
IGJsb2NrcyB0byBzZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0LgorI2VuZGlmCisKK25hbWVz
cGFjZSBKU0MgeworCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKK3sKK30KKwor
dm9pZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworICAgIEhlYXAq
IGhlYXAgPSAmbV92bS0+aGVhcDsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgZG91YmxlIHN0
YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYgKGhl
YXAtPmlzUGFnZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKKyAgICAgICAgY2Fu
Y2VsKCk7CisgICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEZ1bGxHQ0xlbmd0aChwYWdpbmdUaW1l
T3V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgbV92bS0+aGVhcC5j
b2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s6Omxhc3RHQ0xlbmd0aCgpCit7CisgICAgcmV0dXJuIG1fdm0tPmhlYXAubGFzdEZ1bGxHQ0xl
bmd0aCgpOworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKCkK
K3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7CisgICAgc2l6ZV90IHNpemVCZWZvcmUg
PSBoZWFwLT5zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0aW9uKCk7CisgICAgc2l6ZV90IHNpemVB
ZnRlciA9IGhlYXAtPnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpOworICAgIGlmICghc2l6
ZUJlZm9yZSkKKyAgICAgICAgcmV0dXJuIDEuMDsKKyAgICByZXR1cm4gZG91YmxlKHNpemVCZWZv
cmUgLSBzaXplQWZ0ZXIpIC8gZG91YmxlKHNpemVCZWZvcmUpOworfQorCitkb3VibGUgRnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6Z2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKQoreworICAgIHJldHVy
biBzdGQ6Om1pbigoc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgLyBNQikgKiBPcHRpb25zOjpw
ZXJjZW50Q1BVUGVyTUJGb3JGdWxsVGltZXIoKSwgT3B0aW9uczo6Y29sbGVjdGlvblRpbWVyTWF4
UGVyY2VudENQVSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrX2gKKworI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2Fs
bGJhY2sgeworcHVibGljOgorICAgIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOworCisg
ICAgdmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6Cisg
ICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9v
cCkKKyAgICAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgcnVuTG9vcCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlkZTsKK307CisKK2lubGluZSBQYXNzUmVm
UHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGlt
ZXIoSGVhcCogaGVhcCkKK3sKKyAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRv
cHRSZWYobmV3IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMzkgKzQ3LDMwIEBA
IGJvb2wgR0NBY3Rpdml0eUNhbGxiYWNrOjpzX3Nob3VsZENyZWF0ZUcKIAogI2lmIFVTRShDRikg
fHwgUExBVEZPUk0oRUZMKQogCi1jb25zdCBkb3VibGUgZ2NUaW1lU2xpY2VQZXJNQiA9IDAuMDE7
IC8vIFBlcmNlbnRhZ2Ugb2YgQ1BVIHRpbWUgd2Ugd2lsbCBzcGVuZCB0byByZWNsYWltIDEgTUIK
LWNvbnN0IGRvdWJsZSBtYXhHQ1RpbWVTbGljZSA9IDAuMDU7IC8vIFRoZSBtYXhpbXVtIGFtb3Vu
dCBvZiBDUFUgdGltZSB3ZSB3YW50IHRvIHVzZSBmb3Igb3Bwb3J0dW5pc3RpYyB0aW1lci10cmln
Z2VyZWQgY29sbGVjdGlvbnMuCiBjb25zdCBkb3VibGUgdGltZXJTbG9wID0gMi4wOyAvLyBGdWRn
ZSBmYWN0b3IgdG8gYXZvaWQgcGVyZm9ybWFuY2UgY29zdCBvZiByZXNldHRpbmcgdGltZXIuCiAK
LSNpZiAhUExBVEZPUk0oSU9TKQotY29uc3QgZG91YmxlIHBhZ2luZ1RpbWVPdXQgPSAwLjE7IC8v
IFRpbWUgaW4gc2Vjb25kcyB0byBhbGxvdyBvcHBvcnR1bmlzdGljIHRpbWVyIHRvIGl0ZXJhdGUg
b3ZlciBhbGwgYmxvY2tzIHRvIHNlZSBpZiB0aGUgSGVhcCBpcyBwYWdlZCBvdXQuCi0jZW5kaWYK
LQogI2lmICFVU0UoQ0YpCiBjb25zdCBkb3VibGUgaG91ciA9IDYwICogNjA7CiAjZW5kaWYKIAog
I2lmIFVTRShDRikKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2soSGVhcCogaGVhcCkKK0dDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwgQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpKQotICAgICwgbV9kZWxheShzX2RlY2FkZSkKIHsKIH0KIAotRGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBo
ZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKK0dDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQogICAgIDogR0NBY3Rp
dml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIHJ1bkxvb3ApCi0gICAgLCBtX2RlbGF5KHNfZGVjYWRl
KQogewogfQogI2VsaWYgUExBVEZPUk0oRUZMKQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorR0NBY3Rpdml0eUNhbGxiYWNr
OjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFj
ayhoZWFwLT52bSgpLCBXVEY6OmlzTWFpblRocmVhZCgpKQotICAgICwgbV9kZWxheShob3VyKQog
ewogfQogI2VuZGlmCiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkK
K3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQogewogICAgIEhlYXAqIGhlYXAgPSAm
bV92bS0+aGVhcDsKICAgICBpZiAoIWlzRW5hYmxlZCgpKQpAQCAtOTEsMjAgKzgyLDExIEBAIHZv
aWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotI2lmICFQTEFURk9STShJT1MpCi0gICAgZG91YmxlIHN0YXJ0VGltZSA9IFdURjo6
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgaWYgKGhlYXAtPmlzUGFnZWRPdXQo
c3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKLSAgICAgICAgaGVhcC0+YWN0aXZpdHlDYWxs
YmFjaygpLT5jYW5jZWwoKTsKLSAgICAgICAgaGVhcC0+aW5jcmVhc2VMYXN0R0NMZW5ndGgocGFn
aW5nVGltZU91dCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBoZWFwLT5n
Y1RpbWVyRGlkRmlyZSgpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBkb0NvbGxlY3Rpb24o
KTsKIH0KLSAgICAKKwogI2lmIFVTRShDRikKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6c2NoZWR1bGVUaW1lcihkb3VibGUgbmV3RGVsYXkpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFj
azo6c2NoZWR1bGVUaW1lcihkb3VibGUgbmV3RGVsYXkpCiB7CiAgICAgaWYgKG5ld0RlbGF5ICog
dGltZXJTbG9wID4gbV9kZWxheSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTEzLDEzICs5NSwxMyBA
QCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlCiAgICAgQ0ZSdW5Mb29w
VGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZSdW5Mb29wVGltZXJHZXROZXh0
RmlyZURhdGUobV90aW1lci5nZXQoKSkgLSBkZWx0YSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNh
bmNlbFRpbWVyKCkKIHsKICAgICBtX2RlbGF5ID0gc19kZWNhZGU7CiAgICAgQ0ZSdW5Mb29wVGlt
ZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50
KCkgKyBzX2RlY2FkZSk7CiB9CiAjZWxpZiBQTEFURk9STShFRkwpCi12b2lkIERlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQordm9pZCBHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQogewogICAgIGlm
IChuZXdEZWxheSAqIHRpbWVyU2xvcCA+IG1fZGVsYXkpCiAgICAgICAgIHJldHVybjsKQEAgLTEz
MSwxNCArMTEzLDE0IEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGUK
ICAgICBtX3RpbWVyID0gYWRkKG5ld0RlbGF5LCB0aGlzKTsKIH0KIAotdm9pZCBEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6
Y2FuY2VsVGltZXIoKQogewogICAgIG1fZGVsYXkgPSBob3VyOwogICAgIHN0b3AoKTsKIH0KICNl
bmRpZgogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVf
dCBieXRlcykKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QgYnl0
ZXMpCiB7CiAjaWYgUExBVEZPUk0oRUZMKQogICAgIGlmICghaXNFbmFibGVkKCkpCkBAIC0xNTEs
NDIgKzEzMyw0MSBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jCiAg
ICAgLy8gV2UgcHJldGVuZCBpdCdzIG9uZSBieXRlIHNvIHRoYXQgd2UgZG9uJ3QgaWdub3JlIHRo
aXMgYWxsb2NhdGlvbiBlbnRpcmVseS4KICAgICBpZiAoIWJ5dGVzKQogICAgICAgICBieXRlcyA9
IDE7Ci0gICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPigmbV92bS0+aGVhcCk7Ci0g
ICAgZG91YmxlIGdjVGltZVNsaWNlID0gc3RkOjptaW4oKHN0YXRpY19jYXN0PGRvdWJsZT4oYnl0
ZXMpIC8gTUIpICogZ2NUaW1lU2xpY2VQZXJNQiwgbWF4R0NUaW1lU2xpY2UpOwotICAgIGRvdWJs
ZSBuZXdEZWxheSA9IGhlYXAtPmxhc3RHQ0xlbmd0aCgpIC8gZ2NUaW1lU2xpY2U7CisgICAgZG91
YmxlIGJ5dGVzRXhwZWN0ZWRUb1JlY2xhaW0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAq
IGRlYXRoUmF0ZSgpOworICAgIGRvdWJsZSBuZXdEZWxheSA9IGxhc3RHQ0xlbmd0aCgpIC8gZ2NU
aW1lU2xpY2UoYnl0ZXNFeHBlY3RlZFRvUmVjbGFpbSk7CiAgICAgc2NoZWR1bGVUaW1lcihuZXdE
ZWxheSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3Qo
KQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKIHsKICAgICBjYW5jZWxU
aW1lcigpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCit2
b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKIHsKICAgICBjYW5jZWxUaW1lcigpOwog
fQogCiAjZWxzZQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxs
YmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCkpCiB7
CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKK3ZvaWQgR0NB
Y3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpk
aWRBbGxvY2F0ZShzaXplX3QpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkK
IHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQordm9pZCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCShyZXZpc2lvbiAxNjU4MjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNTYgKzQxLDU5IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBI
ZWFwOwogCi1jbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgSGVhcFRpbWVyIHsKK2Ns
YXNzIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBIZWFwVGltZXIsIHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxHQ0FjdGl2aXR5Q2FsbGJhY2s+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWxsb2NhdGUoc2l6ZV90KSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3QoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Y2FuY2VsKCkgeyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBj
cmVhdGVGdWxsVGltZXIoSGVhcCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gY3JlYXRlRWRlblRpbWVyKEhlYXAqKTsKKworICAgIEdDQWN0aXZpdHlDYWxsYmFj
ayhIZWFwKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCkgb3ZlcnJpZGU7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRpZEFs
bG9jYXRlKHNpemVfdCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCk7CisgICAgdmly
dHVhbCB2b2lkIGNhbmNlbCgpOwogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJs
ZWQgPSBlbmFibGVkOyB9CiAKICAgICBzdGF0aWMgYm9vbCBzX3Nob3VsZENyZWF0ZUdDVGltZXI7
CiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXN0R0NMZW5ndGgoKSA9IDA7Cisg
ICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKSA9IDA7CisgICAgdmly
dHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgPSAwOworCiAjaWYgVVNFKENGKQogICAgIEdDQWN0aXZp
dHlDYWxsYmFjayhWTSogdm0sIENGUnVuTG9vcFJlZiBydW5Mb29wKQogICAgICAgICA6IEhlYXBU
aW1lcih2bSwgcnVuTG9vcCkKICAgICAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKKyAgICAgICAgLCBt
X2RlbGF5KHNfZGVjYWRlKQogICAgIHsKICAgICB9CiAjZWxpZiBQTEFURk9STShFRkwpCiAgICAg
R0NBY3Rpdml0eUNhbGxiYWNrKFZNKiB2bSwgYm9vbCBmbGFnKQogICAgICAgICA6IEhlYXBUaW1l
cih2bSkKICAgICAgICAgLCBtX2VuYWJsZWQoZmxhZykKKyAgICAgICAgLCBtX2RlbGF5KHNfZGVj
YWRlKQogICAgIHsKICAgICB9CiAjZWxzZQogICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0p
CiAgICAgICAgIDogSGVhcFRpbWVyKHZtKQogICAgICAgICAsIG1fZW5hYmxlZCh0cnVlKQorICAg
ICAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiAgICAgewogICAgIH0KICNlbmRpZgogCiAgICAgYm9v
bCBtX2VuYWJsZWQ7Ci19OwotCi1jbGFzcyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrIDogcHVi
bGljIEdDQWN0aXZpdHlDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEhlYXAqKTsKLQotICAgIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVh
bCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgb3ZlcnJpZGU7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwotCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOwogCiAjaWYgVVNFKENGKQogcHJv
dGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2so
SGVhcCosIENGUnVuTG9vcFJlZik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNh
bGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwogI2VuZGlmCiAjaWYgVVNFKENGKSB8fCBQTEFU
Rk9STShFRkwpCiBwcm90ZWN0ZWQ6CkBAIC0xMDIsMTEgKzEwNSw2IEBAIHByaXZhdGU6CiAjZW5k
aWYKIH07CiAKLWlubGluZSBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+IERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZShIZWFwKiBoZWFwKQotewotICAgIHJldHVy
biBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/IGFkb3B0UHRyKG5l
dyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7Ci19Ci0KLX0KK30g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkNvcHlW
aXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVs
YXllZFJlbGVhc2VTY29wZS5oIgorI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCIK
KyNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0
eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNTMsOCArMjU1LDEyIEBAIEhl
YXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcmFtU2l6ZShyYW1T
aXplKCkpCiAgICAgLCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlwZSwg
bV9yYW1TaXplKSkKICAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKKyAgICAsIG1fc2l6
ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KDApCisgICAgLCBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxl
Y3QoMCkKKyAgICAsIG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0KDApCisgICAgLCBtX3NpemVC
ZWZvcmVMYXN0RWRlbkNvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUo
MCkKLSAgICAsIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUoMCkKKyAgICAsIG1fYnl0ZXNBYmFu
ZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCgwKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5
dGVzUGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAg
ICAsIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSkKQEAgLTI3NCw5ICsyODAsMTUgQEAg
SGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pc1NhZmVUb0Nv
bGxlY3QoZmFsc2UpCiAgICAgLCBtX3dyaXRlQmFycmllckJ1ZmZlcigyNTYpCiAgICAgLCBtX3Zt
KHZtKQotICAgICwgbV9sYXN0R0NMZW5ndGgoMCkKKyAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgw
KQorICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RDb2RlRGlzY2FyZFRp
bWUoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKLSAgICAsIG1fYWN0aXZpdHlD
YWxsYmFjayhEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCisgICAgLCBt
X2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVy
KHRoaXMpKQorI2lmIEVOQUJMRShHR0MpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdD
QWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRWRlblRpbWVyKHRoaXMpKQorI2Vsc2UKKyAgICAsIG1f
ZWRlbkFjdGl2aXR5Q2FsbGJhY2sobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKKyNlbmRpZgogICAg
ICwgbV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9k
ZWZlcnJhbERlcHRoKDApCiB7CkBAIC0zMjMsNyArMzM1LDcgQEAgdm9pZCBIZWFwOjpyZXBvcnRB
YmFuZG9uZWRPYmplY3RHcmFwaCgpCiB7CiAgICAgLy8gT3VyIGNsaWVudHMgZG9uJ3Qga25vdyBl
eGFjdGx5IGhvdyBtdWNoIG1lbW9yeSB0aGV5CiAgICAgLy8gYXJlIGFiYW5kb25pbmcgc28gd2Ug
anVzdCBndWVzcyBmb3IgdGhlbS4KLSAgICBkb3VibGUgYWJhbmRvbmVkQnl0ZXMgPSAwLjEwICog
bV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsKKyAgICBkb3VibGUgYWJhbmRvbmVkQnl0ZXMgPSAwLjEg
KiBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogCiAgICAgLy8gV2Ugd2FudCB0byBhY2NlbGVyYXRl
IHRoZSBuZXh0IGNvbGxlY3Rpb24uIEJlY2F1c2UgbWVtb3J5IGhhcyBqdXN0IAogICAgIC8vIGJl
ZW4gYWJhbmRvbmVkLCB0aGUgbmV4dCBjb2xsZWN0aW9uIGhhcyB0aGUgcG90ZW50aWFsIHRvIApA
QCAtMzM0LDkgKzM0NiwxMSBAQCB2b2lkIEhlYXA6OnJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBo
KCkKIAogdm9pZCBIZWFwOjpkaWRBYmFuZG9uKHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAobV9h
Y3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRl
KG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKTsK
LSAgICBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlICs9IGJ5dGVzOworICAgIGlmIChtX2Z1bGxB
Y3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRpZEFs
bG9jYXRlKAorICAgICAgICAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAtIG1fc2l6ZUFmdGVy
TGFzdEZ1bGxDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFu
ZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCk7CisgICAgfQorICAgIG1fYnl0ZXNBYmFuZG9uZWRT
aW5jZUxhc3RGdWxsQ29sbGVjdCArPSBieXRlczsKIH0KIAogdm9pZCBIZWFwOjpwcm90ZWN0KEpT
VmFsdWUgaykKQEAgLTg0Niw4ICs4NjAsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdl
KCkKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOwotICAgIGNvbGxlY3QoKTsKKyAgICBjb2xs
ZWN0KEZ1bGxDb2xsZWN0aW9uKTsKIAogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJHYXJiYWdlIENvbGxlY3Rpb246IFN3ZWVwaW5nIik7CiAgICAgRGVsYXllZFJlbGVhc2VTY29w
ZSBkZWxheWVkUmVsZWFzZVNjb3BlKG1fb2JqZWN0U3BhY2UpOwpAQCAtODU3LDcgKzg3MCw3IEBA
IHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogCiBzdGF0aWMgZG91YmxlIG1pbnV0ZSA9
IDYwLjA7CiAKLXZvaWQgSGVhcDo6Y29sbGVjdCgpCit2b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9w
ZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICNpZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dHSU5H
KQogICAgIGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRpbmcgY29sbGVjdGlvbi5cbiIpOwpAQCAtODgw
LDcgKzg5Myw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9v
cGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKIAogICAgIHN1c3BlbmRDb21waWxl
clRocmVhZHMoKTsKLSAgICB3aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisgICAgd2lsbFN0YXJ0Q29s
bGVjdGlvbihjb2xsZWN0aW9uVHlwZSk7CiAKICAgICBkb3VibGUgZ2NTdGFydFRpbWUgPSBXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCkBAIC05MjcsMTAgKzk0MCwxMCBAQCB2
b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgSGVh
cDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigpCit2b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24o
SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICAgICBHQ1BIQVNFKFN0YXJ0aW5nQ29s
bGVjdGlvbik7Ci0gICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oKSkgeworICAgIGlmIChz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKSkgewogICAgICAgICBtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPSBGdWxsQ29sbGVjdGlvbjsKICAgICAgICAgbV9zbG90VmlzaXRvci5j
bGVhck1hcmtTdGFjaygpOwogICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSBmYWxz
ZTsKQEAgLTk0MSwxMSArOTU0LDE5IEBAIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigp
CiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAgZGF0YUxvZygiRWRl
bkNvbGxlY3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09
IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENv
bGxlY3Rpb24pIHsKKyAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0ID0gbV9zaXpl
QWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgICAgIG1f
ZXh0cmFNZW1vcnlVc2FnZSA9IDA7CiAKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAg
ICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CisgICAgICAgIGlmIChtX2Z1
bGxBY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+
d2lsbENvbGxlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25J
blByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKTsKKyAgICAgICAgbV9zaXplQmVmb3JlTGFzdEVk
ZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlz
Q3ljbGU7CisgICAgfQorCisgICAgaWYgKG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2spCisgICAgICAg
IG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiB9CiAKIHZvaWQgSGVhcDo6
ZGVsZXRlT2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpCkBAIC0xMDQzLDIwICsxMDY0LDI2IEBA
IHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAgIC8vIGZpeGVkIG1p
bmltdW0uCiAgICAgICAgIG1fbWF4SGVhcFNpemUgPSBtYXgobWluSGVhcFNpemUobV9oZWFwVHlw
ZSwgbV9yYW1TaXplKSwgcHJvcG9ydGlvbmFsSGVhcFNpemUoY3VycmVudEhlYXBTaXplLCBtX3Jh
bVNpemUpKTsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50
SGVhcFNpemU7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0ID0gY3VycmVudEhl
YXBTaXplOworICAgICAgICBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3QgPSAw
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9zaXpl
QWZ0ZXJMYXN0Q29sbGVjdCk7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXpl
IC0gY3VycmVudEhlYXBTaXplOworICAgICAgICBtX3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdCA9
IGN1cnJlbnRIZWFwU2l6ZTsKICAgICAgICAgZG91YmxlIGVkZW5Ub09sZEdlbmVyYXRpb25SYXRp
byA9IChkb3VibGUpbV9tYXhFZGVuU2l6ZSAvIChkb3VibGUpbV9tYXhIZWFwU2l6ZTsKICAgICAg
ICAgZG91YmxlIG1pbkVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA9IDEuMCAvIDMuMDsKICAgICAg
ICAgaWYgKGVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA8IG1pbkVkZW5Ub09sZEdlbmVyYXRpb25S
YXRpbykKICAgICAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHRydWU7CiAgICAg
ICAgIG1fbWF4SGVhcFNpemUgKz0gY3VycmVudEhlYXBTaXplIC0gbV9zaXplQWZ0ZXJMYXN0Q29s
bGVjdDsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50SGVh
cFNpemU7CisgICAgICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAgICAg
ICBBU1NFUlQoY3VycmVudEhlYXBTaXplID49IG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KTsK
KyAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKGN1cnJlbnRI
ZWFwU2l6ZSAtIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CiAgICAgbV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA9IDA7Ci0gICAgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNs
ZSA9IDA7CiAKICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgZGF0YUxvZyhjdXJy
ZW50SGVhcFNpemUgLyAxMDI0LCAiIGtiLCAiKTsKQEAgLTEwNjYsNyArMTA5MywxMCBAQCB2b2lk
IEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiB7CiAgICAgR0NQSEFTRShGaW5p
c2hpbmdDb2xsZWN0aW9uKTsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBtX2xhc3RHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdj
U3RhcnRUaW1lOworICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rp
b24pCisgICAgICAgIG1fbGFzdEZ1bGxHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1l
OworICAgIGVsc2UKKyAgICAgICAgbV9sYXN0RWRlbkdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NT
dGFydFRpbWU7CiAKICAgICBpZiAoT3B0aW9uczo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpCiAgICAg
ICAgIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShnY1N0YXJ0VGltZSwgZ2NFbmRU
aW1lKTsKQEAgLTExMDIsMTQgKzExMzIsMjQgQEAgdm9pZCBIZWFwOjptYXJrRGVhZE9iamVjdHMo
KQogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPE1hcmtPYmplY3Q+KGl0ZXJhdGlv
blNjb3BlKTsKIH0KIAotdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8
R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQordm9pZCBIZWFwOjpzZXRGdWxs
QWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2
aXR5Q2FsbGJhY2spCiB7Ci0gICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxsYmFj
azsKKyAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxsYmFjazsKIH0KIAot
R0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFwOjphY3Rpdml0eUNhbGxiYWNrKCkKK3ZvaWQgSGVhcDo6
c2V0RWRlbkFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
PiBhY3Rpdml0eUNhbGxiYWNrKQogewotICAgIHJldHVybiBtX2FjdGl2aXR5Q2FsbGJhY2suZ2V0
KCk7CisgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2FsbGJhY2s7Cit9CisK
K0dDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6ZnVsbEFjdGl2aXR5Q2FsbGJhY2soKQoreworICAg
IHJldHVybiBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLmdldCgpOworfQorCitHQ0FjdGl2aXR5Q2Fs
bGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKK3sKKyAgICByZXR1cm4gbV9lZGVu
QWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRJbmNyZW1lbnRhbFN3
ZWVwZXIoUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IHN3ZWVwZXIpCkBAIC0xMTI0LDE0
ICsxMTY0LDE2IEBAIEluY3JlbWVudGFsU3dlZXBlciogSGVhcDo6c3dlZXBlcigpCiAKIHZvaWQg
SGVhcDo6c2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCBlbmFibGUpCiB7Ci0g
ICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrLT5z
ZXRFbmFibGVkKGVuYWJsZSk7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCisgICAg
ICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJsZWQoZW5hYmxlKTsKKyAgICBpZiAo
bV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+
c2V0RW5hYmxlZChlbmFibGUpOwogfQogCiB2b2lkIEhlYXA6OmRpZEFsbG9jYXRlKHNpemVfdCBi
eXRlcykKIHsKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5
Q2FsbGJhY2stPmRpZEFsbG9jYXRlKG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVz
QWJhbmRvbmVkVGhpc0N5Y2xlKTsKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAg
ICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRl
ZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCk7CiAgICAg
bV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArPSBieXRlczsKIH0KIApAQCAtMTIxNCwxMSArMTI1
NiwyNyBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsCiAjZW5kaWYK
IH0KIAotYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkgY29uc3QKK2Jvb2wgSGVh
cDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxlY3Rp
b25UeXBlKSBjb25zdAogewogI2lmIEVOQUJMRShHR0MpCi0gICAgcmV0dXJuIE9wdGlvbnM6OmFs
d2F5c0RvRnVsbENvbGxlY3Rpb24oKSB8fCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247CisgICAg
aWYgKE9wdGlvbnM6OmFsd2F5c0RvRnVsbENvbGxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7CisgICAgY2FzZSBF
ZGVuQ29sbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgRnVsbENvbGxl
Y3Rpb246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKKyAg
ICAgICAgcmV0dXJuIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgQ29waWVkU3BhY2U7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIEV4ZWN1
dGFibGVCYXNlOworICAgIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CisgICAgY2xhc3Mg
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiAg
ICAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9j
azsKQEAgLTExOCw4ICsxMjAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtlZFNw
YWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICAgICAgTWFj
aGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4gbV9tYWNoaW5lVGhyZWFkczsg
fQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZp
dHlDYWxsYmFjaygpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFjdGl2aXR5
Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBmdWxsQWN0aXZpdHlDYWxsYmFjaygpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGVkZW5BY3Rpdml0
eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RnVsbEFjdGl2
aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RWRlbkFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0
cjxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCk7CiAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSW5jcmVtZW50YWxTd2VlcGVyKiBzd2VlcGVyKCk7CkBAIC0xNDgsOSAr
MTUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgICAgICBib29sIHNob3VsZENvbGxlY3QoKTsKLSAg
ICAgICAgdm9pZCBnY1RpbWVyRGlkRmlyZSgpIHsgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0g
dHJ1ZTsgfQotICAgICAgICB2b2lkIHNldFNob3VsZERvRnVsbENvbGxlY3Rpb24oYm9vbCBzaG91
bGREb0Z1bGxDb2xsZWN0aW9uKSB7IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHNob3VsZERv
RnVsbENvbGxlY3Rpb247IH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0
KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CiAgICAgICAgIGJvb2wgY29sbGVjdElm
TmVjZXNzYXJ5T3JEZWZlcigpOyAvLyBSZXR1cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxlY3QuCiAK
ICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwpAQCAtMTg2
LDggKzE4OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hJdGVy
YXRpbmcoKTsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hT
ZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAotICAgICAgICBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgeyBy
ZXR1cm4gbV9sYXN0R0NMZW5ndGg7IH0KLSAgICAgICAgdm9pZCBpbmNyZWFzZUxhc3RHQ0xlbmd0
aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEdDTGVuZ3RoICs9IGFtb3VudDsgfQorICAgICAgICBk
b3VibGUgbGFzdEZ1bGxHQ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEZ1bGxHQ0xlbmd0
aDsgfQorICAgICAgICBkb3VibGUgbGFzdEVkZW5HQ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdEVkZW5HQ0xlbmd0aDsgfQorICAgICAgICB2b2lkIGluY3JlYXNlTGFzdEZ1bGxHQ0xlbmd0
aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEZ1bGxHQ0xlbmd0aCArPSBhbW91bnQ7IH0KKworICAg
ICAgICBzaXplX3Qgc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6ZUFmdGVy
TGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0RWRlbkNv
bGxlY3Q7IH0KKyAgICAgICAgc2l6ZV90IHNpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7IH0KKyAgICAgICAgc2l6
ZV90IHNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUFm
dGVyTGFzdEZ1bGxDb2xsZWN0OyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
ZWxldGVBbGxDb21waWxlZENvZGUoKTsKICAgICAgICAgdm9pZCBkZWxldGVBbGxVbmxpbmtlZEZ1
bmN0aW9uQ29kZSgpOwpAQCAtMjUyLDcgKzI2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNp
emVfdCk7CiAKICAgICAgICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAgICAg
IHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbigpOworICAgICAgICB2b2lkIHdpbGxTdGFydENvbGxl
Y3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSk7CiAgICAgICAgIHZvaWQgZGVsZXRl
T2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpOwogICAgICAgICB2b2lkIGZsdXNoT2xkU3RydWN0
dXJlSURUYWJsZXMoKTsKICAgICAgICAgdm9pZCBmbHVzaFdyaXRlQmFycmllckJ1ZmZlcigpOwpA
QCAtMjk2LDcgKzMwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHpvbWJpZnlE
ZWFkT2JqZWN0cygpOwogICAgICAgICB2b2lkIG1hcmtEZWFkT2JqZWN0cygpOwogCi0gICAgICAg
IGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbigpIGNvbnN0OworICAgICAgICBib29sIHNob3Vs
ZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSkg
Y29uc3Q7CiAgICAgICAgIHNpemVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAKICAgICAgICAgSlNT
dGFjayYgc3RhY2soKTsKQEAgLTMwOSw5ICszMTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX21pbkJ5
dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0OworICAg
ICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBt
X3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxh
c3RFZGVuQ29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVj
dDsKIAogICAgICAgICBzaXplX3QgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKLSAgICAgICAg
c2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGU7CisgICAgICAgIHNpemVfdCBtX2J5dGVz
QWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3Q7CiAgICAgICAgIHNpemVfdCBtX21heEVkZW5T
aXplOwogICAgICAgICBzaXplX3QgbV9tYXhIZWFwU2l6ZTsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZERvRnVsbENvbGxlY3Rpb247CkBAIC0zNDksMTIgKzM2MSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgV3JpdGVCYXJyaWVyQnVmZmVyIG1fd3JpdGVCYXJyaWVyQnVmZmVyOwogCiAgICAg
ICAgIFZNKiBtX3ZtOwotICAgICAgICBkb3VibGUgbV9sYXN0R0NMZW5ndGg7CisgICAgICAgIGRv
dWJsZSBtX2xhc3RGdWxsR0NMZW5ndGg7CisgICAgICAgIGRvdWJsZSBtX2xhc3RFZGVuR0NMZW5n
dGg7CiAgICAgICAgIGRvdWJsZSBtX2xhc3RDb2RlRGlzY2FyZFRpbWU7CiAKICAgICAgICAgRG91
Ymx5TGlua2VkTGlzdDxFeGVjdXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAgICAgICAgIAot
ICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7Cisg
ICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7
CisgICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZWRlbkFjdGl2aXR5Q2FsbGJh
Y2s7CiAgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKICAgICAg
ICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja1NuYXBzaG90OwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDE2
NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBI
ZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIEZ1bGxDb2xsZWN0aW9uLCBF
ZGVuQ29sbGVjdGlvbiB9OworZW51bSBIZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFsbG9j
YXRpb24sIEZ1bGxDb2xsZWN0aW9uLCBFZGVuQ29sbGVjdGlvbiwgQW55Q29sbGVjdGlvbiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMs
NyArMjMzLDcgQEAgdm9pZCBIZWFwU3RhdGlzdGljczo6c2hvd09iamVjdFN0YXRpc3RpYwogICAg
IGRhdGFMb2dGKCJcbj09PSBIZWFwIFN0YXRpc3RpY3M6ID09PVxuIik7CiAgICAgZGF0YUxvZ0Yo
InNpemU6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFwLT5tX3NpemVBZnRlckxhc3RD
b2xsZWN0IC8gS0IpKTsKICAgICBkYXRhTG9nRigiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNf
Y2FzdDxsb25nPihoZWFwLT5jYXBhY2l0eSgpIC8gS0IpKTsKLSAgICBkYXRhTG9nRigicGF1c2Ug
dGltZTogJWxmbXNcblxuIiwgaGVhcC0+bV9sYXN0R0NMZW5ndGgpOworICAgIGRhdGFMb2dGKCJw
YXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBoZWFwLT5tX2xhc3RGdWxsR0NMZW5ndGgpOwogCiAgICAg
U3RvcmFnZVN0YXRpc3RpY3Mgc3RvcmFnZVN0YXRpc3RpY3M7CiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw4ICs4NSwxMCBAQCB2b2lkIEhlYXBUaW1lcjo6dGltZXJEaWRGaXJlKENGUnVuTG9vcFRp
CiAgICAgfQogCiAgICAgSGVhcFRpbWVyKiBoZWFwVGltZXIgPSAwOwotICAgIGlmICh2bS0+aGVh
cC5hY3Rpdml0eUNhbGxiYWNrKCkgJiYgdm0tPmhlYXAuYWN0aXZpdHlDYWxsYmFjaygpLT5tX3Rp
bWVyLmdldCgpID09IHRpbWVyKQotICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5hY3Rpdml0
eUNhbGxiYWNrKCk7CisgICAgaWYgKHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkgJiYg
dm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+bV90aW1lci5nZXQoKSA9PSB0aW1lcikK
KyAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKTsKKyAg
ICBlbHNlIGlmICh2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpICYmIHZtLT5oZWFwLmVk
ZW5BY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIpCisgICAgICAgIGhl
YXBUaW1lciA9IHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCk7CiAgICAgZWxzZSBpZiAo
dm0tPmhlYXAuc3dlZXBlcigpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQogICAgICAgICBoZWFw
VGltZXIgPSB2bS0+aGVhcC5zd2VlcGVyKCk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiAr
MjQyLDEwIEBAIHR5cGVkZWYgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2U7CiAgICAgdihkb3VibGUs
IG1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24sIDAuOSkgXAogICAgIHYoZG91YmxlLCBtaW5NYXJr
ZWRCbG9ja1V0aWxpemF0aW9uLCAwLjkpIFwKICAgICBcCisgICAgdihkb3VibGUsIHBlcmNlbnRD
UFVQZXJNQkZvckZ1bGxUaW1lciwgMC4wMDAzMTI1KSBcCisgICAgdihkb3VibGUsIHBlcmNlbnRD
UFVQZXJNQkZvckVkZW5UaW1lciwgMC4wMDI1KSBcCisgICAgdihkb3VibGUsIGNvbGxlY3Rpb25U
aW1lck1heFBlcmNlbnRDUFUsIDAuMDUpIFwKKyAgICBcCiAgICAgdihib29sLCBmb3JjZVdlYWtS
YW5kb21TZWVkLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGZvcmNlZFdlYWtSYW5kb21TZWVk
LCAwKSBcCiAgICAgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQt
MDMtMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBHQyB0aW1lciBzaG91bGQgaW50ZWxsaWdlbnRseSBjaG9vc2UgYmV0d2VlbiBFZGVuQ29sbGVj
dGlvbnMgYW5kIEZ1bGxDb2xsZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIFVwZGF0ZWQgV2ViU2Fm
ZUdDQWN0aXZpdHlDYWxsYmFja3MgZm9yIGJvdGggRWRlbiBhbmQgRnVsbCB0aW1lcnMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oOgorCiAy
MDE0LTAzLTE4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY1ODE1LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFj
a0lPUy5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNiAr
MjcsNDIgQEAKICNkZWZpbmUgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPU19oCiAKICNpbmNs
dWRlICJXZWJDb3JlVGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0
eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2su
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJTYWZlR0NBY3Rpdml0eUNhbGxi
YWNrIGZpbmFsIDogcHVibGljIEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayB7CitjbGFz
cyBXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayBmaW5hbCA6IHB1YmxpYyBKU0M6OkZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNh
ZmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkhlYXAqIGhlYXApCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6Okhl
YXAqIGhlYXApCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNhZmVHQ0Fj
dGl2aXR5Q2FsbGJhY2soaGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNh
ZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5X
ZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB+V2Vi
U2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KIAogcHJpdmF0ZToKLSAg
ICBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKLSAgICAgICAgOiBK
U0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgpKQor
ICAgIFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKKyAgICAg
ICAgOiBKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgp
KQogICAgIHsKICAgICB9CiB9OwogCitjbGFzcyBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ayBmaW5hbCA6IHB1YmxpYyBKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVh
dGUoSlNDOjpIZWFwKiBoZWFwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBX
ZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+V2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCisg
ICAgICAgIDogSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1bkxv
b3AoKSkKKyAgICB7CisgICAgfQorfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1NfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227107</attachid>
            <date>2014-03-18 14:26:09 -0700</date>
            <delta_ts>2014-03-18 14:49:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318142455.patch</filename>
            <type>text/plain</type>
            <size>52096</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKQoreworfQor
Cit2b2lkIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCit7CisgICAgbV92
bS0+aGVhcC5jb2xsZWN0KEVkZW5Db2xsZWN0aW9uKTsKK30KKworZG91YmxlIEVkZW5HQ0FjdGl2
aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCit7CisgICAgcmV0dXJuIG1fdm0tPmhlYXAubGFz
dEVkZW5HQ0xlbmd0aCgpOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6ZGVh
dGhSYXRlKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7CisgICAgc2l6ZV90IHNp
emVCZWZvcmUgPSBoZWFwLT5zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgc2l6
ZV90IHNpemVBZnRlciA9IGhlYXAtPnNpemVBZnRlckxhc3RFZGVuQ29sbGVjdGlvbigpOworICAg
IGlmICghc2l6ZUJlZm9yZSkKKyAgICAgICAgcmV0dXJuIDEuMDsKKyAgICByZXR1cm4gZG91Ymxl
KHNpemVCZWZvcmUgLSBzaXplQWZ0ZXIpIC8gZG91YmxlKHNpemVCZWZvcmUpOworfQorCitkb3Vi
bGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6Z2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKQorewor
ICAgIHJldHVybiBzdGQ6Om1pbigoc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgLyBNQikgKiBP
cHRpb25zOjpwZXJjZW50Q1BVUGVyTUJGb3JFZGVuVGltZXIoKSwgT3B0aW9uczo6Y29sbGVjdGlv
blRpbWVyTWF4UGVyY2VudENQVSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ay5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0
aXZpdHlDYWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrX2gKKworI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0Fj
dGl2aXR5Q2FsbGJhY2sgeworcHVibGljOgorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVh
cCopOworCisgICAgdmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpIG92ZXJyaWRlOworCitwcm90
ZWN0ZWQ6CisgICAgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxvb3BS
ZWYgcnVuTG9vcCkKKyAgICAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgcnVuTG9vcCkK
KyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlkZTsKK307CisKK2lubGlu
ZSBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVh
dGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK3sKKyAgICByZXR1cm4gc19zaG91bGRDcmVhdGVHQ1Rp
bWVyID8gYWRvcHRSZWYobmV3IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0
cjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJWTS5oIgorCisjaWYgIVBM
QVRGT1JNKElPUykKK2NvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0ID0gMC4xOyAvLyBUaW1lIGlu
IHNlY29uZHMgdG8gYWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0byBpdGVyYXRlIG92ZXIgYWxs
IGJsb2NrcyB0byBzZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0LgorI2VuZGlmCisKK25hbWVz
cGFjZSBKU0MgeworCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKK3sKK30KKwor
dm9pZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworICAgIEhlYXAq
IGhlYXAgPSAmbV92bS0+aGVhcDsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgZG91YmxlIHN0
YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYgKGhl
YXAtPmlzUGFnZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKKyAgICAgICAgY2Fu
Y2VsKCk7CisgICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEZ1bGxHQ0xlbmd0aChwYWdpbmdUaW1l
T3V0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaGVhcC0+Y29sbGVj
dChGdWxsQ29sbGVjdGlvbik7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjps
YXN0R0NMZW5ndGgoKQoreworICAgIHJldHVybiBtX3ZtLT5oZWFwLmxhc3RGdWxsR0NMZW5ndGgo
KTsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7Cisg
ICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOworICAgIHNpemVfdCBzaXplQmVmb3JlID0gaGVh
cC0+c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbigpOworICAgIHNpemVfdCBzaXplQWZ0ZXIg
PSBoZWFwLT5zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKTsKKyAgICBpZiAoIXNpemVCZWZv
cmUpCisgICAgICAgIHJldHVybiAxLjA7CisgICAgcmV0dXJuIGRvdWJsZShzaXplQmVmb3JlIC0g
c2l6ZUFmdGVyKSAvIGRvdWJsZShzaXplQmVmb3JlKTsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2s6OmdjVGltZVNsaWNlKHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gc3Rk
OjptaW4oKHN0YXRpY19jYXN0PGRvdWJsZT4oYnl0ZXMpIC8gTUIpICogT3B0aW9uczo6cGVyY2Vu
dENQVVBlck1CRm9yRnVsbFRpbWVyKCksIE9wdGlvbnM6OmNvbGxlY3Rpb25UaW1lck1heFBlcmNl
bnRDUFUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrX2gKKyNkZWZpbmUgRnVsbEdDQWN0aXZpdHlDYWxsYmFja19o
CisKKyNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNr
IHsKK3B1YmxpYzoKKyAgICBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKworICAgIHZp
cnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorICAgIEZ1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCisg
ICAgICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIHJ1bkxvb3ApCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgZG91YmxlIGxhc3RHQ0xlbmd0aCgpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBkb3VibGUgZGVhdGhSYXRlKCkgb3ZlcnJpZGU7Cit9OworCitpbmxpbmUgUGFzc1JlZlB0cjxH
Q0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKEhl
YXAqIGhlYXApCit7CisgICAgcmV0dXJuIHNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/IGFkb3B0UmVm
KG5ldyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRnVsbEdDQWN0aXZpdHlDYWxsYmFja19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHAJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0
aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDM5ICs0NywyNiBAQCBib29s
IEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRDcmVhdGVHCiAKICNpZiBVU0UoQ0YpIHx8IFBM
QVRGT1JNKEVGTCkKIAotY29uc3QgZG91YmxlIGdjVGltZVNsaWNlUGVyTUIgPSAwLjAxOyAvLyBQ
ZXJjZW50YWdlIG9mIENQVSB0aW1lIHdlIHdpbGwgc3BlbmQgdG8gcmVjbGFpbSAxIE1CCi1jb25z
dCBkb3VibGUgbWF4R0NUaW1lU2xpY2UgPSAwLjA1OyAvLyBUaGUgbWF4aW11bSBhbW91bnQgb2Yg
Q1BVIHRpbWUgd2Ugd2FudCB0byB1c2UgZm9yIG9wcG9ydHVuaXN0aWMgdGltZXItdHJpZ2dlcmVk
IGNvbGxlY3Rpb25zLgogY29uc3QgZG91YmxlIHRpbWVyU2xvcCA9IDIuMDsgLy8gRnVkZ2UgZmFj
dG9yIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGNvc3Qgb2YgcmVzZXR0aW5nIHRpbWVyLgogCi0jaWYg
IVBMQVRGT1JNKElPUykKLWNvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0ID0gMC4xOyAvLyBUaW1l
IGluIHNlY29uZHMgdG8gYWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0byBpdGVyYXRlIG92ZXIg
YWxsIGJsb2NrcyB0byBzZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0LgotI2VuZGlmCi0KLSNp
ZiAhVVNFKENGKQotY29uc3QgZG91YmxlIGhvdXIgPSA2MCAqIDYwOwotI2VuZGlmCi0KICNpZiBV
U0UoQ0YpCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhI
ZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIENGUnVuTG9v
cEdldEN1cnJlbnQoKSkKLSAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAKLURlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwg
Q0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxs
YmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEdDQWN0aXZpdHlD
YWxsYmFjayhoZWFwLT52bSgpLCBydW5Mb29wKQotICAgICwgbV9kZWxheShzX2RlY2FkZSkKIHsK
IH0KICNlbGlmIFBMQVRGT1JNKEVGTCkKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK0dDQWN0aXZpdHlDYWxsYmFjazo6R0NB
Y3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVh
cC0+dm0oKSwgV1RGOjppc01haW5UaHJlYWQoKSkKLSAgICAsIG1fZGVsYXkoaG91cikKIHsKIH0K
ICNlbmRpZgogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCit2b2lk
IEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKIHsKICAgICBIZWFwKiBoZWFwID0gJm1fdm0t
PmhlYXA7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSkKQEAgLTkxLDIwICs3OCwxMSBAQCB2b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIGlmIChoZWFwLT5pc1BhZ2VkT3V0KHN0YXJ0
VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7Ci0gICAgICAgIGhlYXAtPmFjdGl2aXR5Q2FsbGJhY2so
KS0+Y2FuY2VsKCk7Ci0gICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEdDTGVuZ3RoKHBhZ2luZ1Rp
bWVPdXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgaGVhcC0+Z2NUaW1l
ckRpZEZpcmUoKTsKLSAgICBoZWFwLT5jb2xsZWN0KCk7CisgICAgZG9Db2xsZWN0aW9uKCk7CiB9
Ci0gICAgCisKICNpZiBVU0UoQ0YpCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNj
aGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNj
aGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQogewogICAgIGlmIChuZXdEZWxheSAqIHRpbWVy
U2xvcCA+IG1fZGVsYXkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMywxMyArOTEsMTMgQEAgdm9p
ZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZQogICAgIENGUnVuTG9vcFRpbWVy
U2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGUnVuTG9vcFRpbWVyR2V0TmV4dEZpcmVE
YXRlKG1fdGltZXIuZ2V0KCkpIC0gZGVsdGEpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxU
aW1lcigpCiB7CiAgICAgbV9kZWxheSA9IHNfZGVjYWRlOwogICAgIENGUnVuTG9vcFRpbWVyU2V0
TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsg
c19kZWNhZGUpOwogfQogI2VsaWYgUExBVEZPUk0oRUZMKQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3ZvaWQgR0NBY3Rpdml0
eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsKICAgICBpZiAobmV3
RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47CkBAIC0xMzEsMTQg
KzEwOSwxNCBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlCiAgICAg
bV90aW1lciA9IGFkZChuZXdEZWxheSwgdGhpcyk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bFRpbWVyKCkKIHsKLSAgICBtX2RlbGF5ID0gaG91cjsKKyAgICBtX2RlbGF5ID0gc19ob3VyOwog
ICAgIHN0b3AoKTsKIH0KICNlbmRpZgogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmRpZEFsbG9jYXRlKHNpemVfdCBieXRlcykKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRB
bGxvY2F0ZShzaXplX3QgYnl0ZXMpCiB7CiAjaWYgUExBVEZPUk0oRUZMKQogICAgIGlmICghaXNF
bmFibGVkKCkpCkBAIC0xNTEsNDIgKzEyOSw0MSBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmRpZEFsbG9jCiAgICAgLy8gV2UgcHJldGVuZCBpdCdzIG9uZSBieXRlIHNvIHRoYXQg
d2UgZG9uJ3QgaWdub3JlIHRoaXMgYWxsb2NhdGlvbiBlbnRpcmVseS4KICAgICBpZiAoIWJ5dGVz
KQogICAgICAgICBieXRlcyA9IDE7Ci0gICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAq
PigmbV92bS0+aGVhcCk7Ci0gICAgZG91YmxlIGdjVGltZVNsaWNlID0gc3RkOjptaW4oKHN0YXRp
Y19jYXN0PGRvdWJsZT4oYnl0ZXMpIC8gTUIpICogZ2NUaW1lU2xpY2VQZXJNQiwgbWF4R0NUaW1l
U2xpY2UpOwotICAgIGRvdWJsZSBuZXdEZWxheSA9IGhlYXAtPmxhc3RHQ0xlbmd0aCgpIC8gZ2NU
aW1lU2xpY2U7CisgICAgZG91YmxlIGJ5dGVzRXhwZWN0ZWRUb1JlY2xhaW0gPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KGJ5dGVzKSAqIGRlYXRoUmF0ZSgpOworICAgIGRvdWJsZSBuZXdEZWxheSA9IGxh
c3RHQ0xlbmd0aCgpIC8gZ2NUaW1lU2xpY2UoYnl0ZXNFeHBlY3RlZFRvUmVjbGFpbSk7CiAgICAg
c2NoZWR1bGVUaW1lcihuZXdEZWxheSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0
KCkKIHsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmNhbmNlbCgpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKIHsKICAg
ICBjYW5jZWxUaW1lcigpOwogfQogCiAjZWxzZQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
OjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxi
YWNrKGhlYXAtPnZtKCkpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6
ZG9Xb3JrKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQogewogfQogCi12b2lk
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCkKK3ZvaWQgR0NB
Y3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QpCiB7CiB9CiAKLXZvaWQgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OndpbGxDb2xsZWN0KCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
OjpjYW5jZWwoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5o
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2
aXR5Q2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMjggKzQxLDQ0IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBjbGFzcyBIZWFwOwogCi1jbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJs
aWMgSGVhcFRpbWVyIHsKK2NsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBIZWFwVGlt
ZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHQ0FjdGl2aXR5Q2FsbGJhY2s+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
QWxsb2NhdGUoc2l6ZV90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3QoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R0NB
Y3Rpdml0eUNhbGxiYWNrPiBjcmVhdGVGdWxsVGltZXIoSGVhcCopOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRWRlblRpbWVyKEhlYXAqKTsKKworICAg
IEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCkg
b3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxD
b2xsZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwogICAgIGJvb2wgaXNFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9CiAKICAgICBzdGF0aWMgYm9vbCBzX3No
b3VsZENyZWF0ZUdDVGltZXI7CiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXN0
R0NMZW5ndGgoKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90IGJ5
dGVzKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgPSAwOworCiAjaWYgVVNF
KENGKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0sIENGUnVuTG9vcFJlZiBydW5Mb29w
KQogICAgICAgICA6IEhlYXBUaW1lcih2bSwgcnVuTG9vcCkKICAgICAgICAgLCBtX2VuYWJsZWQo
dHJ1ZSkKKyAgICAgICAgLCBtX2RlbGF5KHNfZGVjYWRlKQogICAgIHsKICAgICB9CiAjZWxpZiBQ
TEFURk9STShFRkwpCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBzX2hvdXIgPSA2MCAqIDYwOwog
ICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0sIGJvb2wgZmxhZykKICAgICAgICAgOiBIZWFw
VGltZXIodm0pCiAgICAgICAgICwgbV9lbmFibGVkKGZsYWcpCisgICAgICAgICwgbV9kZWxheShz
X2hvdXIpCiAgICAgewogICAgIH0KICNlbHNlCkBAIC03NCwyMyArOTAsMTAgQEAgcHJvdGVjdGVk
OgogI2VuZGlmCiAKICAgICBib29sIG1fZW5hYmxlZDsKLX07Ci0KLWNsYXNzIERlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGUoSGVh
cCopOwotCi0gICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7Ci0KLSAgICBKU19F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZGlkQWxsb2NhdGUoc2l6ZV90KSBvdmVycmlkZTsK
LSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3QoKSBvdmVycmlk
ZTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7
Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCkgb3ZlcnJpZGU7
CiAKICNpZiBVU0UoQ0YpCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCosIENGUnVuTG9vcFJlZik7CiAjZW5kaWYK
ICNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKIHByb3RlY3RlZDoKQEAgLTEwMiwxMSArMTA1
LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotaW5saW5lIFBhc3NPd25QdHI8RGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFjaz4gRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKEhlYXAq
IGhlYXApCi17Ci0gICAgcmV0dXJuIEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRDcmVhdGVH
Q1RpbWVyID8gYWRvcHRQdHIobmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDog
bnVsbHB0cjsKLX0KLQotfQorfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4
IEBACiAjaW5jbHVkZSAiQ29weVZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHV29ya2xp
c3QuaCIKICNpbmNsdWRlICJEZWxheWVkUmVsZWFzZVNjb3BlLmgiCisjaW5jbHVkZSAiRWRlbkdD
QWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIK
ICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVm
Q291bnRlZFNldElubGluZXMuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAg
LTI1Myw4ICsyNTUsMTIgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgICwgbV9yYW1TaXplKHJhbVNpemUoKSkKICAgICAsIG1fbWluQnl0ZXNQZXJDeWNsZShtaW5I
ZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNpemUpKQogICAgICwgbV9zaXplQWZ0ZXJMYXN0Q29s
bGVjdCgwKQorICAgICwgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QoMCkKKyAgICAsIG1fc2l6
ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdCgwKQorICAgICwgbV9zaXplQWZ0ZXJMYXN0RWRlbkNvbGxl
Y3QoMCkKKyAgICAsIG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdCgwKQogICAgICwgbV9ieXRl
c0FsbG9jYXRlZFRoaXNDeWNsZSgwKQotICAgICwgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZSgw
KQorICAgICwgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0KDApCiAgICAgLCBt
X21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9t
aW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uKGZhbHNlKQpA
QCAtMjc0LDkgKzI4MCwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgLCBtX2lzU2FmZVRvQ29sbGVjdChmYWxzZSkKICAgICAsIG1fd3JpdGVCYXJyaWVyQnVm
ZmVyKDI1NikKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX2xhc3RHQ0xlbmd0aCgwKQorICAgICwg
bV9sYXN0RnVsbEdDTGVuZ3RoKDApCisgICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMCkKICAgICAs
IG1fbGFzdENvZGVEaXNjYXJkVGltZShXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
KQotICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNy
ZWF0ZSh0aGlzKSkKKyAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxi
YWNrOjpjcmVhdGVGdWxsVGltZXIodGhpcykpCisjaWYgRU5BQkxFKEdHQykKKyAgICAsIG1fZWRl
bkFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIodGhp
cykpCisjZWxzZQorICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhtX2Z1bGxBY3Rpdml0eUNh
bGxiYWNrKQorI2VuZGlmCiAgICAgLCBtX3N3ZWVwZXIoSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX2RlZmVycmFsRGVwdGgoMCkKIHsKQEAgLTMyMyw3ICszMzUsNyBA
QCB2b2lkIEhlYXA6OnJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBoKCkKIHsKICAgICAvLyBPdXIg
Y2xpZW50cyBkb24ndCBrbm93IGV4YWN0bHkgaG93IG11Y2ggbWVtb3J5IHRoZXkKICAgICAvLyBh
cmUgYWJhbmRvbmluZyBzbyB3ZSBqdXN0IGd1ZXNzIGZvciB0aGVtLgotICAgIGRvdWJsZSBhYmFu
ZG9uZWRCeXRlcyA9IDAuMTAgKiBtX3NpemVBZnRlckxhc3RDb2xsZWN0OworICAgIGRvdWJsZSBh
YmFuZG9uZWRCeXRlcyA9IDAuMSAqIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3Q7CiAKICAgICAvLyBX
ZSB3YW50IHRvIGFjY2VsZXJhdGUgdGhlIG5leHQgY29sbGVjdGlvbi4gQmVjYXVzZSBtZW1vcnkg
aGFzIGp1c3QgCiAgICAgLy8gYmVlbiBhYmFuZG9uZWQsIHRoZSBuZXh0IGNvbGxlY3Rpb24gaGFz
IHRoZSBwb3RlbnRpYWwgdG8gCkBAIC0zMzQsOSArMzQ2LDExIEBAIHZvaWQgSGVhcDo6cmVwb3J0
QWJhbmRvbmVkT2JqZWN0R3JhcGgoKQogCiB2b2lkIEhlYXA6OmRpZEFiYW5kb24oc2l6ZV90IGJ5
dGVzKQogewotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlD
YWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNB
YmFuZG9uZWRUaGlzQ3ljbGUpOwotICAgIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUgKz0gYnl0
ZXM7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spIHsKKyAgICAgICAgbV9mdWxsQWN0
aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUoCisgICAgICAgICAgICBtX3NpemVBZnRlckxhc3RD
b2xsZWN0IC0gbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVkVGhp
c0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0KTsKKyAgICB9Cisg
ICAgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0ICs9IGJ5dGVzOwogfQogCiB2
b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBrKQpAQCAtODQ2LDggKzg2MCw3IEBAIHZvaWQgSGVh
cDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHRydWU7Ci0gICAg
Y29sbGVjdCgpOworICAgIGNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOwogCiAgICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbjogU3dlZXBpbmciKTsKICAg
ICBEZWxheWVkUmVsZWFzZVNjb3BlIGRlbGF5ZWRSZWxlYXNlU2NvcGUobV9vYmplY3RTcGFjZSk7
CkBAIC04NTcsNyArODcwLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAKIHN0
YXRpYyBkb3VibGUgbWludXRlID0gNjAuMDsKIAotdm9pZCBIZWFwOjpjb2xsZWN0KCkKK3ZvaWQg
SGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogewogI2lmIEVOQUJM
RShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xs
ZWN0aW9uLlxuIik7CkBAIC04ODAsNyArODkzLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KCkKICAg
ICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwog
CiAgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgIHdpbGxTdGFydENvbGxlY3Rpb24o
KTsKKyAgICB3aWxsU3RhcnRDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKTsKIAogICAgIGRvdWJs
ZSBnY1N0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAKQEAg
LTkyNywxMCArOTQwLDEwIEBAIHZvaWQgSGVhcDo6c3VzcGVuZENvbXBpbGVyVGhyZWFkcygpCiAj
ZW5kaWYKIH0KIAotdm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKCkKK3ZvaWQgSGVhcDo6
d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogewogICAg
IEdDUEhBU0UoU3RhcnRpbmdDb2xsZWN0aW9uKTsKLSAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVj
dGlvbigpKSB7CisgICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUp
KSB7CiAgICAgICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEZ1bGxDb2xsZWN0aW9uOwogICAg
ICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNrKCk7CiAgICAgICAgIG1fc2hvdWxkRG9G
dWxsQ29sbGVjdGlvbiA9IGZhbHNlOwpAQCAtOTQxLDExICs5NTQsMTkgQEAgdm9pZCBIZWFwOjp3
aWxsU3RhcnRDb2xsZWN0aW9uKCkKICAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAg
ICAgICAgICBkYXRhTG9nKCJFZGVuQ29sbGVjdGlvbiwgIik7CiAgICAgfQotICAgIGlmIChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBtX3NpemVCZWZvcmVMYXN0
RnVsbENvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRo
aXNDeWNsZTsKICAgICAgICAgbV9leHRyYU1lbW9yeVVzYWdlID0gMDsKIAotICAgIGlmIChtX2Fj
dGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+d2lsbENvbGxlY3Qo
KTsKKyAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCisgICAgICAgICAgICBtX2Z1
bGxBY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pOworICAgICAg
ICBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsg
bV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKKyAgICB9CisKKyAgICBpZiAobV9lZGVuQWN0aXZp
dHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+d2lsbENvbGxlY3Qo
KTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVPbGRDb2RlKGRvdWJsZSBnY1N0YXJ0VGltZSkKQEAg
LTEwNDMsMjAgKzEwNjQsMjYgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkK
ICAgICAgICAgLy8gZml4ZWQgbWluaW11bS4KICAgICAgICAgbV9tYXhIZWFwU2l6ZSA9IG1heCht
aW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShj
dXJyZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkpOwogICAgICAgICBtX21heEVkZW5TaXplID0gbV9t
YXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKKyAgICAgICAgbV9zaXplQWZ0ZXJMYXN0RnVs
bENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisgICAgICAgIG1fYnl0ZXNBYmFuZG9uZWRTaW5j
ZUxhc3RGdWxsQ29sbGVjdCA9IDA7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGN1cnJl
bnRIZWFwU2l6ZSA+PSBtX3NpemVBZnRlckxhc3RDb2xsZWN0KTsKICAgICAgICAgbV9tYXhFZGVu
U2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50SGVhcFNpemU7CisgICAgICAgIG1fc2l6ZUFm
dGVyTGFzdEVkZW5Db2xsZWN0ID0gY3VycmVudEhlYXBTaXplOwogICAgICAgICBkb3VibGUgZWRl
blRvT2xkR2VuZXJhdGlvblJhdGlvID0gKGRvdWJsZSltX21heEVkZW5TaXplIC8gKGRvdWJsZSlt
X21heEhlYXBTaXplOwogICAgICAgICBkb3VibGUgbWluRWRlblRvT2xkR2VuZXJhdGlvblJhdGlv
ID0gMS4wIC8gMy4wOwogICAgICAgICBpZiAoZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvIDwgbWlu
RWRlblRvT2xkR2VuZXJhdGlvblJhdGlvKQogICAgICAgICAgICAgbV9zaG91bGREb0Z1bGxDb2xs
ZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9tYXhIZWFwU2l6ZSArPSBjdXJyZW50SGVhcFNpemUg
LSBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogICAgICAgICBtX21heEVkZW5TaXplID0gbV9tYXhI
ZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKKyAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spIHsKKyAgICAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9zaXplQWZ0
ZXJMYXN0RnVsbENvbGxlY3QpOworICAgICAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+
ZGlkQWxsb2NhdGUoY3VycmVudEhlYXBTaXplIC0gbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Qp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9IGN1cnJl
bnRIZWFwU2l6ZTsKICAgICBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID0gMDsKLSAgICBtX2J5
dGVzQWJhbmRvbmVkVGhpc0N5Y2xlID0gMDsKIAogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQog
ICAgICAgICBkYXRhTG9nKGN1cnJlbnRIZWFwU2l6ZSAvIDEwMjQsICIga2IsICIpOwpAQCAtMTA2
Niw3ICsxMDkzLDEwIEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbihkb3VibGUgZ2MK
IHsKICAgICBHQ1BIQVNFKEZpbmlzaGluZ0NvbGxlY3Rpb24pOwogICAgIGRvdWJsZSBnY0VuZFRp
bWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIG1fbGFzdEdDTGVu
Z3RoID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7CisgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9n
cmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICAgICAgbV9sYXN0RnVsbEdDTGVuZ3RoID0gZ2NF
bmRUaW1lIC0gZ2NTdGFydFRpbWU7CisgICAgZWxzZQorICAgICAgICBtX2xhc3RFZGVuR0NMZW5n
dGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0VGltZTsKIAogICAgIGlmIChPcHRpb25zOjpyZWNvcmRH
Q1BhdXNlVGltZXMoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OnJlY29yZEdDUGF1c2VUaW1l
KGdjU3RhcnRUaW1lLCBnY0VuZFRpbWUpOwpAQCAtMTEwMiwxNCArMTEzMiwyNCBAQCB2b2lkIEhl
YXA6Om1hcmtEZWFkT2JqZWN0cygpCiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGw8
TWFya09iamVjdD4oaXRlcmF0aW9uU2NvcGUpOwogfQogCi12b2lkIEhlYXA6OnNldEFjdGl2aXR5
Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2sp
Cit2b2lkIEhlYXA6OnNldEZ1bGxBY3Rpdml0eUNhbGxiYWNrKFBhc3NSZWZQdHI8RnVsbEdDQWN0
aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFjaykKIHsKLSAgICBtX2FjdGl2aXR5Q2FsbGJh
Y2sgPSBhY3Rpdml0eUNhbGxiYWNrOworICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2sgPSBhY3Rp
dml0eUNhbGxiYWNrOwogfQogCi1HQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmFjdGl2aXR5Q2Fs
bGJhY2soKQordm9pZCBIZWFwOjpzZXRFZGVuQWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIG1f
YWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKKyAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrID0gYWN0
aXZpdHlDYWxsYmFjazsKK30KKworR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFwOjpmdWxsQWN0aXZp
dHlDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2suZ2V0KCk7
Cit9CisKK0dDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6ZWRlbkFjdGl2aXR5Q2FsbGJhY2soKQor
eworICAgIHJldHVybiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLmdldCgpOwogfQogCiB2b2lkIEhl
YXA6OnNldEluY3JlbWVudGFsU3dlZXBlcihQYXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4g
c3dlZXBlcikKQEAgLTExMjQsMTQgKzExNjQsMTYgQEAgSW5jcmVtZW50YWxTd2VlcGVyKiBIZWFw
Ojpzd2VlcGVyKCkKIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxl
ZChib29sIGVuYWJsZSkKIHsKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBt
X2FjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJsZWQoZW5hYmxlKTsKKyAgICBpZiAobV9mdWxsQWN0
aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+c2V0RW5hYmxl
ZChlbmFibGUpOworICAgIGlmIChtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICBtX2Vk
ZW5BY3Rpdml0eUNhbGxiYWNrLT5zZXRFbmFibGVkKGVuYWJsZSk7CiB9CiAKIHZvaWQgSGVhcDo6
ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2sp
Ci0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRl
ZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOworICAgIGlmIChtX2VkZW5B
Y3Rpdml0eUNhbGxiYWNrKQorICAgICAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5kaWRBbGxv
Y2F0ZShtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFz
dEZ1bGxDb2xsZWN0KTsKICAgICBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICs9IGJ5dGVzOwog
fQogCkBAIC0xMjE0LDExICsxMjU2LDI3IEBAIHZvaWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJC
dWZmZXIoSlNDZWwKICNlbmRpZgogfQogCi1ib29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rp
b24oKSBjb25zdAorYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRp
b24gcmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKEdHQykKLSAg
ICByZXR1cm4gT3B0aW9uczo6YWx3YXlzRG9GdWxsQ29sbGVjdGlvbigpIHx8IG1fc2hvdWxkRG9G
dWxsQ29sbGVjdGlvbjsKKyAgICBpZiAoT3B0aW9uczo6YWx3YXlzRG9GdWxsQ29sbGVjdGlvbigp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHN3aXRjaCAocmVxdWVzdGVkQ29sbGVjdGlv
blR5cGUpIHsKKyAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgY2FzZSBGdWxsQ29sbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2Fz
ZSBBbnlDb2xsZWN0aW9uOgorICAgICAgICByZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9u
OworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0
ZWRDb2xsZWN0aW9uVHlwZSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb3BpZWRTcGFjZTsKICAgICBjbGFzcyBDb2RlQmxv
Y2s7CiAgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CisgICAgY2xhc3MgRWRlbkdDQWN0aXZpdHlD
YWxsYmFjazsKKyAgICBjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEdD
QWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CiAgICAg
Y2xhc3MgR2xvYmFsQ29kZUJsb2NrOwpAQCAtMTE4LDggKzEyMCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9vYmplY3RT
cGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVy
biBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rp
dml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGZ1bGxB
Y3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlD
YWxsYmFjayogZWRlbkFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5
Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRFZGVuQWN0aXZp
dHlDYWxsYmFjayhQYXNzUmVmUHRyPEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChi
b29sKTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbmNyZW1lbnRhbFN3ZWVwZXIqIHN3
ZWVwZXIoKTsKQEAgLTE0OCw5ICsxNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgICAgIGJvb2wg
c2hvdWxkQ29sbGVjdCgpOwotICAgICAgICB2b2lkIGdjVGltZXJEaWRGaXJlKCkgeyBtX3Nob3Vs
ZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOyB9Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxkRG9GdWxs
Q29sbGVjdGlvbihib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24pIHsgbV9zaG91bGREb0Z1bGxD
b2xsZWN0aW9uID0gc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsgfQotICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGNvbGxlY3QoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBj
b2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKICAg
ICAgICAgYm9vbCBjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKCk7IC8vIFJldHVybnMgdHJ1ZSBp
ZiBpdCBkaWQgY29sbGVjdC4KIAogICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdChz
aXplX3QgY29zdCk7CkBAIC0xODYsOCArMTg4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGRpZEZpbmlzaEl0ZXJhdGluZygpOwogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2
ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCi0gICAgICAgIGRvdWJs
ZSBsYXN0R0NMZW5ndGgoKSB7IHJldHVybiBtX2xhc3RHQ0xlbmd0aDsgfQotICAgICAgICB2b2lk
IGluY3JlYXNlTGFzdEdDTGVuZ3RoKGRvdWJsZSBhbW91bnQpIHsgbV9sYXN0R0NMZW5ndGggKz0g
YW1vdW50OyB9CisgICAgICAgIGRvdWJsZSBsYXN0RnVsbEdDTGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0RnVsbEdDTGVuZ3RoOyB9CisgICAgICAgIGRvdWJsZSBsYXN0RWRlbkdDTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWRlbkdDTGVuZ3RoOyB9CisgICAgICAgIHZvaWQgaW5j
cmVhc2VMYXN0RnVsbEdDTGVuZ3RoKGRvdWJsZSBhbW91bnQpIHsgbV9sYXN0RnVsbEdDTGVuZ3Ro
ICs9IGFtb3VudDsgfQorCisgICAgICAgIHNpemVfdCBzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0OyB9CisgICAg
ICAgIHNpemVfdCBzaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6ZUJlZm9yZUxh
c3RGdWxsQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29s
bGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Q7IH0KIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOwogICAgICAgICB2b2lk
IGRlbGV0ZUFsbFVubGlua2VkRnVuY3Rpb25Db2RlKCk7CkBAIC0yNTIsNyArMjYwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RXh0cmFN
ZW1vcnlDb3N0U2xvd0Nhc2Uoc2l6ZV90KTsKIAogICAgICAgICB2b2lkIHN1c3BlbmRDb21waWxl
clRocmVhZHMoKTsKLSAgICAgICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisgICAgICAg
IHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKTsK
ICAgICAgICAgdm9pZCBkZWxldGVPbGRDb2RlKGRvdWJsZSBnY1N0YXJ0VGltZSk7CiAgICAgICAg
IHZvaWQgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgICAgICB2b2lkIGZsdXNoV3Jp
dGVCYXJyaWVyQnVmZmVyKCk7CkBAIC0yOTYsNyArMzA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgem9tYmlmeURlYWRPYmplY3RzKCk7CiAgICAgICAgIHZvaWQgbWFya0RlYWRP
YmplY3RzKCk7CiAKLSAgICAgICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkgY29uc3Q7
CisgICAgICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVl
c3RlZENvbGxlY3Rpb25UeXBlKSBjb25zdDsKICAgICAgICAgc2l6ZV90IHNpemVBZnRlckNvbGxl
Y3QoKTsKIAogICAgICAgICBKU1N0YWNrJiBzdGFjaygpOwpAQCAtMzA5LDkgKzMxNywxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fcmFtU2l6ZTsKICAgICAgICAg
Y29uc3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJDeWNsZTsKICAgICAgICAgc2l6ZV90IG1fc2l6ZUFm
dGVyTGFzdENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVj
dDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdDsKKyAgICAgICAg
c2l6ZV90IG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0OworICAgICAgICBzaXplX3QgbV9zaXpl
QmVmb3JlTGFzdEVkZW5Db2xsZWN0OwogCiAgICAgICAgIHNpemVfdCBtX2J5dGVzQWxsb2NhdGVk
VGhpc0N5Y2xlOwotICAgICAgICBzaXplX3QgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZTsKKyAg
ICAgICAgc2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdDsKICAgICAg
ICAgc2l6ZV90IG1fbWF4RWRlblNpemU7CiAgICAgICAgIHNpemVfdCBtX21heEhlYXBTaXplOwog
ICAgICAgICBib29sIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKQEAgLTM0OSwxMiArMzYxLDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXJCdWZmZXIgbV93cml0ZUJh
cnJpZXJCdWZmZXI7CiAKICAgICAgICAgVk0qIG1fdm07Ci0gICAgICAgIGRvdWJsZSBtX2xhc3RH
Q0xlbmd0aDsKKyAgICAgICAgZG91YmxlIG1fbGFzdEZ1bGxHQ0xlbmd0aDsKKyAgICAgICAgZG91
YmxlIG1fbGFzdEVkZW5HQ0xlbmd0aDsKICAgICAgICAgZG91YmxlIG1fbGFzdENvZGVEaXNjYXJk
VGltZTsKIAogICAgICAgICBEb3VibHlMaW5rZWRMaXN0PEV4ZWN1dGFibGVCYXNlPiBtX2NvbXBp
bGVkQ29kZTsKICAgICAgICAgCi0gICAgICAgIE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1f
YWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9m
dWxsQWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4g
bV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKICAgICAgICAgT3duUHRyPEluY3JlbWVudGFsU3dlZXBl
cj4gbV9zd2VlcGVyOwogICAgICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2NrU25hcHNo
b3Q7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVy
YXRpb24uaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcE9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCi1lbnVtIEhlYXBPcGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlv
biwgRnVsbENvbGxlY3Rpb24sIEVkZW5Db2xsZWN0aW9uIH07CitlbnVtIEhlYXBPcGVyYXRpb24g
eyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVsbENvbGxlY3Rpb24sIEVkZW5Db2xsZWN0aW9u
LCBBbnlDb2xsZWN0aW9uIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAxNjU4
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIEhlYXBTdGF0aXN0aWNzOjpzaG93
T2JqZWN0U3RhdGlzdGljCiAgICAgZGF0YUxvZ0YoIlxuPT09IEhlYXAgU3RhdGlzdGljczogPT09
XG4iKTsKICAgICBkYXRhTG9nRigic2l6ZTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KGhl
YXAtPm1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgLyBLQikpOwogICAgIGRhdGFMb2dGKCJjYXBhY2l0
eTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KGhlYXAtPmNhcGFjaXR5KCkgLyBLQikpOwot
ICAgIGRhdGFMb2dGKCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBoZWFwLT5tX2xhc3RHQ0xlbmd0
aCk7CisgICAgZGF0YUxvZ0YoInBhdXNlIHRpbWU6ICVsZm1zXG5cbiIsIGhlYXAtPm1fbGFzdEZ1
bGxHQ0xlbmd0aCk7CiAKICAgICBTdG9yYWdlU3RhdGlzdGljcyBzdG9yYWdlU3RhdGlzdGljczsK
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDggKzg1LDEwIEBAIHZvaWQgSGVhcFRpbWVyOjp0aW1l
ckRpZEZpcmUoQ0ZSdW5Mb29wVGkKICAgICB9CiAKICAgICBIZWFwVGltZXIqIGhlYXBUaW1lciA9
IDA7Ci0gICAgaWYgKHZtLT5oZWFwLmFjdGl2aXR5Q2FsbGJhY2soKSAmJiB2bS0+aGVhcC5hY3Rp
dml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIpCi0gICAgICAgIGhlYXBUaW1l
ciA9IHZtLT5oZWFwLmFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICBpZiAodm0tPmhlYXAuZnVsbEFj
dGl2aXR5Q2FsbGJhY2soKSAmJiB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT5tX3Rp
bWVyLmdldCgpID09IHRpbWVyKQorICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5mdWxsQWN0
aXZpdHlDYWxsYmFjaygpOworICAgIGVsc2UgaWYgKHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxi
YWNrKCkgJiYgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+bV90aW1lci5nZXQoKSA9
PSB0aW1lcikKKyAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJh
Y2soKTsKICAgICBlbHNlIGlmICh2bS0+aGVhcC5zd2VlcGVyKCktPm1fdGltZXIuZ2V0KCkgPT0g
dGltZXIpCiAgICAgICAgIGhlYXBUaW1lciA9IHZtLT5oZWFwLnN3ZWVwZXIoKTsKICAgICBlbHNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0Miw2ICsyNDIsMTAgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25S
YW5nZTsKICAgICB2KGRvdWJsZSwgbWluQ29waWVkQmxvY2tVdGlsaXphdGlvbiwgMC45KSBcCiAg
ICAgdihkb3VibGUsIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24sIDAuOSkgXAogICAgIFwKKyAg
ICB2KGRvdWJsZSwgcGVyY2VudENQVVBlck1CRm9yRnVsbFRpbWVyLCAwLjAwMDMxMjUpIFwKKyAg
ICB2KGRvdWJsZSwgcGVyY2VudENQVVBlck1CRm9yRWRlblRpbWVyLCAwLjAwMjUpIFwKKyAgICB2
KGRvdWJsZSwgY29sbGVjdGlvblRpbWVyTWF4UGVyY2VudENQVSwgMC4wNSkgXAorICAgIFwKICAg
ICB2KGJvb2wsIGZvcmNlV2Vha1JhbmRvbVNlZWQsIGZhbHNlKSBcCiAgICAgdih1bnNpZ25lZCwg
Zm9yY2VkV2Vha1JhbmRvbVNlZWQsIDApIFwKICAgICBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNjU4MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxNC0wMy0xOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdA
YXBwbGUuY29tPgorCisgICAgICAgIEdDIHRpbWVyIHNob3VsZCBpbnRlbGxpZ2VudGx5IGNob29z
ZSBiZXR3ZWVuIEVkZW5Db2xsZWN0aW9ucyBhbmQgRnVsbENvbGxlY3Rpb25zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgyNjEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAg
ICAgICAgVXBkYXRlZCBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrcyBmb3IgYm90aCBFZGVuIGFu
ZCBGdWxsIHRpbWVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJTYWZlR0NBY3Rpdml0
eUNhbGxiYWNrSU9TLmg6CisKIDIwMTQtMDMtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1
ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjU4MTUu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxs
YmFja0lPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJT
YWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDI2ICsyNyw0MiBAQAogI2RlZmluZSBXZWJTYWZlR0NBY3Rpdml0eUNh
bGxiYWNrSU9TX2gKIAogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdl
YlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrIHsKK2NsYXNzIFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrIGZpbmFs
IDogcHVibGljIEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SGVh
cCogaGVhcCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxs
YmFjaz4gY3JlYXRlKEpTQzo6SGVhcCogaGVhcCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgfldlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7
IH0KKyAgICB2aXJ0dWFsIH5XZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjaygpIG92ZXJyaWRl
IHsgfQogCiBwcml2YXRlOgotICAgIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2soSlNDOjpIZWFw
KiBoZWFwKQotICAgICAgICA6IEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBX
ZWJUaHJlYWRSdW5Mb29wKCkpCisgICAgV2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSlND
OjpIZWFwKiBoZWFwKQorICAgICAgICA6IEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayhoZWFw
LCBXZWJUaHJlYWRSdW5Mb29wKCkpCiAgICAgewogICAgIH0KIH07CiAKK2NsYXNzIFdlYlNhZmVF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrIGZpbmFsIDogcHVibGljIEpTQzo6RWRlbkdDQWN0aXZpdHlD
YWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU2FmZUVkZW5HQ0Fj
dGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkhlYXAqIGhlYXApCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjaygpIG92
ZXJyaWRlIHsgfQorCitwcml2YXRlOgorICAgIFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
KEpTQzo6SGVhcCogaGVhcCkKKyAgICAgICAgOiBKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2so
aGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgpKQorICAgIHsKKyAgICB9Cit9OwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPU19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227114</attachid>
            <date>2014-03-18 14:49:45 -0700</date>
            <delta_ts>2014-03-18 15:06:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318144830.patch</filename>
            <type>text/plain</type>
            <size>53171</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKworRWRlbkdDQWN0
aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDog
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3ZtLT5oZWFwLmNvbGxlY3QoRWRlbkNvbGxl
Y3Rpb24pOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV92bS0+aGVhcC5sYXN0RWRlbkdDTGVuZ3RoKCk7Cit9CisKK2Rv
dWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhl
YXAgPSAmbV92bS0+aGVhcDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZv
cmVMYXN0RWRlbkNvbGxlY3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6
ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAg
ICByZXR1cm4gMS4wOworICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikg
LyBkb3VibGUoc2l6ZUJlZm9yZSk7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
OjpnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0
aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZv
ckVkZW5UaW1lcigpLCBPcHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOwor
fQorCisjZWxzZQorCitFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSkKK3sK
K30KKwordm9pZCBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQor
Citkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKK30KKwor
ZG91YmxlIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7Cit9CisKK2RvdWJs
ZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZShzaXplX3QpCit7Cit9CisKKyNl
bmRpZiAvLyBVU0UoQ0YpCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrX2gKKyNkZWZpbmUgRWRlbkdDQWN0aXZpdHlDYWxsYmFj
a19oCisKKyNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxi
YWNrIHsKK3B1YmxpYzoKKyAgICBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKworICAg
IHZpcnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorI2lm
IFVTRShDRikKKyAgICBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9v
cFJlZiBydW5Mb29wKQorICAgICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBydW5Mb29w
KQorICAgIHsKKyAgICB9CisjZWxzZQorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCog
aGVhcCkKKyAgICAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKKyAgICB7CisgICAgfQor
I2VuZGlmCisKKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXN0R0NMZW5ndGgoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGRvdWJsZSBnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpIG92ZXJyaWRlOworfTsKKworaW5saW5lIFBhc3NS
ZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5U
aW1lcihIZWFwKiBoZWFwKQoreworICAgIHJldHVybiBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBh
ZG9wdFJlZihuZXcgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2tf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0
aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJWTS5oIgorCisjaWYgVVNFKENGKSB8
fCBQTEFURk9STShFRkwpCisKKyNpZiAhUExBVEZPUk0oSU9TKQorY29uc3QgZG91YmxlIHBhZ2lu
Z1RpbWVPdXQgPSAwLjE7IC8vIFRpbWUgaW4gc2Vjb25kcyB0byBhbGxvdyBvcHBvcnR1bmlzdGlj
IHRpbWVyIHRvIGl0ZXJhdGUgb3ZlciBhbGwgYmxvY2tzIHRvIHNlZSBpZiB0aGUgSGVhcCBpcyBw
YWdlZCBvdXQuCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK0Z1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZp
dHlDYWxsYmFjayhoZWFwKQoreworfQorCit2b2lkIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRv
Q29sbGVjdGlvbigpCit7CisgICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOworCisjaWYgIVBM
QVRGT1JNKElPUykKKyAgICBkb3VibGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKTsKKyAgICBpZiAoaGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdp
bmdUaW1lT3V0KSkgeworICAgICAgICBjYW5jZWwoKTsKKyAgICAgICAgaGVhcC0+aW5jcmVhc2VM
YXN0RnVsbEdDTGVuZ3RoKHBhZ2luZ1RpbWVPdXQpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisKKyAgICBoZWFwLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKK30KKworZG91Ymxl
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6Omxhc3RHQ0xlbmd0aCgpCit7CisgICAgcmV0dXJuIG1f
dm0tPmhlYXAubGFzdEZ1bGxHQ0xlbmd0aCgpOworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlD
YWxsYmFjazo6ZGVhdGhSYXRlKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7Cisg
ICAgc2l6ZV90IHNpemVCZWZvcmUgPSBoZWFwLT5zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0aW9u
KCk7CisgICAgc2l6ZV90IHNpemVBZnRlciA9IGhlYXAtPnNpemVBZnRlckxhc3RGdWxsQ29sbGVj
dGlvbigpOworICAgIGlmICghc2l6ZUJlZm9yZSkKKyAgICAgICAgcmV0dXJuIDEuMDsKKyAgICBy
ZXR1cm4gZG91YmxlKHNpemVCZWZvcmUgLSBzaXplQWZ0ZXIpIC8gZG91YmxlKHNpemVCZWZvcmUp
OworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6Z2NUaW1lU2xpY2Uoc2l6ZV90
IGJ5dGVzKQoreworICAgIHJldHVybiBzdGQ6Om1pbigoc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRl
cykgLyBNQikgKiBPcHRpb25zOjpwZXJjZW50Q1BVUGVyTUJGb3JGdWxsVGltZXIoKSwgT3B0aW9u
czo6Y29sbGVjdGlvblRpbWVyTWF4UGVyY2VudENQVSgpKTsKK30KKworI2Vsc2UKKworRnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAg
IDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRnVsbEdDQWN0aXZpdHlD
YWxsYmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2s6Omxhc3RHQ0xlbmd0aCgpCit7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrOjpkZWF0aFJhdGUoKQoreworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
Z2NUaW1lU2xpY2Uoc2l6ZV90KQoreworfQorCisjZW5kaWYgLy8gVVNFKENGKQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9G
dWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRnVsbEdDQWN0aXZpdHlDYWxsYmFja19o
CisjZGVmaW5lIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2tfaAorCisjaW5jbHVkZSAiR0NBY3Rpdml0
eUNhbGxiYWNrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBGdWxsR0NBY3Rpdml0eUNh
bGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgRnVsbEdD
QWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9u
KCkgb3ZlcnJpZGU7CisKK3Byb3RlY3RlZDoKKyAgICBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhl
YXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQorICAgICAgICA6IEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwLCBydW5Mb29wKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGRvdWJsZSBs
YXN0R0NMZW5ndGgoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBnY1RpbWVTbGljZShz
aXplX3QgYnl0ZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpIG92
ZXJyaWRlOworfTsKKworaW5saW5lIFBhc3NSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUZ1bGxUaW1lcihIZWFwKiBoZWFwKQoreworICAgIHJldHVy
biBzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9wdFJlZihuZXcgRnVsbEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwKSkgOiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAxNjU4MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NywzOSArNDcsMjYgQEAgYm9vbCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNf
c2hvdWxkQ3JlYXRlRwogCiAjaWYgVVNFKENGKSB8fCBQTEFURk9STShFRkwpCiAKLWNvbnN0IGRv
dWJsZSBnY1RpbWVTbGljZVBlck1CID0gMC4wMTsgLy8gUGVyY2VudGFnZSBvZiBDUFUgdGltZSB3
ZSB3aWxsIHNwZW5kIHRvIHJlY2xhaW0gMSBNQgotY29uc3QgZG91YmxlIG1heEdDVGltZVNsaWNl
ID0gMC4wNTsgLy8gVGhlIG1heGltdW0gYW1vdW50IG9mIENQVSB0aW1lIHdlIHdhbnQgdG8gdXNl
IGZvciBvcHBvcnR1bmlzdGljIHRpbWVyLXRyaWdnZXJlZCBjb2xsZWN0aW9ucy4KIGNvbnN0IGRv
dWJsZSB0aW1lclNsb3AgPSAyLjA7IC8vIEZ1ZGdlIGZhY3RvciB0byBhdm9pZCBwZXJmb3JtYW5j
ZSBjb3N0IG9mIHJlc2V0dGluZyB0aW1lci4KIAotI2lmICFQTEFURk9STShJT1MpCi1jb25zdCBk
b3VibGUgcGFnaW5nVGltZU91dCA9IDAuMTsgLy8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9w
cG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRo
ZSBIZWFwIGlzIHBhZ2VkIG91dC4KLSNlbmRpZgotCi0jaWYgIVVTRShDRikKLWNvbnN0IGRvdWJs
ZSBob3VyID0gNjAgKiA2MDsKLSNlbmRpZgotCiAjaWYgVVNFKENGKQotRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorR0NBY3Rp
dml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0
aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCi0gICAgLCBt
X2RlbGF5KHNfZGVjYWRlKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQor
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5M
b29wUmVmIHJ1bkxvb3ApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwgcnVu
TG9vcCkKLSAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAjZWxpZiBQTEFURk9STShFRkwp
Ci1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhl
YXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBo
ZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIFdURjo6aXNNYWluVGhy
ZWFkKCkpCi0gICAgLCBtX2RlbGF5KGhvdXIpCiB7CiB9CiAjZW5kaWYKIAotdm9pZCBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRv
V29yaygpCiB7CiAgICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOwogICAgIGlmICghaXNFbmFi
bGVkKCkpCkBAIC05MSwyMCArNzgsMTEgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
Ojpkb1dvcmsoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykK
LSAgICBkb3VibGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKLSAgICBpZiAoaGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdpbmdUaW1lT3V0KSkg
ewotICAgICAgICBoZWFwLT5hY3Rpdml0eUNhbGxiYWNrKCktPmNhbmNlbCgpOwotICAgICAgICBo
ZWFwLT5pbmNyZWFzZUxhc3RHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSNlbmRpZgotICAgIGhlYXAtPmdjVGltZXJEaWRGaXJlKCk7Ci0gICAgaGVhcC0+
Y29sbGVjdCgpOworICAgIGRvQ29sbGVjdGlvbigpOwogfQotICAgIAorCiAjaWYgVVNFKENGKQot
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdE
ZWxheSkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdE
ZWxheSkKIHsKICAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAg
ICByZXR1cm47CkBAIC0xMTMsMTMgKzkxLDEzIEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjazo6c2NoZWR1bGUKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVy
LmdldCgpLCBDRlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpKSAtIGRl
bHRhKTsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigp
Cit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQogewogICAgIG1fZGVsYXkg
PSBzX2RlY2FkZTsKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdl
dCgpLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNfZGVjYWRlKTsKIH0KICNlbGlmIFBM
QVRGT1JNKEVGTCkKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1l
cihkb3VibGUgbmV3RGVsYXkpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1l
cihkb3VibGUgbmV3RGVsYXkpCiB7CiAgICAgaWYgKG5ld0RlbGF5ICogdGltZXJTbG9wID4gbV9k
ZWxheSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMxLDE0ICsxMDksMTQgQEAgdm9pZCBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZQogICAgIG1fdGltZXIgPSBhZGQobmV3RGVsYXks
IHRoaXMpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVy
KCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAgbV9kZWxh
eSA9IGhvdXI7CisgICAgbV9kZWxheSA9IHNfaG91cjsKICAgICBzdG9wKCk7CiB9CiAjZW5kaWYK
IAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QgYnl0
ZXMpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQog
ewogI2lmIFBMQVRGT1JNKEVGTCkKICAgICBpZiAoIWlzRW5hYmxlZCgpKQpAQCAtMTUxLDQyICsx
MjksNDEgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvYwogICAgIC8v
IFdlIHByZXRlbmQgaXQncyBvbmUgYnl0ZSBzbyB0aGF0IHdlIGRvbid0IGlnbm9yZSB0aGlzIGFs
bG9jYXRpb24gZW50aXJlbHkuCiAgICAgaWYgKCFieXRlcykKICAgICAgICAgYnl0ZXMgPSAxOwot
ICAgIEhlYXAqIGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oJm1fdm0tPmhlYXApOwotICAgIGRv
dWJsZSBnY1RpbWVTbGljZSA9IHN0ZDo6bWluKChzdGF0aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAv
IE1CKSAqIGdjVGltZVNsaWNlUGVyTUIsIG1heEdDVGltZVNsaWNlKTsKLSAgICBkb3VibGUgbmV3
RGVsYXkgPSBoZWFwLT5sYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlOworICAgIGRvdWJsZSBi
eXRlc0V4cGVjdGVkVG9SZWNsYWltID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgKiBkZWF0
aFJhdGUoKTsKKyAgICBkb3VibGUgbmV3RGVsYXkgPSBsYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNs
aWNlKGJ5dGVzRXhwZWN0ZWRUb1JlY2xhaW0pOwogICAgIHNjaGVkdWxlVGltZXIobmV3RGVsYXkp
OwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKK3Zv
aWQgR0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiAgICAgY2FuY2VsVGltZXIo
KTsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQordm9pZCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAog
I2Vsc2UKIAotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjayhIZWFwKiBoZWFwKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2so
SGVhcCogaGVhcCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpKQogewogfQog
Ci12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCit2b2lkIEdDQWN0aXZp
dHlDYWxsYmFjazo6ZG9Xb3JrKCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrOjpkaWRBbGxvY2F0ZShzaXplX3QpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxs
b2NhdGUoc2l6ZV90KQogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6Ondp
bGxDb2xsZWN0KCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiB9
CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKK3ZvaWQgR0NBY3Rp
dml0eUNhbGxiYWNrOjpjYW5jZWwoKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMTY1ODI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkhlYXBUaW1lci5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KQEAgLTQxLDI4ICs0MSw0NCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogY2xhc3MgSGVhcDsKIAotY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEhlYXBU
aW1lciB7CitjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgSGVhcFRpbWVyLCBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8R0NBY3Rpdml0eUNhbGxiYWNrPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRl
KHNpemVfdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGNhbmNlbCgpIHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4gY3JlYXRlRnVsbFRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
Q0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CisKKyAgICBHQ0FjdGl2
aXR5Q2FsbGJhY2soSGVhcCopOworCisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRl
OworCisgICAgdmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgp
OworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQp
IHsgbV9lbmFibGVkID0gZW5hYmxlZDsgfQogCiAgICAgc3RhdGljIGJvb2wgc19zaG91bGRDcmVh
dGVHQ1RpbWVyOwogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdDTGVuZ3Ro
KCkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgPSAw
OworICAgIHZpcnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpID0gMDsKKwogI2lmIFVTRShDRikKICAg
ICBHQ0FjdGl2aXR5Q2FsbGJhY2soVk0qIHZtLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICAg
ICAgOiBIZWFwVGltZXIodm0sIHJ1bkxvb3ApCiAgICAgICAgICwgbV9lbmFibGVkKHRydWUpCisg
ICAgICAgICwgbV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQogI2VsaWYgUExBVEZPUk0o
RUZMKQorICAgIHN0YXRpYyBjb25zdCBkb3VibGUgc19ob3VyID0gNjAgKiA2MDsKICAgICBHQ0Fj
dGl2aXR5Q2FsbGJhY2soVk0qIHZtLCBib29sIGZsYWcpCiAgICAgICAgIDogSGVhcFRpbWVyKHZt
KQogICAgICAgICAsIG1fZW5hYmxlZChmbGFnKQorICAgICAgICAsIG1fZGVsYXkoc19ob3VyKQog
ICAgIHsKICAgICB9CiAjZWxzZQpAQCAtNzQsMjMgKzkwLDEwIEBAIHByb3RlY3RlZDoKICNlbmRp
ZgogCiAgICAgYm9vbCBtX2VuYWJsZWQ7Ci19OwotCi1jbGFzcyBEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEhlYXAqKTsKLQot
ICAgIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwotCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgb3ZlcnJpZGU7Ci0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwotCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOwogCiAjaWYg
VVNFKENGKQogcHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2soSGVhcCosIENGUnVuTG9vcFJlZik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwogI2VuZGlmCiAjaWYgVVNF
KENGKSB8fCBQTEFURk9STShFRkwpCiBwcm90ZWN0ZWQ6CkBAIC0xMDIsMTEgKzEwNSw2IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIH07CiAKLWlubGluZSBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s+IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZShIZWFwKiBoZWFwKQot
ewotICAgIHJldHVybiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/
IGFkb3B0UHRyKG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7
Ci19Ci0KLX0KK30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2lu
Y2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAj
aW5jbHVkZSAiRGVsYXllZFJlbGVhc2VTY29wZS5oIgorI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVk
ZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRT
ZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNTMsOCAr
MjU1LDEyIEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1f
cmFtU2l6ZShyYW1TaXplKCkpCiAgICAgLCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUo
bV9oZWFwVHlwZSwgbV9yYW1TaXplKSkKICAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkK
KyAgICAsIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KDApCisgICAgLCBtX3NpemVCZWZvcmVM
YXN0RnVsbENvbGxlY3QoMCkKKyAgICAsIG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0KDApCisg
ICAgLCBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0
ZWRUaGlzQ3ljbGUoMCkKLSAgICAsIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUoMCkKKyAgICAs
IG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCgwKQogICAgICwgbV9tYXhFZGVu
U2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQ
ZXJDeWNsZSkKICAgICAsIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSkKQEAgLTI3NCw5
ICsyODAsMTUgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwg
bV9pc1NhZmVUb0NvbGxlY3QoZmFsc2UpCiAgICAgLCBtX3dyaXRlQmFycmllckJ1ZmZlcigyNTYp
CiAgICAgLCBtX3ZtKHZtKQotICAgICwgbV9sYXN0R0NMZW5ndGgoMCkKKyAgICAsIG1fbGFzdEZ1
bGxHQ0xlbmd0aCgwKQorICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RD
b2RlRGlzY2FyZFRpbWUoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKLSAgICAs
IG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhp
cykpCisgICAgLCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6Y3Jl
YXRlRnVsbFRpbWVyKHRoaXMpKQorI2lmIEVOQUJMRShHR0MpCisgICAgLCBtX2VkZW5BY3Rpdml0
eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRWRlblRpbWVyKHRoaXMpKQorI2Vs
c2UKKyAgICAsIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2sobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykK
KyNlbmRpZgogICAgICwgbV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMp
KQogICAgICwgbV9kZWZlcnJhbERlcHRoKDApCiB7CkBAIC0zMjMsNyArMzM1LDcgQEAgdm9pZCBI
ZWFwOjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCgpCiB7CiAgICAgLy8gT3VyIGNsaWVudHMg
ZG9uJ3Qga25vdyBleGFjdGx5IGhvdyBtdWNoIG1lbW9yeSB0aGV5CiAgICAgLy8gYXJlIGFiYW5k
b25pbmcgc28gd2UganVzdCBndWVzcyBmb3IgdGhlbS4KLSAgICBkb3VibGUgYWJhbmRvbmVkQnl0
ZXMgPSAwLjEwICogbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsKKyAgICBkb3VibGUgYWJhbmRvbmVk
Qnl0ZXMgPSAwLjEgKiBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogCiAgICAgLy8gV2Ugd2FudCB0
byBhY2NlbGVyYXRlIHRoZSBuZXh0IGNvbGxlY3Rpb24uIEJlY2F1c2UgbWVtb3J5IGhhcyBqdXN0
IAogICAgIC8vIGJlZW4gYWJhbmRvbmVkLCB0aGUgbmV4dCBjb2xsZWN0aW9uIGhhcyB0aGUgcG90
ZW50aWFsIHRvIApAQCAtMzM0LDkgKzM0NiwxMSBAQCB2b2lkIEhlYXA6OnJlcG9ydEFiYW5kb25l
ZE9iamVjdEdyYXBoKCkKIAogdm9pZCBIZWFwOjpkaWRBYmFuZG9uKHNpemVfdCBieXRlcykKIHsK
LSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2st
PmRpZEFsbG9jYXRlKG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVzQWJhbmRvbmVk
VGhpc0N5Y2xlKTsKLSAgICBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlICs9IGJ5dGVzOworICAg
IGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2Fs
bGJhY2stPmRpZEFsbG9jYXRlKAorICAgICAgICAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAt
IG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSAr
IG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCk7CisgICAgfQorICAgIG1fYnl0
ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCArPSBieXRlczsKIH0KIAogdm9pZCBIZWFw
Ojpwcm90ZWN0KEpTVmFsdWUgaykKQEAgLTg0Niw4ICs4NjAsNyBAQCB2b2lkIEhlYXA6OmNvbGxl
Y3RBbGxHYXJiYWdlKCkKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOwotICAgIGNvbGxlY3Qo
KTsKKyAgICBjb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKIAogICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKCJHYXJiYWdlIENvbGxlY3Rpb246IFN3ZWVwaW5nIik7CiAgICAgRGVsYXll
ZFJlbGVhc2VTY29wZSBkZWxheWVkUmVsZWFzZVNjb3BlKG1fb2JqZWN0U3BhY2UpOwpAQCAtODU3
LDcgKzg3MCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogCiBzdGF0aWMgZG91
YmxlIG1pbnV0ZSA9IDYwLjA7CiAKLXZvaWQgSGVhcDo6Y29sbGVjdCgpCit2b2lkIEhlYXA6OmNv
bGxlY3QoSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICNpZiBFTkFCTEUoQUxMT0NB
VElPTl9MT0dHSU5HKQogICAgIGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRpbmcgY29sbGVjdGlvbi5c
biIpOwpAQCAtODgwLDcgKzg5Myw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAgICAgUkVMRUFT
RV9BU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKIAogICAgIHN1
c3BlbmRDb21waWxlclRocmVhZHMoKTsKLSAgICB3aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisgICAg
d2lsbFN0YXJ0Q29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSk7CiAKICAgICBkb3VibGUgZ2NTdGFy
dFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCkBAIC05MjcsMTAg
Kzk0MCwxMCBAQCB2b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2VuZGlmCiB9
CiAKLXZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigpCit2b2lkIEhlYXA6OndpbGxTdGFy
dENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICAgICBHQ1BIQVNF
KFN0YXJ0aW5nQ29sbGVjdGlvbik7Ci0gICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oKSkg
eworICAgIGlmIChzaG91bGREb0Z1bGxDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKSkgewogICAg
ICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBGdWxsQ29sbGVjdGlvbjsKICAgICAgICAgbV9z
bG90VmlzaXRvci5jbGVhck1hcmtTdGFjaygpOwogICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxl
Y3Rpb24gPSBmYWxzZTsKQEAgLTk0MSwxMSArOTU0LDE5IEBAIHZvaWQgSGVhcDo6d2lsbFN0YXJ0
Q29sbGVjdGlvbigpCiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAg
ZGF0YUxvZygiRWRlbkNvbGxlY3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9vcGVyYXRpb25J
blByb2dyZXNzID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPT0gRnVsbENvbGxlY3Rpb24pIHsKKyAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xs
ZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7
CiAgICAgICAgIG1fZXh0cmFNZW1vcnlVc2FnZSA9IDA7CiAKLSAgICBpZiAobV9hY3Rpdml0eUNh
bGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CisgICAg
ICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICAgICAgbV9mdWxsQWN0aXZp
dHlDYWxsYmFjay0+d2lsbENvbGxlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKTsKKyAgICAgICAgbV9zaXpl
QmVmb3JlTGFzdEVkZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNB
bGxvY2F0ZWRUaGlzQ3ljbGU7CisgICAgfQorCisgICAgaWYgKG1fZWRlbkFjdGl2aXR5Q2FsbGJh
Y2spCisgICAgICAgIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiB9CiAK
IHZvaWQgSGVhcDo6ZGVsZXRlT2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpCkBAIC0xMDQzLDIw
ICsxMDY0LDI2IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAg
IC8vIGZpeGVkIG1pbmltdW0uCiAgICAgICAgIG1fbWF4SGVhcFNpemUgPSBtYXgobWluSGVhcFNp
emUobV9oZWFwVHlwZSwgbV9yYW1TaXplKSwgcHJvcG9ydGlvbmFsSGVhcFNpemUoY3VycmVudEhl
YXBTaXplLCBtX3JhbVNpemUpKTsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNp
emUgLSBjdXJyZW50SGVhcFNpemU7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0
ID0gY3VycmVudEhlYXBTaXplOworICAgICAgICBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVs
bENvbGxlY3QgPSAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNp
emUgPj0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCk7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBt
X21heEhlYXBTaXplIC0gY3VycmVudEhlYXBTaXplOworICAgICAgICBtX3NpemVBZnRlckxhc3RF
ZGVuQ29sbGVjdCA9IGN1cnJlbnRIZWFwU2l6ZTsKICAgICAgICAgZG91YmxlIGVkZW5Ub09sZEdl
bmVyYXRpb25SYXRpbyA9IChkb3VibGUpbV9tYXhFZGVuU2l6ZSAvIChkb3VibGUpbV9tYXhIZWFw
U2l6ZTsKICAgICAgICAgZG91YmxlIG1pbkVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA9IDEuMCAv
IDMuMDsKICAgICAgICAgaWYgKGVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA8IG1pbkVkZW5Ub09s
ZEdlbmVyYXRpb25SYXRpbykKICAgICAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9
IHRydWU7CiAgICAgICAgIG1fbWF4SGVhcFNpemUgKz0gY3VycmVudEhlYXBTaXplIC0gbV9zaXpl
QWZ0ZXJMYXN0Q29sbGVjdDsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUg
LSBjdXJyZW50SGVhcFNpemU7CisgICAgICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKSB7
CisgICAgICAgICAgICBBU1NFUlQoY3VycmVudEhlYXBTaXplID49IG1fc2l6ZUFmdGVyTGFzdEZ1
bGxDb2xsZWN0KTsKKyAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9j
YXRlKGN1cnJlbnRIZWFwU2l6ZSAtIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNp
emU7CiAgICAgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA9IDA7Ci0gICAgbV9ieXRlc0FiYW5k
b25lZFRoaXNDeWNsZSA9IDA7CiAKICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAg
ZGF0YUxvZyhjdXJyZW50SGVhcFNpemUgLyAxMDI0LCAiIGtiLCAiKTsKQEAgLTEwNjYsNyArMTA5
MywxMCBAQCB2b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiB7CiAgICAg
R0NQSEFTRShGaW5pc2hpbmdDb2xsZWN0aW9uKTsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RG
Ojptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBtX2xhc3RHQ0xlbmd0aCA9IGdj
RW5kVGltZSAtIGdjU3RhcnRUaW1lOworICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0g
RnVsbENvbGxlY3Rpb24pCisgICAgICAgIG1fbGFzdEZ1bGxHQ0xlbmd0aCA9IGdjRW5kVGltZSAt
IGdjU3RhcnRUaW1lOworICAgIGVsc2UKKyAgICAgICAgbV9sYXN0RWRlbkdDTGVuZ3RoID0gZ2NF
bmRUaW1lIC0gZ2NTdGFydFRpbWU7CiAKICAgICBpZiAoT3B0aW9uczo6cmVjb3JkR0NQYXVzZVRp
bWVzKCkpCiAgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShnY1N0YXJ0
VGltZSwgZ2NFbmRUaW1lKTsKQEAgLTExMDIsMTQgKzExMzIsMjQgQEAgdm9pZCBIZWFwOjptYXJr
RGVhZE9iamVjdHMoKQogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPE1hcmtPYmpl
Y3Q+KGl0ZXJhdGlvblNjb3BlKTsKIH0KIAotdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNr
KFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQordm9pZCBI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCiB7Ci0gICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gYWN0
aXZpdHlDYWxsYmFjazsKKyAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxs
YmFjazsKIH0KIAotR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFwOjphY3Rpdml0eUNhbGxiYWNrKCkK
K3ZvaWQgSGVhcDo6c2V0RWRlbkFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQogewotICAgIHJldHVybiBtX2FjdGl2aXR5
Q2FsbGJhY2suZ2V0KCk7CisgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2Fs
bGJhY2s7Cit9CisKK0dDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6ZnVsbEFjdGl2aXR5Q2FsbGJh
Y2soKQoreworICAgIHJldHVybiBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLmdldCgpOworfQorCitH
Q0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKK3sKKyAgICBy
ZXR1cm4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRJ
bmNyZW1lbnRhbFN3ZWVwZXIoUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IHN3ZWVwZXIp
CkBAIC0xMTI0LDE0ICsxMTY0LDE2IEBAIEluY3JlbWVudGFsU3dlZXBlciogSGVhcDo6c3dlZXBl
cigpCiAKIHZvaWQgSGVhcDo6c2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCBl
bmFibGUpCiB7Ci0gICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rpdml0
eUNhbGxiYWNrLT5zZXRFbmFibGVkKGVuYWJsZSk7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spCisgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJsZWQoZW5hYmxl
KTsKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZp
dHlDYWxsYmFjay0+c2V0RW5hYmxlZChlbmFibGUpOwogfQogCiB2b2lkIEhlYXA6OmRpZEFsbG9j
YXRlKHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAg
ICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3lj
bGUgKyBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKTsKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlD
YWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29s
bGVjdCk7CiAgICAgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArPSBieXRlczsKIH0KIApAQCAt
MTIxNCwxMSArMTI1NiwyNyBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKEpT
Q2VsCiAjZW5kaWYKIH0KIAotYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkgY29u
c3QKK2Jvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVl
c3RlZENvbGxlY3Rpb25UeXBlKSBjb25zdAogewogI2lmIEVOQUJMRShHR0MpCi0gICAgcmV0dXJu
IE9wdGlvbnM6OmFsd2F5c0RvRnVsbENvbGxlY3Rpb24oKSB8fCBtX3Nob3VsZERvRnVsbENvbGxl
Y3Rpb247CisgICAgaWYgKE9wdGlvbnM6OmFsd2F5c0RvRnVsbENvbGxlY3Rpb24oKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7
CisgICAgY2FzZSBFZGVuQ29sbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNh
c2UgRnVsbENvbGxlY3Rpb246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQW55Q29s
bGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdGVkQ29sbGVj
dGlvblR5cGUpOwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgQ29waWVkU3BhY2U7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAg
IGNsYXNzIEV4ZWN1dGFibGVCYXNlOworICAgIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7
CisgICAgY2xhc3MgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFzcyBHQ0FjdGl2aXR5
Q2FsbGJhY2s7CiAgICAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOwogICAgIGNsYXNzIEds
b2JhbENvZGVCbG9jazsKQEAgLTExOCw4ICsxMjAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIE1hcmtlZFNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0K
ICAgICAgICAgTWFjaGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4gbV9tYWNo
aW5lVGhyZWFkczsgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxs
YmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBmdWxsQWN0aXZpdHlD
YWxsYmFjaygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sq
IGVkZW5BY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0RnVsbEFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
Pik7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RWRlbkFjdGl2aXR5Q2FsbGJh
Y2soUGFzc1JlZlB0cjxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPik7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCk7CiAK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgSW5jcmVtZW50YWxTd2VlcGVyKiBzd2VlcGVyKCk7
CkBAIC0xNDgsOSArMTUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgICAgICBib29sIHNob3VsZENv
bGxlY3QoKTsKLSAgICAgICAgdm9pZCBnY1RpbWVyRGlkRmlyZSgpIHsgbV9zaG91bGREb0Z1bGxD
b2xsZWN0aW9uID0gdHJ1ZTsgfQotICAgICAgICB2b2lkIHNldFNob3VsZERvRnVsbENvbGxlY3Rp
b24oYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKSB7IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlv
biA9IHNob3VsZERvRnVsbENvbGxlY3Rpb247IH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjb2xsZWN0KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChI
ZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CiAgICAgICAgIGJv
b2wgY29sbGVjdElmTmVjZXNzYXJ5T3JEZWZlcigpOyAvLyBSZXR1cm5zIHRydWUgaWYgaXQgZGlk
IGNvbGxlY3QuCiAKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNv
c3QpOwpAQCAtMTg2LDggKzE4OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBk
aWRGaW5pc2hJdGVyYXRpbmcoKTsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3Rl
clJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAotICAgICAgICBkb3VibGUgbGFzdEdD
TGVuZ3RoKCkgeyByZXR1cm4gbV9sYXN0R0NMZW5ndGg7IH0KLSAgICAgICAgdm9pZCBpbmNyZWFz
ZUxhc3RHQ0xlbmd0aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEdDTGVuZ3RoICs9IGFtb3VudDsg
fQorICAgICAgICBkb3VibGUgbGFzdEZ1bGxHQ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dEZ1bGxHQ0xlbmd0aDsgfQorICAgICAgICBkb3VibGUgbGFzdEVkZW5HQ0xlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdEVkZW5HQ0xlbmd0aDsgfQorICAgICAgICB2b2lkIGluY3JlYXNlTGFz
dEZ1bGxHQ0xlbmd0aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEZ1bGxHQ0xlbmd0aCArPSBhbW91
bnQ7IH0KKworICAgICAgICBzaXplX3Qgc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdDsgfQorICAgICAgICBzaXpl
X3Qgc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0
ZXJMYXN0RWRlbkNvbGxlY3Q7IH0KKyAgICAgICAgc2l6ZV90IHNpemVCZWZvcmVMYXN0RnVsbENv
bGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7IH0K
KyAgICAgICAgc2l6ZV90IHNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0OyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBkZWxldGVBbGxDb21waWxlZENvZGUoKTsKICAgICAgICAgdm9pZCBkZWxldGVB
bGxVbmxpbmtlZEZ1bmN0aW9uQ29kZSgpOwpAQCAtMjUyLDcgKzI2MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29z
dFNsb3dDYXNlKHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRz
KCk7Ci0gICAgICAgIHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbigpOworICAgICAgICB2b2lkIHdp
bGxTdGFydENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSk7CiAgICAgICAg
IHZvaWQgZGVsZXRlT2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpOwogICAgICAgICB2b2lkIGZs
dXNoT2xkU3RydWN0dXJlSURUYWJsZXMoKTsKICAgICAgICAgdm9pZCBmbHVzaFdyaXRlQmFycmll
ckJ1ZmZlcigpOwpAQCAtMjk2LDcgKzMwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHpvbWJpZnlEZWFkT2JqZWN0cygpOwogICAgICAgICB2b2lkIG1hcmtEZWFkT2JqZWN0cygp
OwogCi0gICAgICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbigpIGNvbnN0OworICAgICAg
ICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xs
ZWN0aW9uVHlwZSkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAK
ICAgICAgICAgSlNTdGFjayYgc3RhY2soKTsKQEAgLTMwOSw5ICszMTcsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNp
emVfdCBtX21pbkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RD
b2xsZWN0OworICAgICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Q7CisgICAg
ICAgIHNpemVfdCBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBt
X3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxh
c3RFZGVuQ29sbGVjdDsKIAogICAgICAgICBzaXplX3QgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNs
ZTsKLSAgICAgICAgc2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGU7CisgICAgICAgIHNp
emVfdCBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3Q7CiAgICAgICAgIHNpemVf
dCBtX21heEVkZW5TaXplOwogICAgICAgICBzaXplX3QgbV9tYXhIZWFwU2l6ZTsKICAgICAgICAg
Ym9vbCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247CkBAIC0zNDksMTIgKzM2MSwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgV3JpdGVCYXJyaWVyQnVmZmVyIG1fd3JpdGVCYXJyaWVyQnVm
ZmVyOwogCiAgICAgICAgIFZNKiBtX3ZtOwotICAgICAgICBkb3VibGUgbV9sYXN0R0NMZW5ndGg7
CisgICAgICAgIGRvdWJsZSBtX2xhc3RGdWxsR0NMZW5ndGg7CisgICAgICAgIGRvdWJsZSBtX2xh
c3RFZGVuR0NMZW5ndGg7CiAgICAgICAgIGRvdWJsZSBtX2xhc3RDb2RlRGlzY2FyZFRpbWU7CiAK
ICAgICAgICAgRG91Ymx5TGlua2VkTGlzdDxFeGVjdXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7
CiAgICAgICAgIAotICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5
Q2FsbGJhY2s7CisgICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2
aXR5Q2FsbGJhY2s7CisgICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZWRlbkFj
dGl2aXR5Q2FsbGJhY2s7CiAgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dl
ZXBlcjsKICAgICAgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja1NuYXBzaG90OwogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJ
KHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotZW51bSBIZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIEZ1bGxD
b2xsZWN0aW9uLCBFZGVuQ29sbGVjdGlvbiB9OworZW51bSBIZWFwT3BlcmF0aW9uIHsgTm9PcGVy
YXRpb24sIEFsbG9jYXRpb24sIEZ1bGxDb2xsZWN0aW9uLCBFZGVuQ29sbGVjdGlvbiwgQW55Q29s
bGVjdGlvbiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTY1ODI2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBIZWFwU3RhdGlzdGljczo6c2hvd09iamVjdFN0
YXRpc3RpYwogICAgIGRhdGFMb2dGKCJcbj09PSBIZWFwIFN0YXRpc3RpY3M6ID09PVxuIik7CiAg
ICAgZGF0YUxvZ0YoInNpemU6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFwLT5tX3Np
emVBZnRlckxhc3RDb2xsZWN0IC8gS0IpKTsKICAgICBkYXRhTG9nRigiY2FwYWNpdHk6ICVsZGtC
XG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFwLT5jYXBhY2l0eSgpIC8gS0IpKTsKLSAgICBkYXRh
TG9nRigicGF1c2UgdGltZTogJWxmbXNcblxuIiwgaGVhcC0+bV9sYXN0R0NMZW5ndGgpOworICAg
IGRhdGFMb2dGKCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBoZWFwLT5tX2xhc3RGdWxsR0NMZW5n
dGgpOwogCiAgICAgU3RvcmFnZVN0YXRpc3RpY3Mgc3RvcmFnZVN0YXRpc3RpY3M7CiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw4ICs4NSwxMCBAQCB2b2lkIEhlYXBUaW1lcjo6dGltZXJEaWRGaXJl
KENGUnVuTG9vcFRpCiAgICAgfQogCiAgICAgSGVhcFRpbWVyKiBoZWFwVGltZXIgPSAwOwotICAg
IGlmICh2bS0+aGVhcC5hY3Rpdml0eUNhbGxiYWNrKCkgJiYgdm0tPmhlYXAuYWN0aXZpdHlDYWxs
YmFjaygpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQotICAgICAgICBoZWFwVGltZXIgPSB2bS0+
aGVhcC5hY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgaWYgKHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNh
bGxiYWNrKCkgJiYgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+bV90aW1lci5nZXQo
KSA9PSB0aW1lcikKKyAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2Fs
bGJhY2soKTsKKyAgICBlbHNlIGlmICh2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpICYm
IHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIp
CisgICAgICAgIGhlYXBUaW1lciA9IHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCk7CiAg
ICAgZWxzZSBpZiAodm0tPmhlYXAuc3dlZXBlcigpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQog
ICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5zd2VlcGVyKCk7CiAgICAgZWxzZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTY1ODI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDIsNiArMjQyLDEwIEBAIHR5cGVkZWYgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2U7CiAg
ICAgdihkb3VibGUsIG1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24sIDAuOSkgXAogICAgIHYoZG91
YmxlLCBtaW5NYXJrZWRCbG9ja1V0aWxpemF0aW9uLCAwLjkpIFwKICAgICBcCisgICAgdihkb3Vi
bGUsIHBlcmNlbnRDUFVQZXJNQkZvckZ1bGxUaW1lciwgMC4wMDAzMTI1KSBcCisgICAgdihkb3Vi
bGUsIHBlcmNlbnRDUFVQZXJNQkZvckVkZW5UaW1lciwgMC4wMDI1KSBcCisgICAgdihkb3VibGUs
IGNvbGxlY3Rpb25UaW1lck1heFBlcmNlbnRDUFUsIDAuMDUpIFwKKyAgICBcCiAgICAgdihib29s
LCBmb3JjZVdlYWtSYW5kb21TZWVkLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGZvcmNlZFdl
YWtSYW5kb21TZWVkLCAwKSBcCiAgICAgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTQtMDMtMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KKworICAgICAgICBHQyB0aW1lciBzaG91bGQgaW50ZWxsaWdlbnRseSBjaG9vc2UgYmV0d2Vl
biBFZGVuQ29sbGVjdGlvbnMgYW5kIEZ1bGxDb2xsZWN0aW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjYxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIFVw
ZGF0ZWQgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja3MgZm9yIGJvdGggRWRlbiBhbmQgRnVsbCB0
aW1lcnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFj
a0lPUy5oOgorCiAyMDE0LTAzLTE4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY1ODE1LgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0
aXZpdHlDYWxsYmFja0lPUy5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywyNiArMjcsNDIgQEAKICNkZWZpbmUgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lP
U19oCiAKICNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvR0NBY3Rpdml0eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRWRlbkdD
QWN0aXZpdHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJTYWZlR0NB
Y3Rpdml0eUNhbGxiYWNrIGZpbmFsIDogcHVibGljIEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxs
YmFjayB7CitjbGFzcyBXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayBmaW5hbCA6IHB1Ymxp
YyBKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkhlYXAqIGhlYXAp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNy
ZWF0ZShKU0M6OkhlYXAqIGhlYXApCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIH5XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CisgICAg
dmlydHVhbCB+V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KIAog
cHJpdmF0ZToKLSAgICBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkK
LSAgICAgICAgOiBKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFk
UnVuTG9vcCgpKQorICAgIFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCog
aGVhcCkKKyAgICAgICAgOiBKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhy
ZWFkUnVuTG9vcCgpKQogICAgIHsKICAgICB9CiB9OwogCitjbGFzcyBXZWJTYWZlRWRlbkdDQWN0
aXZpdHlDYWxsYmFjayBmaW5hbCA6IHB1YmxpYyBKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrPiBjcmVhdGUoSlNDOjpIZWFwKiBoZWFwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CisgICAgfQor
CisgICAgdmlydHVhbCB+V2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhKU0M6Okhl
YXAqIGhlYXApCisgICAgICAgIDogSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdl
YlRocmVhZFJ1bkxvb3AoKSkKKyAgICB7CisgICAgfQorfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1NfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227117</attachid>
            <date>2014-03-18 15:06:46 -0700</date>
            <delta_ts>2014-03-18 16:04:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318150531.patch</filename>
            <type>text/plain</type>
            <size>53095</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKworRWRlbkdDQWN0
aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDog
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3ZtLT5oZWFwLmNvbGxlY3QoRWRlbkNvbGxl
Y3Rpb24pOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV92bS0+aGVhcC5sYXN0RWRlbkdDTGVuZ3RoKCk7Cit9CisKK2Rv
dWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhl
YXAgPSAmbV92bS0+aGVhcDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZv
cmVMYXN0RWRlbkNvbGxlY3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6
ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAg
ICByZXR1cm4gMS4wOworICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikg
LyBkb3VibGUoc2l6ZUJlZm9yZSk7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
OjpnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0
aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZv
ckVkZW5UaW1lcigpLCBPcHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOwor
fQorCisjZWxzZQorCitFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSkKK3sK
K30KKwordm9pZCBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQor
Citkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKK30KKwor
ZG91YmxlIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7Cit9CisKK2RvdWJs
ZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZShzaXplX3QpCit7Cit9CisKKyNl
bmRpZiAvLyBVU0UoQ0YpCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrX2gKKyNkZWZpbmUgRWRlbkdDQWN0aXZpdHlDYWxsYmFj
a19oCisKKyNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxi
YWNrIHsKK3B1YmxpYzoKKyAgICBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKworICAg
IHZpcnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorI2lm
IFVTRShDRikKKyAgICBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9v
cFJlZiBydW5Mb29wKQorICAgICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBydW5Mb29w
KQorICAgIHsKKyAgICB9CisjZW5kaWYKKworICAgIHZpcnR1YWwgZG91YmxlIGxhc3RHQ0xlbmd0
aCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRl
cykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgb3ZlcnJpZGU7Cit9
OworCitpbmxpbmUgUGFzc1JlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxs
YmFjazo6Y3JlYXRlRWRlblRpbWVyKEhlYXAqIGhlYXApCit7CisgICAgcmV0dXJuIHNfc2hvdWxk
Q3JlYXRlR0NUaW1lciA/IGFkb3B0UmVmKG5ldyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAp
KSA6IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRWRlbkdD
QWN0aXZpdHlDYWxsYmFja19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxs
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlZNLmgi
CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKworI2lmICFQTEFURk9STShJT1MpCitj
b25zdCBkb3VibGUgcGFnaW5nVGltZU91dCA9IDAuMTsgLy8gVGltZSBpbiBzZWNvbmRzIHRvIGFs
bG93IG9wcG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2Vl
IGlmIHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKwor
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFw
KQorICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRnVsbEdDQWN0
aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0t
PmhlYXA7CisKKyNpZiAhUExBVEZPUk0oSU9TKQorICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGlmIChoZWFwLT5pc1BhZ2VkT3V0
KHN0YXJ0VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7CisgICAgICAgIGNhbmNlbCgpOworICAgICAg
ICBoZWFwLT5pbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgocGFnaW5nVGltZU91dCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIGhlYXAtPmNvbGxlY3QoRnVsbENvbGxlY3Rp
b24pOworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkK
K3sKKyAgICByZXR1cm4gbV92bS0+aGVhcC5sYXN0RnVsbEdDTGVuZ3RoKCk7Cit9CisKK2RvdWJs
ZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhlYXAg
PSAmbV92bS0+aGVhcDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZvcmVM
YXN0RnVsbENvbGxlY3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6ZUFm
dGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAgICBy
ZXR1cm4gMS4wOworICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikgLyBk
b3VibGUoc2l6ZUJlZm9yZSk7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpn
Y1RpbWVTbGljZShzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0aWNf
Y2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZvckZ1
bGxUaW1lcigpLCBPcHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOworfQor
CisjZWxzZQorCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
KEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKK3sKK30KKwordm9p
ZCBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQorCitkb3VibGUg
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKK30KKworZG91YmxlIEZ1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7Cit9CisKK2RvdWJsZSBGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZShzaXplX3QpCit7Cit9CisKKyNlbmRpZiAvLyBV
U0UoQ0YpCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrX2gKKyNkZWZpbmUgRnVsbEdDQWN0aXZpdHlDYWxsYmFja19oCisKKyNp
bmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsKK3B1
YmxpYzoKKyAgICBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKworICAgIHZpcnR1YWwg
dm9pZCBkb0NvbGxlY3Rpb24oKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorI2lmIFVTRShDRikK
KyAgICBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5M
b29wKQorICAgICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBydW5Mb29wKQorICAgIHsK
KyAgICB9CisjZW5kaWYKKworICAgIHZpcnR1YWwgZG91YmxlIGxhc3RHQ0xlbmd0aCgpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgb3ZlcnJpZGU7Cit9OworCitpbmxp
bmUgUGFzc1JlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3Jl
YXRlRnVsbFRpbWVyKEhlYXAqIGhlYXApCit7CisgICAgcmV0dXJuIHNfc2hvdWxkQ3JlYXRlR0NU
aW1lciA/IGFkb3B0UmVmKG5ldyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxw
dHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRnVsbEdDQWN0aXZpdHlD
YWxsYmFja19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0
aXZpdHlDYWxsYmFjay5jcHAJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDM5
ICs0NywyNiBAQCBib29sIEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRDcmVhdGVHCiAKICNp
ZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKIAotY29uc3QgZG91YmxlIGdjVGltZVNsaWNlUGVy
TUIgPSAwLjAxOyAvLyBQZXJjZW50YWdlIG9mIENQVSB0aW1lIHdlIHdpbGwgc3BlbmQgdG8gcmVj
bGFpbSAxIE1CCi1jb25zdCBkb3VibGUgbWF4R0NUaW1lU2xpY2UgPSAwLjA1OyAvLyBUaGUgbWF4
aW11bSBhbW91bnQgb2YgQ1BVIHRpbWUgd2Ugd2FudCB0byB1c2UgZm9yIG9wcG9ydHVuaXN0aWMg
dGltZXItdHJpZ2dlcmVkIGNvbGxlY3Rpb25zLgogY29uc3QgZG91YmxlIHRpbWVyU2xvcCA9IDIu
MDsgLy8gRnVkZ2UgZmFjdG9yIHRvIGF2b2lkIHBlcmZvcm1hbmNlIGNvc3Qgb2YgcmVzZXR0aW5n
IHRpbWVyLgogCi0jaWYgIVBMQVRGT1JNKElPUykKLWNvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0
ID0gMC4xOyAvLyBUaW1lIGluIHNlY29uZHMgdG8gYWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0
byBpdGVyYXRlIG92ZXIgYWxsIGJsb2NrcyB0byBzZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0
LgotI2VuZGlmCi0KLSNpZiAhVVNFKENGKQotY29uc3QgZG91YmxlIGhvdXIgPSA2MCAqIDYwOwot
I2VuZGlmCi0KICNpZiBVU0UoQ0YpCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0
aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAt
PnZtKCksIENGUnVuTG9vcEdldEN1cnJlbnQoKSkKLSAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7
CiB9CiAKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6
OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAg
ICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpLCBydW5Mb29wKQotICAgICwgbV9kZWxh
eShzX2RlY2FkZSkKIHsKIH0KICNlbGlmIFBMQVRGT1JNKEVGTCkKLURlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK0dDQWN0aXZp
dHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCiAgICAgOiBHQ0FjdGl2
aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwgV1RGOjppc01haW5UaHJlYWQoKSkKLSAgICAsIG1fZGVs
YXkoaG91cikKIHsKIH0KICNlbmRpZgogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmRvV29yaygpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKIHsKICAgICBIZWFw
KiBoZWFwID0gJm1fdm0tPmhlYXA7CiAgICAgaWYgKCFpc0VuYWJsZWQoKSkKQEAgLTkxLDIwICs3
OCwxMSBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSNpZiAhUExBVEZPUk0oSU9TKQotICAgIGRvdWJsZSBzdGFydFRp
bWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIGlmIChoZWFwLT5p
c1BhZ2VkT3V0KHN0YXJ0VGltZSArIHBhZ2luZ1RpbWVPdXQpKSB7Ci0gICAgICAgIGhlYXAtPmFj
dGl2aXR5Q2FsbGJhY2soKS0+Y2FuY2VsKCk7Ci0gICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEdD
TGVuZ3RoKHBhZ2luZ1RpbWVPdXQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0g
ICAgaGVhcC0+Z2NUaW1lckRpZEZpcmUoKTsKLSAgICBoZWFwLT5jb2xsZWN0KCk7CisgICAgZG9D
b2xsZWN0aW9uKCk7CiB9Ci0gICAgCisKICNpZiBVU0UoQ0YpCi12b2lkIERlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQordm9pZCBHQ0FjdGl2
aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIoZG91YmxlIG5ld0RlbGF5KQogewogICAgIGlmIChu
ZXdEZWxheSAqIHRpbWVyU2xvcCA+IG1fZGVsYXkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMywx
MyArOTEsMTMgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZQogICAg
IENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGUnVuTG9vcFRp
bWVyR2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCkpIC0gZGVsdGEpOwogfQogCi12b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKK3ZvaWQgR0NBY3Rpdml0eUNh
bGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7CiAgICAgbV9kZWxheSA9IHNfZGVjYWRlOwogICAgIENG
UnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpICsgc19kZWNhZGUpOwogfQogI2VsaWYgUExBVEZPUk0oRUZMKQotdm9pZCBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkK
K3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkK
IHsKICAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1
cm47CkBAIC0xMzEsMTQgKzEwOSwxNCBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OnNjaGVkdWxlCiAgICAgbV90aW1lciA9IGFkZChuZXdEZWxheSwgdGhpcyk7CiB9CiAKLXZvaWQg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKIHsKLSAgICBtX2RlbGF5ID0gaG91cjsKKyAgICBtX2Rl
bGF5ID0gc19ob3VyOwogICAgIHN0b3AoKTsKIH0KICNlbmRpZgogCi12b2lkIERlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCBieXRlcykKK3ZvaWQgR0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QgYnl0ZXMpCiB7CiAjaWYgUExBVEZPUk0oRUZM
KQogICAgIGlmICghaXNFbmFibGVkKCkpCkBAIC0xNTEsNDIgKzEyOSw0MSBAQCB2b2lkIERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jCiAgICAgLy8gV2UgcHJldGVuZCBpdCdzIG9u
ZSBieXRlIHNvIHRoYXQgd2UgZG9uJ3QgaWdub3JlIHRoaXMgYWxsb2NhdGlvbiBlbnRpcmVseS4K
ICAgICBpZiAoIWJ5dGVzKQogICAgICAgICBieXRlcyA9IDE7Ci0gICAgSGVhcCogaGVhcCA9IHN0
YXRpY19jYXN0PEhlYXAqPigmbV92bS0+aGVhcCk7Ci0gICAgZG91YmxlIGdjVGltZVNsaWNlID0g
c3RkOjptaW4oKHN0YXRpY19jYXN0PGRvdWJsZT4oYnl0ZXMpIC8gTUIpICogZ2NUaW1lU2xpY2VQ
ZXJNQiwgbWF4R0NUaW1lU2xpY2UpOwotICAgIGRvdWJsZSBuZXdEZWxheSA9IGhlYXAtPmxhc3RH
Q0xlbmd0aCgpIC8gZ2NUaW1lU2xpY2U7CisgICAgZG91YmxlIGJ5dGVzRXhwZWN0ZWRUb1JlY2xh
aW0gPSBzdGF0aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAqIGRlYXRoUmF0ZSgpOworICAgIGRvdWJs
ZSBuZXdEZWxheSA9IGxhc3RHQ0xlbmd0aCgpIC8gZ2NUaW1lU2xpY2UoYnl0ZXNFeHBlY3RlZFRv
UmVjbGFpbSk7CiAgICAgc2NoZWR1bGVUaW1lcihuZXdEZWxheSk7CiB9CiAKLXZvaWQgRGVmYXVs
dEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OndpbGxDb2xsZWN0KCkKIHsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCi12b2lkIERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6
Y2FuY2VsKCkKIHsKICAgICBjYW5jZWxUaW1lcigpOwogfQogCiAjZWxzZQogCi1EZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCitH
Q0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAgIDog
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCkpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmso
KQogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNp
emVfdCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QpCiB7CiB9
CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBH
Q0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NB
Y3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCgpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlD
YWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0
aXZpdHlDYWxsYmFjay5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEs
NyBAQAogCiAjaW5jbHVkZSAiSGVhcFRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
IAogI2lmIFVTRShDRikKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgpAQCAtNDEsMjggKzQxLDQ0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwogCi1j
bGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgSGVhcFRpbWVyIHsKK2NsYXNzIEdDQWN0
aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBIZWFwVGltZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxHQ0FjdGl2aXR5Q2FsbGJhY2s+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWxsb2NhdGUoc2l6ZV90KSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3QoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkg
eyB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGVGdWxs
VGltZXIoSGVhcCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4g
Y3JlYXRlRWRlblRpbWVyKEhlYXAqKTsKKworICAgIEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZG9Db2xsZWN0aW9uKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNp
emVfdCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCk7CisgICAgdmlydHVhbCB2b2lk
IGNhbmNlbCgpOwogICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVk
OyB9CiAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFi
bGVkOyB9CiAKICAgICBzdGF0aWMgYm9vbCBzX3Nob3VsZENyZWF0ZUdDVGltZXI7CiAKIHByb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXN0R0NMZW5ndGgoKSA9IDA7CisgICAgdmlydHVh
bCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90IGJ5dGVzKSA9IDA7CisgICAgdmlydHVhbCBkb3Vi
bGUgZGVhdGhSYXRlKCkgPSAwOworCiAjaWYgVVNFKENGKQogICAgIEdDQWN0aXZpdHlDYWxsYmFj
ayhWTSogdm0sIENGUnVuTG9vcFJlZiBydW5Mb29wKQogICAgICAgICA6IEhlYXBUaW1lcih2bSwg
cnVuTG9vcCkKICAgICAgICAgLCBtX2VuYWJsZWQodHJ1ZSkKKyAgICAgICAgLCBtX2RlbGF5KHNf
ZGVjYWRlKQogICAgIHsKICAgICB9CiAjZWxpZiBQTEFURk9STShFRkwpCisgICAgc3RhdGljIGNv
bnN0IGRvdWJsZSBzX2hvdXIgPSA2MCAqIDYwOwogICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSog
dm0sIGJvb2wgZmxhZykKICAgICAgICAgOiBIZWFwVGltZXIodm0pCiAgICAgICAgICwgbV9lbmFi
bGVkKGZsYWcpCisgICAgICAgICwgbV9kZWxheShzX2hvdXIpCiAgICAgewogICAgIH0KICNlbHNl
CkBAIC03NCwyMyArOTAsMTAgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICBib29sIG1fZW5h
YmxlZDsKLX07Ci0KLWNsYXNzIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NB
Y3Rpdml0eUNhbGxiYWNrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGUoSGVhcCopOwotCi0gICAgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjayhIZWFwKik7Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQg
ZGlkQWxsb2NhdGUoc2l6ZV90KSBvdmVycmlkZTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0
dWFsIHZvaWQgd2lsbENvbGxlY3QoKSBvdmVycmlkZTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIHZvaWQgZG9Xb3JrKCkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoQ0YpCiBwcm90ZWN0ZWQ6
Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwg
Q0ZSdW5Mb29wUmVmKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2so
SGVhcCosIENGUnVuTG9vcFJlZik7CiAjZW5kaWYKICNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVG
TCkKIHByb3RlY3RlZDoKQEAgLTEwMiwxMSArMTA1LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsK
IAotaW5saW5lIFBhc3NPd25QdHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gRGVmYXVsdEdD
QWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKEhlYXAqIGhlYXApCi17Ci0gICAgcmV0dXJuIEdDQWN0
aXZpdHlDYWxsYmFjazo6c19zaG91bGRDcmVhdGVHQ1RpbWVyID8gYWRvcHRQdHIobmV3IERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpIDogbnVsbHB0cjsKLX0KLQotfQorfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJ
KHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiQ29weVZpc2l0b3JJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWxheWVkUmVs
ZWFzZVNjb3BlLmgiCisjaW5jbHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKICNpbmNsdWRlICJHQ0luY29taW5nUmVmQ291bnRlZFNldElubGluZXMuaCIKICNpbmNs
dWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI1Myw4ICsyNTUsMTIgQEAgSGVhcDo6SGVh
cChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9yYW1TaXplKHJhbVNpemUoKSkK
ICAgICAsIG1fbWluQnl0ZXNQZXJDeWNsZShtaW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNp
emUpKQogICAgICwgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCgwKQorICAgICwgbV9zaXplQWZ0ZXJM
YXN0RnVsbENvbGxlY3QoMCkKKyAgICAsIG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdCgwKQor
ICAgICwgbV9zaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3QoMCkKKyAgICAsIG1fc2l6ZUJlZm9yZUxh
c3RFZGVuQ29sbGVjdCgwKQogICAgICwgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSgwKQotICAg
ICwgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZSgwKQorICAgICwgbV9ieXRlc0FiYW5kb25lZFNp
bmNlTGFzdEZ1bGxDb2xsZWN0KDApCiAgICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJD
eWNsZSkKICAgICAsIG1fbWF4SGVhcFNpemUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9z
aG91bGREb0Z1bGxDb2xsZWN0aW9uKGZhbHNlKQpAQCAtMjc0LDkgKzI4MCwxNSBAQCBIZWFwOjpI
ZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX2lzU2FmZVRvQ29sbGVjdChm
YWxzZSkKICAgICAsIG1fd3JpdGVCYXJyaWVyQnVmZmVyKDI1NikKICAgICAsIG1fdm0odm0pCi0g
ICAgLCBtX2xhc3RHQ0xlbmd0aCgwKQorICAgICwgbV9sYXN0RnVsbEdDTGVuZ3RoKDApCisgICAg
LCBtX2xhc3RFZGVuR0NMZW5ndGgoMCkKICAgICAsIG1fbGFzdENvZGVEaXNjYXJkVGltZShXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKQotICAgICwgbV9hY3Rpdml0eUNhbGxiYWNr
KERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZnVsbEFj
dGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIodGhpcykp
CisjaWYgRU5BQkxFKEdHQykKKyAgICAsIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIodGhpcykpCisjZWxzZQorICAgICwgbV9lZGVuQWN0
aXZpdHlDYWxsYmFjayhtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKQorI2VuZGlmCiAgICAgLCBtX3N3
ZWVwZXIoSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2RlZmVycmFs
RGVwdGgoMCkKIHsKQEAgLTMyMyw3ICszMzUsNyBAQCB2b2lkIEhlYXA6OnJlcG9ydEFiYW5kb25l
ZE9iamVjdEdyYXBoKCkKIHsKICAgICAvLyBPdXIgY2xpZW50cyBkb24ndCBrbm93IGV4YWN0bHkg
aG93IG11Y2ggbWVtb3J5IHRoZXkKICAgICAvLyBhcmUgYWJhbmRvbmluZyBzbyB3ZSBqdXN0IGd1
ZXNzIGZvciB0aGVtLgotICAgIGRvdWJsZSBhYmFuZG9uZWRCeXRlcyA9IDAuMTAgKiBtX3NpemVB
ZnRlckxhc3RDb2xsZWN0OworICAgIGRvdWJsZSBhYmFuZG9uZWRCeXRlcyA9IDAuMSAqIG1fc2l6
ZUFmdGVyTGFzdENvbGxlY3Q7CiAKICAgICAvLyBXZSB3YW50IHRvIGFjY2VsZXJhdGUgdGhlIG5l
eHQgY29sbGVjdGlvbi4gQmVjYXVzZSBtZW1vcnkgaGFzIGp1c3QgCiAgICAgLy8gYmVlbiBhYmFu
ZG9uZWQsIHRoZSBuZXh0IGNvbGxlY3Rpb24gaGFzIHRoZSBwb3RlbnRpYWwgdG8gCkBAIC0zMzQs
OSArMzQ2LDExIEBAIHZvaWQgSGVhcDo6cmVwb3J0QWJhbmRvbmVkT2JqZWN0R3JhcGgoKQogCiB2
b2lkIEhlYXA6OmRpZEFiYW5kb24oc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChtX2FjdGl2aXR5
Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRl
c0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOwotICAgIG1f
Ynl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUgKz0gYnl0ZXM7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5
Q2FsbGJhY2spIHsKKyAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUo
CisgICAgICAgICAgICBtX3NpemVBZnRlckxhc3RDb2xsZWN0IC0gbV9zaXplQWZ0ZXJMYXN0RnVs
bENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFNp
bmNlTGFzdEZ1bGxDb2xsZWN0KTsKKyAgICB9CisgICAgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFz
dEZ1bGxDb2xsZWN0ICs9IGJ5dGVzOwogfQogCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBr
KQpAQCAtODQ2LDggKzg2MCw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAg
IGlmICghbV9pc1NhZmVUb0NvbGxlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2hvdWxk
RG9GdWxsQ29sbGVjdGlvbiA9IHRydWU7Ci0gICAgY29sbGVjdCgpOworICAgIGNvbGxlY3QoRnVs
bENvbGxlY3Rpb24pOwogCiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJh
Z2UgQ29sbGVjdGlvbjogU3dlZXBpbmciKTsKICAgICBEZWxheWVkUmVsZWFzZVNjb3BlIGRlbGF5
ZWRSZWxlYXNlU2NvcGUobV9vYmplY3RTcGFjZSk7CkBAIC04NTcsNyArODcwLDcgQEAgdm9pZCBI
ZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCiAKIHN0YXRpYyBkb3VibGUgbWludXRlID0gNjAuMDsK
IAotdm9pZCBIZWFwOjpjb2xsZWN0KCkKK3ZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlKQogewogI2lmIEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAg
ZGF0YUxvZ0YoIkpTQyBHQyBzdGFydGluZyBjb2xsZWN0aW9uLlxuIik7CkBAIC04ODAsNyArODkz
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KCkKICAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwogCiAgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFk
cygpOwotICAgIHdpbGxTdGFydENvbGxlY3Rpb24oKTsKKyAgICB3aWxsU3RhcnRDb2xsZWN0aW9u
KGNvbGxlY3Rpb25UeXBlKTsKIAogICAgIGRvdWJsZSBnY1N0YXJ0VGltZSA9IFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7CiAKQEAgLTkyNywxMCArOTQwLDEwIEBAIHZvaWQgSGVh
cDo6c3VzcGVuZENvbXBpbGVyVGhyZWFkcygpCiAjZW5kaWYKIH0KIAotdm9pZCBIZWFwOjp3aWxs
U3RhcnRDb2xsZWN0aW9uKCkKK3ZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3Bl
cmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogewogICAgIEdDUEhBU0UoU3RhcnRpbmdDb2xsZWN0aW9u
KTsKLSAgICBpZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbigpKSB7CisgICAgaWYgKHNob3VsZERv
RnVsbENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUpKSB7CiAgICAgICAgIG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9IEZ1bGxDb2xsZWN0aW9uOwogICAgICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFy
a1N0YWNrKCk7CiAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IGZhbHNlOwpAQCAt
OTQxLDExICs5NTQsMTkgQEAgdm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKCkKICAgICAg
ICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgICAgICBkYXRhTG9nKCJFZGVuQ29sbGVj
dGlvbiwgIik7CiAgICAgfQotICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENv
bGxlY3Rpb24pCisgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlv
bikgeworICAgICAgICBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVBZnRlckxh
c3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKICAgICAgICAgbV9leHRyYU1l
bW9yeVVzYWdlID0gMDsKIAotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1f
YWN0aXZpdHlDYWxsYmFjay0+d2lsbENvbGxlY3QoKTsKKyAgICAgICAgaWYgKG1fZnVsbEFjdGl2
aXR5Q2FsbGJhY2spCisgICAgICAgICAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29s
bGVjdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jl
c3MgPT0gRWRlbkNvbGxlY3Rpb24pOworICAgICAgICBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxl
Y3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsK
KyAgICB9CisKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVu
QWN0aXZpdHlDYWxsYmFjay0+d2lsbENvbGxlY3QoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVP
bGRDb2RlKGRvdWJsZSBnY1N0YXJ0VGltZSkKQEAgLTEwNDMsMjAgKzEwNjQsMjYgQEAgdm9pZCBI
ZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGltaXRzKCkKICAgICAgICAgLy8gZml4ZWQgbWluaW11bS4K
ICAgICAgICAgbV9tYXhIZWFwU2l6ZSA9IG1heChtaW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3Jh
bVNpemUpLCBwcm9wb3J0aW9uYWxIZWFwU2l6ZShjdXJyZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkp
OwogICAgICAgICBtX21heEVkZW5TaXplID0gbV9tYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6
ZTsKKyAgICAgICAgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7
CisgICAgICAgIG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCA9IDA7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgQVNTRVJUKGN1cnJlbnRIZWFwU2l6ZSA+PSBtX3NpemVBZnRlckxh
c3RDb2xsZWN0KTsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJy
ZW50SGVhcFNpemU7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0ID0gY3VycmVu
dEhlYXBTaXplOwogICAgICAgICBkb3VibGUgZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvID0gKGRv
dWJsZSltX21heEVkZW5TaXplIC8gKGRvdWJsZSltX21heEhlYXBTaXplOwogICAgICAgICBkb3Vi
bGUgbWluRWRlblRvT2xkR2VuZXJhdGlvblJhdGlvID0gMS4wIC8gMy4wOwogICAgICAgICBpZiAo
ZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvIDwgbWluRWRlblRvT2xkR2VuZXJhdGlvblJhdGlvKQog
ICAgICAgICAgICAgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9t
YXhIZWFwU2l6ZSArPSBjdXJyZW50SGVhcFNpemUgLSBtX3NpemVBZnRlckxhc3RDb2xsZWN0Owog
ICAgICAgICBtX21heEVkZW5TaXplID0gbV9tYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsK
KyAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spIHsKKyAgICAgICAgICAgIEFTU0VS
VChjdXJyZW50SGVhcFNpemUgPj0gbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QpOworICAgICAg
ICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUoY3VycmVudEhlYXBTaXpl
IC0gbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
bV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9IGN1cnJlbnRIZWFwU2l6ZTsKICAgICBtX2J5dGVzQWxs
b2NhdGVkVGhpc0N5Y2xlID0gMDsKLSAgICBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlID0gMDsK
IAogICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICBkYXRhTG9nKGN1cnJlbnRIZWFw
U2l6ZSAvIDEwMjQsICIga2IsICIpOwpAQCAtMTA2Niw3ICsxMDkzLDEwIEBAIHZvaWQgSGVhcDo6
ZGlkRmluaXNoQ29sbGVjdGlvbihkb3VibGUgZ2MKIHsKICAgICBHQ1BIQVNFKEZpbmlzaGluZ0Nv
bGxlY3Rpb24pOwogICAgIGRvdWJsZSBnY0VuZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpOwotICAgIG1fbGFzdEdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRp
bWU7CisgICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAg
ICAgICAgbV9sYXN0RnVsbEdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7CisgICAg
ZWxzZQorICAgICAgICBtX2xhc3RFZGVuR0NMZW5ndGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0VGlt
ZTsKIAogICAgIGlmIChPcHRpb25zOjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkKICAgICAgICAgSGVh
cFN0YXRpc3RpY3M6OnJlY29yZEdDUGF1c2VUaW1lKGdjU3RhcnRUaW1lLCBnY0VuZFRpbWUpOwpA
QCAtMTEwMiwxNCArMTEzMiwyNCBAQCB2b2lkIEhlYXA6Om1hcmtEZWFkT2JqZWN0cygpCiAgICAg
bV9vYmplY3RTcGFjZS5mb3JFYWNoRGVhZENlbGw8TWFya09iamVjdD4oaXRlcmF0aW9uU2NvcGUp
OwogfQogCi12b2lkIEhlYXA6OnNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2
aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCit2b2lkIEhlYXA6OnNldEZ1bGxBY3Rpdml0
eUNhbGxiYWNrKFBhc3NSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlDYWxs
YmFjaykKIHsKLSAgICBtX2FjdGl2aXR5Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOworICAg
IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOwogfQogCi1HQ0FjdGl2
aXR5Q2FsbGJhY2sqIEhlYXA6OmFjdGl2aXR5Q2FsbGJhY2soKQordm9pZCBIZWFwOjpzZXRFZGVu
QWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2
aXR5Q2FsbGJhY2spCiB7Ci0gICAgcmV0dXJuIG1fYWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKKyAg
ICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxsYmFjazsKK30KKworR0NBY3Rp
dml0eUNhbGxiYWNrKiBIZWFwOjpmdWxsQWN0aXZpdHlDYWxsYmFjaygpCit7CisgICAgcmV0dXJu
IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2suZ2V0KCk7Cit9CisKK0dDQWN0aXZpdHlDYWxsYmFjayog
SGVhcDo6ZWRlbkFjdGl2aXR5Q2FsbGJhY2soKQoreworICAgIHJldHVybiBtX2VkZW5BY3Rpdml0
eUNhbGxiYWNrLmdldCgpOwogfQogCiB2b2lkIEhlYXA6OnNldEluY3JlbWVudGFsU3dlZXBlcihQ
YXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gc3dlZXBlcikKQEAgLTExMjQsMTQgKzExNjQs
MTYgQEAgSW5jcmVtZW50YWxTd2VlcGVyKiBIZWFwOjpzd2VlcGVyKCkKIAogdm9pZCBIZWFwOjpz
ZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKIHsKLSAgICBpZiAo
bV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJs
ZWQoZW5hYmxlKTsKKyAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9m
dWxsQWN0aXZpdHlDYWxsYmFjay0+c2V0RW5hYmxlZChlbmFibGUpOworICAgIGlmIChtX2VkZW5B
Y3Rpdml0eUNhbGxiYWNrKQorICAgICAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5zZXRFbmFi
bGVkKGVuYWJsZSk7CiB9CiAKIHZvaWQgSGVhcDo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQog
ewotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFj
ay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9u
ZWRUaGlzQ3ljbGUpOworICAgIGlmIChtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICBt
X2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5kaWRBbGxvY2F0ZShtX2J5dGVzQWxsb2NhdGVkVGhpc0N5
Y2xlICsgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0KTsKICAgICBtX2J5dGVz
QWxsb2NhdGVkVGhpc0N5Y2xlICs9IGJ5dGVzOwogfQogCkBAIC0xMjE0LDExICsxMjU2LDI3IEBA
IHZvaWQgSGVhcDo6Zmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIoSlNDZWwKICNlbmRpZgogfQogCi1i
b29sIEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oKSBjb25zdAorYm9vbCBIZWFwOjpzaG91
bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5cGUp
IGNvbnN0CiB7CiAjaWYgRU5BQkxFKEdHQykKLSAgICByZXR1cm4gT3B0aW9uczo6YWx3YXlzRG9G
dWxsQ29sbGVjdGlvbigpIHx8IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKKyAgICBpZiAoT3B0
aW9uczo6YWx3YXlzRG9GdWxsQ29sbGVjdGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHN3aXRjaCAocmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIHsKKyAgICBjYXNlIEVkZW5Db2xs
ZWN0aW9uOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBGdWxsQ29sbGVjdGlvbjoK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBBbnlDb2xsZWN0aW9uOgorICAgICAgICBy
ZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiAj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSk7CiAgICAgcmV0
dXJuIHRydWU7CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBD
b3BpZWRTcGFjZTsKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgRXhlY3V0YWJsZUJh
c2U7CisgICAgY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazsKKyAgICBjbGFzcyBGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFz
cyBHQ0F3YXJlSklUU3R1YlJvdXRpbmU7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwpAQCAt
MTE4LDggKzEyMCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFya2VkU3BhY2UmIG9i
amVjdFNwYWNlKCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhy
ZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxi
YWNrKCk7Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFj
ayhQYXNzT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4pOworICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGZ1bGxBY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogZWRlbkFjdGl2aXR5Q2FsbGJh
Y2soKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRGdWxsQWN0aXZpdHlDYWxs
YmFjayhQYXNzUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRFZGVuQWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEVkZW5H
Q0FjdGl2aXR5Q2FsbGJhY2s+KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRH
YXJiYWdlQ29sbGVjdGlvblRpbWVyRW5hYmxlZChib29sKTsKIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBJbmNyZW1lbnRhbFN3ZWVwZXIqIHN3ZWVwZXIoKTsKQEAgLTE0OCw5ICsxNTIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxl
Y3RBbGxHYXJiYWdlKCk7CiAgICAgICAgIGJvb2wgc2hvdWxkQ29sbGVjdCgpOwotICAgICAgICB2
b2lkIGdjVGltZXJEaWRGaXJlKCkgeyBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOyB9
Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxkRG9GdWxsQ29sbGVjdGlvbihib29sIHNob3VsZERvRnVs
bENvbGxlY3Rpb24pIHsgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0gc2hvdWxkRG9GdWxsQ29s
bGVjdGlvbjsgfQotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoKTsKKyAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVj
dGlvblR5cGUgPSBBbnlDb2xsZWN0aW9uKTsKICAgICAgICAgYm9vbCBjb2xsZWN0SWZOZWNlc3Nh
cnlPckRlZmVyKCk7IC8vIFJldHVybnMgdHJ1ZSBpZiBpdCBkaWQgY29sbGVjdC4KIAogICAgICAg
ICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdChzaXplX3QgY29zdCk7CkBAIC0xODYsOCArMTg4
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGRpZEZpbmlzaEl0ZXJhdGluZygp
OwogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0Nl
bGwqPiYgcm9vdHMpOwogCi0gICAgICAgIGRvdWJsZSBsYXN0R0NMZW5ndGgoKSB7IHJldHVybiBt
X2xhc3RHQ0xlbmd0aDsgfQotICAgICAgICB2b2lkIGluY3JlYXNlTGFzdEdDTGVuZ3RoKGRvdWJs
ZSBhbW91bnQpIHsgbV9sYXN0R0NMZW5ndGggKz0gYW1vdW50OyB9CisgICAgICAgIGRvdWJsZSBs
YXN0RnVsbEdDTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RnVsbEdDTGVuZ3RoOyB9Cisg
ICAgICAgIGRvdWJsZSBsYXN0RWRlbkdDTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWRl
bkdDTGVuZ3RoOyB9CisgICAgICAgIHZvaWQgaW5jcmVhc2VMYXN0RnVsbEdDTGVuZ3RoKGRvdWJs
ZSBhbW91bnQpIHsgbV9sYXN0RnVsbEdDTGVuZ3RoICs9IGFtb3VudDsgfQorCisgICAgICAgIHNp
emVfdCBzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXpl
QmVmb3JlTGFzdEVkZW5Db2xsZWN0OyB9CisgICAgICAgIHNpemVfdCBzaXplQWZ0ZXJMYXN0RWRl
bkNvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdDsg
fQorICAgICAgICBzaXplX3Qgc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6
ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0
RnVsbENvbGxlY3Q7IH0KIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFs
bENvbXBpbGVkQ29kZSgpOwogICAgICAgICB2b2lkIGRlbGV0ZUFsbFVubGlua2VkRnVuY3Rpb25D
b2RlKCk7CkBAIC0yNTIsNyArMjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uoc2l6ZV90KTsK
IAogICAgICAgICB2b2lkIHN1c3BlbmRDb21waWxlclRocmVhZHMoKTsKLSAgICAgICAgdm9pZCB3
aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisgICAgICAgIHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbihI
ZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKTsKICAgICAgICAgdm9pZCBkZWxldGVPbGRDb2Rl
KGRvdWJsZSBnY1N0YXJ0VGltZSk7CiAgICAgICAgIHZvaWQgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRh
YmxlcygpOwogICAgICAgICB2b2lkIGZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKCk7CkBAIC0yOTYs
NyArMzA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgem9tYmlmeURlYWRPYmpl
Y3RzKCk7CiAgICAgICAgIHZvaWQgbWFya0RlYWRPYmplY3RzKCk7CiAKLSAgICAgICAgYm9vbCBz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKCkgY29uc3Q7CisgICAgICAgIGJvb2wgc2hvdWxkRG9GdWxs
Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSBjb25zdDsK
ICAgICAgICAgc2l6ZV90IHNpemVBZnRlckNvbGxlY3QoKTsKIAogICAgICAgICBKU1N0YWNrJiBz
dGFjaygpOwpAQCAtMzA5LDkgKzMxNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29u
c3Qgc2l6ZV90IG1fcmFtU2l6ZTsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJD
eWNsZTsKICAgICAgICAgc2l6ZV90IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3Q7CisgICAgICAgIHNp
emVfdCBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUJl
Zm9yZUxhc3RGdWxsQ29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUFmdGVyTGFzdEVkZW5D
b2xsZWN0OworICAgICAgICBzaXplX3QgbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0OwogCiAg
ICAgICAgIHNpemVfdCBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlOwotICAgICAgICBzaXplX3Qg
bV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZTsKKyAgICAgICAgc2l6ZV90IG1fYnl0ZXNBYmFuZG9u
ZWRTaW5jZUxhc3RGdWxsQ29sbGVjdDsKICAgICAgICAgc2l6ZV90IG1fbWF4RWRlblNpemU7CiAg
ICAgICAgIHNpemVfdCBtX21heEhlYXBTaXplOwogICAgICAgICBib29sIG1fc2hvdWxkRG9GdWxs
Q29sbGVjdGlvbjsKQEAgLTM0OSwxMiArMzYxLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBXcml0ZUJhcnJpZXJCdWZmZXIgbV93cml0ZUJhcnJpZXJCdWZmZXI7CiAKICAgICAgICAgVk0q
IG1fdm07Ci0gICAgICAgIGRvdWJsZSBtX2xhc3RHQ0xlbmd0aDsKKyAgICAgICAgZG91YmxlIG1f
bGFzdEZ1bGxHQ0xlbmd0aDsKKyAgICAgICAgZG91YmxlIG1fbGFzdEVkZW5HQ0xlbmd0aDsKICAg
ICAgICAgZG91YmxlIG1fbGFzdENvZGVEaXNjYXJkVGltZTsKIAogICAgICAgICBEb3VibHlMaW5r
ZWRMaXN0PEV4ZWN1dGFibGVCYXNlPiBtX2NvbXBpbGVkQ29kZTsKICAgICAgICAgCi0gICAgICAg
IE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fYWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAg
UmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKKyAgICAg
ICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKICAg
ICAgICAgT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gbV9zd2VlcGVyOwogICAgICAgICBWZWN0
b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2NrU25hcHNob3Q7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkocmV2aXNpb24gMTY1ODI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEhlYXBPcGVy
YXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVsbENvbGxlY3Rpb24sIEVkZW5Db2xs
ZWN0aW9uIH07CitlbnVtIEhlYXBPcGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwg
RnVsbENvbGxlY3Rpb24sIEVkZW5Db2xsZWN0aW9uLCBBbnlDb2xsZWN0aW9uIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Rh
dGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMs
NyBAQCB2b2lkIEhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljCiAgICAgZGF0YUxv
Z0YoIlxuPT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKICAgICBkYXRhTG9nRigic2l6ZTog
JWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KGhlYXAtPm1fc2l6ZUFmdGVyTGFzdENvbGxlY3Qg
LyBLQikpOwogICAgIGRhdGFMb2dGKCJjYXBhY2l0eTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxv
bmc+KGhlYXAtPmNhcGFjaXR5KCkgLyBLQikpOwotICAgIGRhdGFMb2dGKCJwYXVzZSB0aW1lOiAl
bGZtc1xuXG4iLCBoZWFwLT5tX2xhc3RHQ0xlbmd0aCk7CisgICAgZGF0YUxvZ0YoInBhdXNlIHRp
bWU6ICVsZm1zXG5cbiIsIGhlYXAtPm1fbGFzdEZ1bGxHQ0xlbmd0aCk7CiAKICAgICBTdG9yYWdl
U3RhdGlzdGljcyBzdG9yYWdlU3RhdGlzdGljczsKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDgg
Kzg1LDEwIEBAIHZvaWQgSGVhcFRpbWVyOjp0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGkKICAgICB9
CiAKICAgICBIZWFwVGltZXIqIGhlYXBUaW1lciA9IDA7Ci0gICAgaWYgKHZtLT5oZWFwLmFjdGl2
aXR5Q2FsbGJhY2soKSAmJiB2bS0+aGVhcC5hY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0
KCkgPT0gdGltZXIpCi0gICAgICAgIGhlYXBUaW1lciA9IHZtLT5oZWFwLmFjdGl2aXR5Q2FsbGJh
Y2soKTsKKyAgICBpZiAodm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSAmJiB2bS0+aGVh
cC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQorICAgICAg
ICBoZWFwVGltZXIgPSB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygpOworICAgIGVsc2Ug
aWYgKHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkgJiYgdm0tPmhlYXAuZWRlbkFjdGl2
aXR5Q2FsbGJhY2soKS0+bV90aW1lci5nZXQoKSA9PSB0aW1lcikKKyAgICAgICAgaGVhcFRpbWVy
ID0gdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKTsKICAgICBlbHNlIGlmICh2bS0+aGVh
cC5zd2VlcGVyKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIpCiAgICAgICAgIGhlYXBUaW1lciA9
IHZtLT5oZWFwLnN3ZWVwZXIoKTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw2ICsyNDIsMTAg
QEAgdHlwZWRlZiBPcHRpb25SYW5nZSBvcHRpb25SYW5nZTsKICAgICB2KGRvdWJsZSwgbWluQ29w
aWVkQmxvY2tVdGlsaXphdGlvbiwgMC45KSBcCiAgICAgdihkb3VibGUsIG1pbk1hcmtlZEJsb2Nr
VXRpbGl6YXRpb24sIDAuOSkgXAogICAgIFwKKyAgICB2KGRvdWJsZSwgcGVyY2VudENQVVBlck1C
Rm9yRnVsbFRpbWVyLCAwLjAwMDMxMjUpIFwKKyAgICB2KGRvdWJsZSwgcGVyY2VudENQVVBlck1C
Rm9yRWRlblRpbWVyLCAwLjAwMjUpIFwKKyAgICB2KGRvdWJsZSwgY29sbGVjdGlvblRpbWVyTWF4
UGVyY2VudENQVSwgMC4wNSkgXAorICAgIFwKICAgICB2KGJvb2wsIGZvcmNlV2Vha1JhbmRvbVNl
ZWQsIGZhbHNlKSBcCiAgICAgdih1bnNpZ25lZCwgZm9yY2VkV2Vha1JhbmRvbVNlZWQsIDApIFwK
ICAgICBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjU4MjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wMy0xOCAg
TWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEdDIHRp
bWVyIHNob3VsZCBpbnRlbGxpZ2VudGx5IGNob29zZSBiZXR3ZWVuIEVkZW5Db2xsZWN0aW9ucyBh
bmQgRnVsbENvbGxlY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjgyNjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgVXBkYXRlZCBXZWJTYWZlR0NBY3Rp
dml0eUNhbGxiYWNrcyBmb3IgYm90aCBFZGVuIGFuZCBGdWxsIHRpbWVycy4KKworICAgICAgICAq
IHBsYXRmb3JtL2lvcy9XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmg6CisKIDIwMTQtMDMt
MTggIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNjU4MTUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgJ
KHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZl
R0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI2ICsyNyw0MiBA
QAogI2RlZmluZSBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TX2gKIAogI2luY2x1ZGUgIldl
YkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJh
Y2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2sgZmlu
YWwgOiBwdWJsaWMgSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrIHsKK2NsYXNzIFdlYlNh
ZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrIGZpbmFsIDogcHVibGljIEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU2FmZUdDQWN0
aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SGVhcCogaGVhcCkKKyAgICBzdGF0aWMgUGFzc093
blB0cjxXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SGVhcCogaGVh
cCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU2FmZUdDQWN0aXZpdHlD
YWxsYmFjayhoZWFwKSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV2ViU2FmZUZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfldlYlNhZmVH
Q0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJTYWZlRnVs
bEdDQWN0aXZpdHlDYWxsYmFjaygpIG92ZXJyaWRlIHsgfQogCiBwcml2YXRlOgotICAgIFdlYlNh
ZmVHQ0FjdGl2aXR5Q2FsbGJhY2soSlNDOjpIZWFwKiBoZWFwKQotICAgICAgICA6IEpTQzo6RGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBXZWJUaHJlYWRSdW5Mb29wKCkpCisgICAgV2Vi
U2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSlNDOjpIZWFwKiBoZWFwKQorICAgICAgICA6IEpT
Qzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBXZWJUaHJlYWRSdW5Mb29wKCkpCiAgICAg
ewogICAgIH0KIH07CiAKK2NsYXNzIFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIGZpbmFs
IDogcHVibGljIEpTQzo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6
OkhlYXAqIGhlYXApCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNhZmVF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJT
YWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjaygpIG92ZXJyaWRlIHsgfQorCitwcml2YXRlOgorICAg
IFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKKyAgICAgICAg
OiBKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgpKQor
ICAgIHsKKyAgICB9Cit9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gV2Vi
U2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPU19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227125</attachid>
            <date>2014-03-18 16:04:53 -0700</date>
            <delta_ts>2014-03-18 16:23:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318160336.patch</filename>
            <type>text/plain</type>
            <size>53185</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKworRWRlbkdDQWN0
aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDog
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3ZtLT5oZWFwLmNvbGxlY3QoRWRlbkNvbGxl
Y3Rpb24pOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV92bS0+aGVhcC5sYXN0RWRlbkdDTGVuZ3RoKCk7Cit9CisKK2Rv
dWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhl
YXAgPSAmbV92bS0+aGVhcDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZv
cmVMYXN0RWRlbkNvbGxlY3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6
ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAg
ICByZXR1cm4gMS4wOworICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikg
LyBkb3VibGUoc2l6ZUJlZm9yZSk7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
OjpnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0
aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZv
ckVkZW5UaW1lcigpLCBPcHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOwor
fQorCisjZWxzZQorCitFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSkKK3sK
K30KKwordm9pZCBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQor
Citkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworZG91YmxlIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpn
Y1RpbWVTbGljZShzaXplX3QpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyBVU0Uo
Q0YpCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFZGVuR0NBY3Rp
dml0eUNhbGxiYWNrX2gKKyNkZWZpbmUgRWRlbkdDQWN0aXZpdHlDYWxsYmFja19oCisKKyNpbmNs
dWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsKK3B1Ymxp
YzoKKyAgICBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBkb0NvbGxlY3Rpb24oKSBvdmVycmlkZTsKKworcHJvdGVjdGVkOgorI2lmIFVTRShDRikKKyAg
ICBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29w
KQorICAgICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBydW5Mb29wKQorICAgIHsKKyAg
ICB9CisjZW5kaWYKKworICAgIHZpcnR1YWwgZG91YmxlIGxhc3RHQ0xlbmd0aCgpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgb3ZlcnJpZGU7Cit9OworCitpbmxpbmUg
UGFzc1JlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
RWRlblRpbWVyKEhlYXAqIGhlYXApCit7CisgICAgcmV0dXJuIHNfc2hvdWxkQ3JlYXRlR0NUaW1l
ciA/IGFkb3B0UmVmKG5ldyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRWRlbkdDQWN0aXZpdHlDYWxs
YmFja19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxs
R0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKKworI2luY2x1ZGUgIlZNLmgiCisKKyNpZiBVU0Uo
Q0YpIHx8IFBMQVRGT1JNKEVGTCkKKworI2lmICFQTEFURk9STShJT1MpCitjb25zdCBkb3VibGUg
cGFnaW5nVGltZU91dCA9IDAuMTsgLy8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVu
aXN0aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFw
IGlzIHBhZ2VkIG91dC4KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworRnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDogR0NB
Y3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRnVsbEdDQWN0aXZpdHlDYWxsYmFj
azo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7CisKKyNp
ZiAhUExBVEZPUk0oSU9TKQorICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6Om1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpOworICAgIGlmIChoZWFwLT5pc1BhZ2VkT3V0KHN0YXJ0VGltZSAr
IHBhZ2luZ1RpbWVPdXQpKSB7CisgICAgICAgIGNhbmNlbCgpOworICAgICAgICBoZWFwLT5pbmNy
ZWFzZUxhc3RGdWxsR0NMZW5ndGgocGFnaW5nVGltZU91dCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKworICAgIGhlYXAtPmNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOworfQorCitk
b3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKKyAgICByZXR1
cm4gbV92bS0+aGVhcC5sYXN0RnVsbEdDTGVuZ3RoKCk7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhlYXAgPSAmbV92bS0+aGVh
cDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZvcmVMYXN0RnVsbENvbGxl
Y3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6ZUFmdGVyTGFzdEZ1bGxD
b2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAgICByZXR1cm4gMS4wOwor
ICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikgLyBkb3VibGUoc2l6ZUJl
Zm9yZSk7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZShz
aXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0aWNfY2FzdDxkb3VibGU+
KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZvckZ1bGxUaW1lcigpLCBP
cHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOworfQorCisjZWxzZQorCitG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAp
CisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKK3sKK30KKwordm9pZCBGdWxsR0NBY3Rp
dml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQorCitkb3VibGUgRnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworZG91Ymxl
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZShzaXplX3QpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyBVU0UoQ0YpCisKK30gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxs
YmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrX2gKKyNkZWZp
bmUgRnVsbEdDQWN0aXZpdHlDYWxsYmFja19oCisKKyNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2sg
OiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBGdWxsR0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkb0NvbGxlY3Rpb24oKSBvdmVy
cmlkZTsKKworcHJvdGVjdGVkOgorI2lmIFVTRShDRikKKyAgICBGdWxsR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQorICAgICAgICA6IEdDQWN0aXZp
dHlDYWxsYmFjayhoZWFwLCBydW5Mb29wKQorICAgIHsKKyAgICB9CisjZW5kaWYKKworICAgIHZp
cnR1YWwgZG91YmxlIGxhc3RHQ0xlbmd0aCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZG91Ymxl
IGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBkb3VibGUg
ZGVhdGhSYXRlKCkgb3ZlcnJpZGU7Cit9OworCitpbmxpbmUgUGFzc1JlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVyKEhlYXAqIGhlYXAp
Cit7CisgICAgcmV0dXJuIHNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/IGFkb3B0UmVmKG5ldyBGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gRnVsbEdDQWN0aXZpdHlDYWxsYmFja19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxs
YmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDM5ICs0NywyNiBAQCBib29sIEdDQWN0aXZp
dHlDYWxsYmFjazo6c19zaG91bGRDcmVhdGVHCiAKICNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVG
TCkKIAotY29uc3QgZG91YmxlIGdjVGltZVNsaWNlUGVyTUIgPSAwLjAxOyAvLyBQZXJjZW50YWdl
IG9mIENQVSB0aW1lIHdlIHdpbGwgc3BlbmQgdG8gcmVjbGFpbSAxIE1CCi1jb25zdCBkb3VibGUg
bWF4R0NUaW1lU2xpY2UgPSAwLjA1OyAvLyBUaGUgbWF4aW11bSBhbW91bnQgb2YgQ1BVIHRpbWUg
d2Ugd2FudCB0byB1c2UgZm9yIG9wcG9ydHVuaXN0aWMgdGltZXItdHJpZ2dlcmVkIGNvbGxlY3Rp
b25zLgogY29uc3QgZG91YmxlIHRpbWVyU2xvcCA9IDIuMDsgLy8gRnVkZ2UgZmFjdG9yIHRvIGF2
b2lkIHBlcmZvcm1hbmNlIGNvc3Qgb2YgcmVzZXR0aW5nIHRpbWVyLgogCi0jaWYgIVBMQVRGT1JN
KElPUykKLWNvbnN0IGRvdWJsZSBwYWdpbmdUaW1lT3V0ID0gMC4xOyAvLyBUaW1lIGluIHNlY29u
ZHMgdG8gYWxsb3cgb3Bwb3J0dW5pc3RpYyB0aW1lciB0byBpdGVyYXRlIG92ZXIgYWxsIGJsb2Nr
cyB0byBzZWUgaWYgdGhlIEhlYXAgaXMgcGFnZWQgb3V0LgotI2VuZGlmCi0KLSNpZiAhVVNFKENG
KQotY29uc3QgZG91YmxlIGhvdXIgPSA2MCAqIDYwOwotI2VuZGlmCi0KICNpZiBVU0UoQ0YpCi1E
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAq
IGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFw
KQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIENGUnVuTG9vcEdldEN1cnJl
bnQoKSkKLSAgICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAKLURlZmF1bHRHQ0FjdGl2aXR5
Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29w
UmVmIHJ1bkxvb3ApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
KiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayho
ZWFwLT52bSgpLCBydW5Mb29wKQotICAgICwgbV9kZWxheShzX2RlY2FkZSkKIHsKIH0KICNlbGlm
IFBMQVRGT1JNKEVGTCkKLURlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OkRlZmF1bHRHQ0FjdGl2
aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKK0dDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNh
bGxiYWNrKEhlYXAqIGhlYXApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwg
V1RGOjppc01haW5UaHJlYWQoKSkKLSAgICAsIG1fZGVsYXkoaG91cikKIHsKIH0KICNlbmRpZgog
Ci12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCit2b2lkIEdDQWN0aXZp
dHlDYWxsYmFjazo6ZG9Xb3JrKCkKIHsKICAgICBIZWFwKiBoZWFwID0gJm1fdm0tPmhlYXA7CiAg
ICAgaWYgKCFpc0VuYWJsZWQoKSkKQEAgLTkxLDIwICs3OCwxMSBAQCB2b2lkIERlZmF1bHRHQ0Fj
dGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiAh
UExBVEZPUk0oSU9TKQotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOwotICAgIGlmIChoZWFwLT5pc1BhZ2VkT3V0KHN0YXJ0VGltZSArIHBh
Z2luZ1RpbWVPdXQpKSB7Ci0gICAgICAgIGhlYXAtPmFjdGl2aXR5Q2FsbGJhY2soKS0+Y2FuY2Vs
KCk7Ci0gICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEdDTGVuZ3RoKHBhZ2luZ1RpbWVPdXQpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgaGVhcC0+Z2NUaW1lckRpZEZpcmUo
KTsKLSAgICBoZWFwLT5jb2xsZWN0KCk7CisgICAgZG9Db2xsZWN0aW9uKCk7CiB9Ci0gICAgCisK
ICNpZiBVU0UoQ0YpCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGlt
ZXIoZG91YmxlIG5ld0RlbGF5KQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGlt
ZXIoZG91YmxlIG5ld0RlbGF5KQogewogICAgIGlmIChuZXdEZWxheSAqIHRpbWVyU2xvcCA+IG1f
ZGVsYXkpCiAgICAgICAgIHJldHVybjsKQEAgLTExMywxMyArOTEsMTMgQEAgdm9pZCBEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZQogICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZp
cmVEYXRlKG1fdGltZXIuZ2V0KCksIENGUnVuTG9vcFRpbWVyR2V0TmV4dEZpcmVEYXRlKG1fdGlt
ZXIuZ2V0KCkpIC0gZGVsdGEpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmNhbmNlbFRpbWVyKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7
CiAgICAgbV9kZWxheSA9IHNfZGVjYWRlOwogICAgIENGUnVuTG9vcFRpbWVyU2V0TmV4dEZpcmVE
YXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgc19kZWNhZGUp
OwogfQogI2VsaWYgUExBVEZPUk0oRUZMKQotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
OjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNr
OjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsKICAgICBpZiAobmV3RGVsYXkgKiB0
aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47CkBAIC0xMzEsMTQgKzEwOSwxNCBA
QCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlCiAgICAgbV90aW1lciA9
IGFkZChuZXdEZWxheSwgdGhpcyk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6Y2FuY2VsVGltZXIoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkK
IHsKLSAgICBtX2RlbGF5ID0gaG91cjsKKyAgICBtX2RlbGF5ID0gc19ob3VyOwogICAgIHN0b3Ao
KTsKIH0KICNlbmRpZgogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9j
YXRlKHNpemVfdCBieXRlcykKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShz
aXplX3QgYnl0ZXMpCiB7CiAjaWYgUExBVEZPUk0oRUZMKQogICAgIGlmICghaXNFbmFibGVkKCkp
CkBAIC0xNTEsNDIgKzEyOSw0MSBAQCB2b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRp
ZEFsbG9jCiAgICAgLy8gV2UgcHJldGVuZCBpdCdzIG9uZSBieXRlIHNvIHRoYXQgd2UgZG9uJ3Qg
aWdub3JlIHRoaXMgYWxsb2NhdGlvbiBlbnRpcmVseS4KICAgICBpZiAoIWJ5dGVzKQogICAgICAg
ICBieXRlcyA9IDE7Ci0gICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAqPigmbV92bS0+
aGVhcCk7Ci0gICAgZG91YmxlIGdjVGltZVNsaWNlID0gc3RkOjptaW4oKHN0YXRpY19jYXN0PGRv
dWJsZT4oYnl0ZXMpIC8gTUIpICogZ2NUaW1lU2xpY2VQZXJNQiwgbWF4R0NUaW1lU2xpY2UpOwot
ICAgIGRvdWJsZSBuZXdEZWxheSA9IGhlYXAtPmxhc3RHQ0xlbmd0aCgpIC8gZ2NUaW1lU2xpY2U7
CisgICAgZG91YmxlIGJ5dGVzRXhwZWN0ZWRUb1JlY2xhaW0gPSBzdGF0aWNfY2FzdDxkb3VibGU+
KGJ5dGVzKSAqIGRlYXRoUmF0ZSgpOworICAgIGRvdWJsZSBuZXdEZWxheSA9IGxhc3RHQ0xlbmd0
aCgpIC8gZ2NUaW1lU2xpY2UoYnl0ZXNFeHBlY3RlZFRvUmVjbGFpbSk7CiAgICAgc2NoZWR1bGVU
aW1lcihuZXdEZWxheSk7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6d2ls
bENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKIHsKICAg
ICBjYW5jZWxUaW1lcigpOwogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNh
bmNlbCgpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKIHsKICAgICBjYW5jZWxU
aW1lcigpOwogfQogCiAjZWxzZQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXApCitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0
aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAt
PnZtKCkpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Xb3JrKCkK
K3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmsoKQogewogfQogCi12b2lkIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmRpZEFsbG9jYXRlKHNpemVfdCkKK3ZvaWQgR0NBY3Rpdml0eUNh
bGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QpCiB7CiB9CiAKLXZvaWQgRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6d2lsbENvbGxlY3QoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxD
b2xsZWN0KCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwo
KQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oCShyZXZpc2lv
biAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJh
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiAjaW5jbHVkZSAiSGVhcFRp
bWVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogI2lmIFVTRShDRikKICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgpAQCAtNDEsMjggKzQxLDQ0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwogCi1jbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sg
OiBwdWJsaWMgSGVhcFRpbWVyIHsKK2NsYXNzIEdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBI
ZWFwVGltZXIsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQWxsb2NhdGUoc2l6ZV90KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3Qo
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgeyB9CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGVGdWxsVGltZXIoSGVhcCopOworICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlRWRlblRpbWVyKEhlYXAqKTsK
KworICAgIEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9X
b3JrKCkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCk7CisgICAgdmlydHVhbCB2b2lk
IHdpbGxDb2xsZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOwogICAgIGJvb2wgaXNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCBzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2VuYWJsZWQgPSBlbmFibGVkOyB9CiAKICAgICBzdGF0aWMgYm9v
bCBzX3Nob3VsZENyZWF0ZUdDVGltZXI7CiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIGRvdWJs
ZSBsYXN0R0NMZW5ndGgoKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6
ZV90IGJ5dGVzKSA9IDA7CisgICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgPSAwOworCiAj
aWYgVVNFKENGKQogICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0sIENGUnVuTG9vcFJlZiBy
dW5Mb29wKQogICAgICAgICA6IEhlYXBUaW1lcih2bSwgcnVuTG9vcCkKICAgICAgICAgLCBtX2Vu
YWJsZWQodHJ1ZSkKKyAgICAgICAgLCBtX2RlbGF5KHNfZGVjYWRlKQogICAgIHsKICAgICB9CiAj
ZWxpZiBQTEFURk9STShFRkwpCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBzX2hvdXIgPSA2MCAq
IDYwOwogICAgIEdDQWN0aXZpdHlDYWxsYmFjayhWTSogdm0sIGJvb2wgZmxhZykKICAgICAgICAg
OiBIZWFwVGltZXIodm0pCiAgICAgICAgICwgbV9lbmFibGVkKGZsYWcpCisgICAgICAgICwgbV9k
ZWxheShzX2hvdXIpCiAgICAgewogICAgIH0KICNlbHNlCkBAIC03NCwyMyArOTAsMTAgQEAgcHJv
dGVjdGVkOgogI2VuZGlmCiAKICAgICBib29sIG1fZW5hYmxlZDsKLX07Ci0KLWNsYXNzIERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgR0NBY3Rpdml0eUNhbGxiYWNrIHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVh
dGUoSGVhcCopOwotCi0gICAgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7Ci0KLSAg
ICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZGlkQWxsb2NhdGUoc2l6ZV90KSBvdmVy
cmlkZTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgd2lsbENvbGxlY3QoKSBv
dmVycmlkZTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgb3Zl
cnJpZGU7Ci0KLSAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgZG9Xb3JrKCkgb3Zl
cnJpZGU7CiAKICNpZiBVU0UoQ0YpCiBwcm90ZWN0ZWQ6Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCosIENGUnVuTG9vcFJlZik7CiAj
ZW5kaWYKICNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKIHByb3RlY3RlZDoKQEAgLTEwMiwx
MSArMTA1LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotaW5saW5lIFBhc3NPd25QdHI8RGVm
YXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRl
KEhlYXAqIGhlYXApCi17Ci0gICAgcmV0dXJuIEdDQWN0aXZpdHlDYWxsYmFjazo6c19zaG91bGRD
cmVhdGVHQ1RpbWVyID8gYWRvcHRQdHIobmV3IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVh
cCkpIDogbnVsbHB0cjsKLX0KLQotfQorfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDE2NTgyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw4IEBACiAjaW5jbHVkZSAiQ29weVZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiREZH
V29ya2xpc3QuaCIKICNpbmNsdWRlICJEZWxheWVkUmVsZWFzZVNjb3BlLmgiCisjaW5jbHVkZSAi
RWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorI2luY2x1ZGUgIkZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2suaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJHQ0luY29t
aW5nUmVmQ291bnRlZFNldElubGluZXMuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKQEAgLTI1Myw4ICsyNTUsMTIgQEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBU
eXBlKQogICAgICwgbV9yYW1TaXplKHJhbVNpemUoKSkKICAgICAsIG1fbWluQnl0ZXNQZXJDeWNs
ZShtaW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNpemUpKQogICAgICwgbV9zaXplQWZ0ZXJM
YXN0Q29sbGVjdCgwKQorICAgICwgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QoMCkKKyAgICAs
IG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdCgwKQorICAgICwgbV9zaXplQWZ0ZXJMYXN0RWRl
bkNvbGxlY3QoMCkKKyAgICAsIG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdCgwKQogICAgICwg
bV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSgwKQotICAgICwgbV9ieXRlc0FiYW5kb25lZFRoaXND
eWNsZSgwKQorICAgICwgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0KDApCiAg
ICAgLCBtX21heEVkZW5TaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAgICAsIG1fbWF4SGVhcFNp
emUobV9taW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uKGZh
bHNlKQpAQCAtMjc0LDkgKzI4MCwxNSBAQCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgLCBtX2lzU2FmZVRvQ29sbGVjdChmYWxzZSkKICAgICAsIG1fd3JpdGVCYXJy
aWVyQnVmZmVyKDI1NikKICAgICAsIG1fdm0odm0pCi0gICAgLCBtX2xhc3RHQ0xlbmd0aCgwKQor
ICAgICwgbV9sYXN0RnVsbEdDTGVuZ3RoKDApCisgICAgLCBtX2xhc3RFZGVuR0NMZW5ndGgoMCkK
ICAgICAsIG1fbGFzdENvZGVEaXNjYXJkVGltZShXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpKQotICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVGdWxsVGltZXIodGhpcykpCisjaWYgRU5BQkxFKEdHQykKKyAgICAs
IG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2soR0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGlt
ZXIodGhpcykpCisjZWxzZQorICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayhtX2Z1bGxBY3Rp
dml0eUNhbGxiYWNrKQorI2VuZGlmCiAgICAgLCBtX3N3ZWVwZXIoSW5jcmVtZW50YWxTd2VlcGVy
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2RlZmVycmFsRGVwdGgoMCkKIHsKQEAgLTMyMyw3ICsz
MzUsNyBAQCB2b2lkIEhlYXA6OnJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBoKCkKIHsKICAgICAv
LyBPdXIgY2xpZW50cyBkb24ndCBrbm93IGV4YWN0bHkgaG93IG11Y2ggbWVtb3J5IHRoZXkKICAg
ICAvLyBhcmUgYWJhbmRvbmluZyBzbyB3ZSBqdXN0IGd1ZXNzIGZvciB0aGVtLgotICAgIGRvdWJs
ZSBhYmFuZG9uZWRCeXRlcyA9IDAuMTAgKiBtX3NpemVBZnRlckxhc3RDb2xsZWN0OworICAgIGRv
dWJsZSBhYmFuZG9uZWRCeXRlcyA9IDAuMSAqIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3Q7CiAKICAg
ICAvLyBXZSB3YW50IHRvIGFjY2VsZXJhdGUgdGhlIG5leHQgY29sbGVjdGlvbi4gQmVjYXVzZSBt
ZW1vcnkgaGFzIGp1c3QgCiAgICAgLy8gYmVlbiBhYmFuZG9uZWQsIHRoZSBuZXh0IGNvbGxlY3Rp
b24gaGFzIHRoZSBwb3RlbnRpYWwgdG8gCkBAIC0zMzQsOSArMzQ2LDExIEBAIHZvaWQgSGVhcDo6
cmVwb3J0QWJhbmRvbmVkT2JqZWN0R3JhcGgoKQogCiB2b2lkIEhlYXA6OmRpZEFiYW5kb24oc2l6
ZV90IGJ5dGVzKQogewotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0
aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1f
Ynl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOwotICAgIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUg
Kz0gYnl0ZXM7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spIHsKKyAgICAgICAgbV9m
dWxsQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUoCisgICAgICAgICAgICBtX3NpemVBZnRl
ckxhc3RDb2xsZWN0IC0gbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QgKyBtX2J5dGVzQWxsb2Nh
dGVkVGhpc0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0KTsKKyAg
ICB9CisgICAgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0ICs9IGJ5dGVzOwog
fQogCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBrKQpAQCAtODQ2LDggKzg2MCw3IEBAIHZv
aWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogICAgIGlmICghbV9pc1NhZmVUb0NvbGxlY3Qp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHRydWU7
Ci0gICAgY29sbGVjdCgpOworICAgIGNvbGxlY3QoRnVsbENvbGxlY3Rpb24pOwogCiAgICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbjogU3dlZXBpbmci
KTsKICAgICBEZWxheWVkUmVsZWFzZVNjb3BlIGRlbGF5ZWRSZWxlYXNlU2NvcGUobV9vYmplY3RT
cGFjZSk7CkBAIC04NTcsNyArODcwLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgp
CiAKIHN0YXRpYyBkb3VibGUgbWludXRlID0gNjAuMDsKIAotdm9pZCBIZWFwOjpjb2xsZWN0KCkK
K3ZvaWQgSGVhcDo6Y29sbGVjdChIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQogewogI2lm
IEVOQUJMRShBTExPQ0FUSU9OX0xPR0dJTkcpCiAgICAgZGF0YUxvZ0YoIkpTQyBHQyBzdGFydGlu
ZyBjb2xsZWN0aW9uLlxuIik7CkBAIC04ODAsNyArODkzLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0
KCkKICAgICBSRUxFQVNFX0FTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRp
b24pOwogCiAgICAgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAgIHdpbGxTdGFydENvbGxl
Y3Rpb24oKTsKKyAgICB3aWxsU3RhcnRDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKTsKIAogICAg
IGRvdWJsZSBnY1N0YXJ0VGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7
CiAKQEAgLTkyNywxMCArOTQwLDEwIEBAIHZvaWQgSGVhcDo6c3VzcGVuZENvbXBpbGVyVGhyZWFk
cygpCiAjZW5kaWYKIH0KIAotdm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKCkKK3ZvaWQg
SGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25UeXBlKQog
ewogICAgIEdDUEhBU0UoU3RhcnRpbmdDb2xsZWN0aW9uKTsKLSAgICBpZiAoc2hvdWxkRG9GdWxs
Q29sbGVjdGlvbigpKSB7CisgICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oY29sbGVjdGlv
blR5cGUpKSB7CiAgICAgICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEZ1bGxDb2xsZWN0aW9u
OwogICAgICAgICBtX3Nsb3RWaXNpdG9yLmNsZWFyTWFya1N0YWNrKCk7CiAgICAgICAgIG1fc2hv
dWxkRG9GdWxsQ29sbGVjdGlvbiA9IGZhbHNlOwpAQCAtOTQxLDExICs5NTQsMTkgQEAgdm9pZCBI
ZWFwOjp3aWxsU3RhcnRDb2xsZWN0aW9uKCkKICAgICAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkp
CiAgICAgICAgICAgICBkYXRhTG9nKCJFZGVuQ29sbGVjdGlvbiwgIik7CiAgICAgfQotICAgIGlm
IChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rpb24pCisgICAgaWYgKG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikgeworICAgICAgICBtX3NpemVCZWZv
cmVMYXN0RnVsbENvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xsZWN0ICsgbV9ieXRlc0FsbG9j
YXRlZFRoaXNDeWNsZTsKICAgICAgICAgbV9leHRyYU1lbW9yeVVzYWdlID0gMDsKIAotICAgIGlm
IChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+d2lsbENv
bGxlY3QoKTsKKyAgICAgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCisgICAgICAgICAg
ICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVjdCgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIEFTU0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRWRlbkNvbGxlY3Rpb24pOwor
ICAgICAgICBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3QgPSBtX3NpemVBZnRlckxhc3RDb2xs
ZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKKyAgICB9CisKKyAgICBpZiAobV9lZGVu
QWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+d2lsbENv
bGxlY3QoKTsKIH0KIAogdm9pZCBIZWFwOjpkZWxldGVPbGRDb2RlKGRvdWJsZSBnY1N0YXJ0VGlt
ZSkKQEAgLTEwNDMsMjAgKzEwNjQsMjYgQEAgdm9pZCBIZWFwOjp1cGRhdGVBbGxvY2F0aW9uTGlt
aXRzKCkKICAgICAgICAgLy8gZml4ZWQgbWluaW11bS4KICAgICAgICAgbV9tYXhIZWFwU2l6ZSA9
IG1heChtaW5IZWFwU2l6ZShtX2hlYXBUeXBlLCBtX3JhbVNpemUpLCBwcm9wb3J0aW9uYWxIZWFw
U2l6ZShjdXJyZW50SGVhcFNpemUsIG1fcmFtU2l6ZSkpOwogICAgICAgICBtX21heEVkZW5TaXpl
ID0gbV9tYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKKyAgICAgICAgbV9zaXplQWZ0ZXJM
YXN0RnVsbENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CisgICAgICAgIG1fYnl0ZXNBYmFuZG9u
ZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCA9IDA7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJU
KGN1cnJlbnRIZWFwU2l6ZSA+PSBtX3NpemVBZnRlckxhc3RDb2xsZWN0KTsKICAgICAgICAgbV9t
YXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50SGVhcFNpemU7CisgICAgICAgIG1f
c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0ID0gY3VycmVudEhlYXBTaXplOwogICAgICAgICBkb3Vi
bGUgZWRlblRvT2xkR2VuZXJhdGlvblJhdGlvID0gKGRvdWJsZSltX21heEVkZW5TaXplIC8gKGRv
dWJsZSltX21heEhlYXBTaXplOwogICAgICAgICBkb3VibGUgbWluRWRlblRvT2xkR2VuZXJhdGlv
blJhdGlvID0gMS4wIC8gMy4wOwogICAgICAgICBpZiAoZWRlblRvT2xkR2VuZXJhdGlvblJhdGlv
IDwgbWluRWRlblRvT2xkR2VuZXJhdGlvblJhdGlvKQogICAgICAgICAgICAgbV9zaG91bGREb0Z1
bGxDb2xsZWN0aW9uID0gdHJ1ZTsKICAgICAgICAgbV9tYXhIZWFwU2l6ZSArPSBjdXJyZW50SGVh
cFNpemUgLSBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogICAgICAgICBtX21heEVkZW5TaXplID0g
bV9tYXhIZWFwU2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKKyAgICAgICAgaWYgKG1fZnVsbEFjdGl2
aXR5Q2FsbGJhY2spIHsKKyAgICAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9z
aXplQWZ0ZXJMYXN0RnVsbENvbGxlY3QpOworICAgICAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxs
YmFjay0+ZGlkQWxsb2NhdGUoY3VycmVudEhlYXBTaXplIC0gbV9zaXplQWZ0ZXJMYXN0RnVsbENv
bGxlY3QpOworICAgICAgICB9CiAgICAgfQogCiAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9
IGN1cnJlbnRIZWFwU2l6ZTsKICAgICBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlID0gMDsKLSAg
ICBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlID0gMDsKIAogICAgIGlmIChPcHRpb25zOjpsb2dH
QygpKQogICAgICAgICBkYXRhTG9nKGN1cnJlbnRIZWFwU2l6ZSAvIDEwMjQsICIga2IsICIpOwpA
QCAtMTA2Niw3ICsxMDkzLDEwIEBAIHZvaWQgSGVhcDo6ZGlkRmluaXNoQ29sbGVjdGlvbihkb3Vi
bGUgZ2MKIHsKICAgICBHQ1BIQVNFKEZpbmlzaGluZ0NvbGxlY3Rpb24pOwogICAgIGRvdWJsZSBn
Y0VuZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIG1fbGFz
dEdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7CisgICAgaWYgKG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICAgICAgbV9sYXN0RnVsbEdDTGVuZ3Ro
ID0gZ2NFbmRUaW1lIC0gZ2NTdGFydFRpbWU7CisgICAgZWxzZQorICAgICAgICBtX2xhc3RFZGVu
R0NMZW5ndGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0VGltZTsKIAogICAgIGlmIChPcHRpb25zOjpy
ZWNvcmRHQ1BhdXNlVGltZXMoKSkKICAgICAgICAgSGVhcFN0YXRpc3RpY3M6OnJlY29yZEdDUGF1
c2VUaW1lKGdjU3RhcnRUaW1lLCBnY0VuZFRpbWUpOwpAQCAtMTEwMiwxNCArMTEzMiwyNCBAQCB2
b2lkIEhlYXA6Om1hcmtEZWFkT2JqZWN0cygpCiAgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoRGVh
ZENlbGw8TWFya09iamVjdD4oaXRlcmF0aW9uU2NvcGUpOwogfQogCi12b2lkIEhlYXA6OnNldEFj
dGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2Fs
bGJhY2spCit2b2lkIEhlYXA6OnNldEZ1bGxBY3Rpdml0eUNhbGxiYWNrKFBhc3NSZWZQdHI8RnVs
bEdDQWN0aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFjaykKIHsKLSAgICBtX2FjdGl2aXR5
Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOworICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2sg
PSBhY3Rpdml0eUNhbGxiYWNrOwogfQogCi1HQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmFjdGl2
aXR5Q2FsbGJhY2soKQordm9pZCBIZWFwOjpzZXRFZGVuQWN0aXZpdHlDYWxsYmFjayhQYXNzUmVm
UHRyPEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCiB7Ci0gICAgcmV0
dXJuIG1fYWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKKyAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNr
ID0gYWN0aXZpdHlDYWxsYmFjazsKK30KKworR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFwOjpmdWxs
QWN0aXZpdHlDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2su
Z2V0KCk7Cit9CisKK0dDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6ZWRlbkFjdGl2aXR5Q2FsbGJh
Y2soKQoreworICAgIHJldHVybiBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLmdldCgpOwogfQogCiB2
b2lkIEhlYXA6OnNldEluY3JlbWVudGFsU3dlZXBlcihQYXNzT3duUHRyPEluY3JlbWVudGFsU3dl
ZXBlcj4gc3dlZXBlcikKQEAgLTExMjQsMTQgKzExNjQsMTYgQEAgSW5jcmVtZW50YWxTd2VlcGVy
KiBIZWFwOjpzd2VlcGVyKCkKIAogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVy
RW5hYmxlZChib29sIGVuYWJsZSkKIHsKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAg
ICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJsZWQoZW5hYmxlKTsKKyAgICBpZiAobV9m
dWxsQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+c2V0
RW5hYmxlZChlbmFibGUpOworICAgIGlmIChtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKQorICAgICAg
ICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5zZXRFbmFibGVkKGVuYWJsZSk7CiB9CiAKIHZvaWQg
SGVhcDo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogewotICAgIGlmIChtX2FjdGl2aXR5Q2Fs
bGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0Fs
bG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUpOworICAgIGlmICht
X2VkZW5BY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT5k
aWRBbGxvY2F0ZShtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFNp
bmNlTGFzdEZ1bGxDb2xsZWN0KTsKICAgICBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICs9IGJ5
dGVzOwogfQogCkBAIC0xMjE0LDExICsxMjU2LDI3IEBAIHZvaWQgSGVhcDo6Zmx1c2hXcml0ZUJh
cnJpZXJCdWZmZXIoSlNDZWwKICNlbmRpZgogfQogCi1ib29sIEhlYXA6OnNob3VsZERvRnVsbENv
bGxlY3Rpb24oKSBjb25zdAorYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBP
cGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKEdH
QykKLSAgICByZXR1cm4gT3B0aW9uczo6YWx3YXlzRG9GdWxsQ29sbGVjdGlvbigpIHx8IG1fc2hv
dWxkRG9GdWxsQ29sbGVjdGlvbjsKKyAgICBpZiAoT3B0aW9uczo6YWx3YXlzRG9GdWxsQ29sbGVj
dGlvbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHN3aXRjaCAocmVxdWVzdGVkQ29s
bGVjdGlvblR5cGUpIHsKKyAgICBjYXNlIEVkZW5Db2xsZWN0aW9uOgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgY2FzZSBGdWxsQ29sbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgY2FzZSBBbnlDb2xsZWN0aW9uOgorICAgICAgICByZXR1cm4gbV9zaG91bGREb0Z1bGxDb2xs
ZWN0aW9uOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShy
ZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb3BpZWRTcGFjZTsKICAgICBjbGFzcyBD
b2RlQmxvY2s7CiAgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CisgICAgY2xhc3MgRWRlbkdDQWN0
aXZpdHlDYWxsYmFjazsKKyAgICBjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNs
YXNzIEdDQWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFzcyBHQ0F3YXJlSklUU3R1YlJvdXRpbmU7
CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOwpAQCAtMTE4LDggKzEyMCwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgTWFya2VkU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9v
YmplY3RTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7
IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
R0NBY3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7Ci0gICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlD
YWxsYmFjaz4pOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sq
IGZ1bGxBY3Rpdml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0
aXZpdHlDYWxsYmFjayogZWRlbkFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEZ1bGxHQ0Fj
dGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRFZGVu
QWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRHYXJiYWdlQ29sbGVjdGlvblRpbWVyRW5h
YmxlZChib29sKTsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBJbmNyZW1lbnRhbFN3ZWVw
ZXIqIHN3ZWVwZXIoKTsKQEAgLTE0OCw5ICsxNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAgICAgICAg
IGJvb2wgc2hvdWxkQ29sbGVjdCgpOwotICAgICAgICB2b2lkIGdjVGltZXJEaWRGaXJlKCkgeyBt
X3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOyB9Ci0gICAgICAgIHZvaWQgc2V0U2hvdWxk
RG9GdWxsQ29sbGVjdGlvbihib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24pIHsgbV9zaG91bGRE
b0Z1bGxDb2xsZWN0aW9uID0gc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsgfQotICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjb2xsZWN0KEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUgPSBBbnlDb2xsZWN0aW9u
KTsKICAgICAgICAgYm9vbCBjb2xsZWN0SWZOZWNlc3NhcnlPckRlZmVyKCk7IC8vIFJldHVybnMg
dHJ1ZSBpZiBpdCBkaWQgY29sbGVjdC4KIAogICAgICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5
Q29zdChzaXplX3QgY29zdCk7CkBAIC0xODYsOCArMTg4LDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGRpZEZpbmlzaEl0ZXJhdGluZygpOwogICAgICAgICB2b2lkIGdldENvbnNl
cnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCi0gICAgICAg
IGRvdWJsZSBsYXN0R0NMZW5ndGgoKSB7IHJldHVybiBtX2xhc3RHQ0xlbmd0aDsgfQotICAgICAg
ICB2b2lkIGluY3JlYXNlTGFzdEdDTGVuZ3RoKGRvdWJsZSBhbW91bnQpIHsgbV9sYXN0R0NMZW5n
dGggKz0gYW1vdW50OyB9CisgICAgICAgIGRvdWJsZSBsYXN0RnVsbEdDTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0RnVsbEdDTGVuZ3RoOyB9CisgICAgICAgIGRvdWJsZSBsYXN0RWRlbkdD
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWRlbkdDTGVuZ3RoOyB9CisgICAgICAgIHZv
aWQgaW5jcmVhc2VMYXN0RnVsbEdDTGVuZ3RoKGRvdWJsZSBhbW91bnQpIHsgbV9sYXN0RnVsbEdD
TGVuZ3RoICs9IGFtb3VudDsgfQorCisgICAgICAgIHNpemVfdCBzaXplQmVmb3JlTGFzdEVkZW5D
b2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0OyB9
CisgICAgICAgIHNpemVfdCBzaXplQWZ0ZXJMYXN0RWRlbkNvbGxlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6ZUJl
Zm9yZUxhc3RGdWxsQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUJlZm9yZUxhc3RG
dWxsQ29sbGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Q7IH0KIAogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRlbGV0ZUFsbENvbXBpbGVkQ29kZSgpOwogICAgICAg
ICB2b2lkIGRlbGV0ZUFsbFVubGlua2VkRnVuY3Rpb25Db2RlKCk7CkBAIC0yNTIsNyArMjYwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVwb3J0
RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uoc2l6ZV90KTsKIAogICAgICAgICB2b2lkIHN1c3BlbmRD
b21waWxlclRocmVhZHMoKTsKLSAgICAgICAgdm9pZCB3aWxsU3RhcnRDb2xsZWN0aW9uKCk7Cisg
ICAgICAgIHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIGNvbGxlY3Rpb25U
eXBlKTsKICAgICAgICAgdm9pZCBkZWxldGVPbGRDb2RlKGRvdWJsZSBnY1N0YXJ0VGltZSk7CiAg
ICAgICAgIHZvaWQgZmx1c2hPbGRTdHJ1Y3R1cmVJRFRhYmxlcygpOwogICAgICAgICB2b2lkIGZs
dXNoV3JpdGVCYXJyaWVyQnVmZmVyKCk7CkBAIC0yOTYsNyArMzA0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgem9tYmlmeURlYWRPYmplY3RzKCk7CiAgICAgICAgIHZvaWQgbWFy
a0RlYWRPYmplY3RzKCk7CiAKLSAgICAgICAgYm9vbCBzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkg
Y29uc3Q7CisgICAgICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9u
IHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSBjb25zdDsKICAgICAgICAgc2l6ZV90IHNpemVBZnRl
ckNvbGxlY3QoKTsKIAogICAgICAgICBKU1N0YWNrJiBzdGFjaygpOwpAQCAtMzA5LDkgKzMxNywx
MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fcmFtU2l6ZTsKICAg
ICAgICAgY29uc3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJDeWNsZTsKICAgICAgICAgc2l6ZV90IG1f
c2l6ZUFmdGVyTGFzdENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RGdWxs
Q29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdDsKKyAg
ICAgICAgc2l6ZV90IG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0OworICAgICAgICBzaXplX3Qg
bV9zaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0OwogCiAgICAgICAgIHNpemVfdCBtX2J5dGVzQWxs
b2NhdGVkVGhpc0N5Y2xlOwotICAgICAgICBzaXplX3QgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNs
ZTsKKyAgICAgICAgc2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdDsK
ICAgICAgICAgc2l6ZV90IG1fbWF4RWRlblNpemU7CiAgICAgICAgIHNpemVfdCBtX21heEhlYXBT
aXplOwogICAgICAgICBib29sIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKQEAgLTM0OSwxMiAr
MzYxLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXcml0ZUJhcnJpZXJCdWZmZXIgbV93
cml0ZUJhcnJpZXJCdWZmZXI7CiAKICAgICAgICAgVk0qIG1fdm07Ci0gICAgICAgIGRvdWJsZSBt
X2xhc3RHQ0xlbmd0aDsKKyAgICAgICAgZG91YmxlIG1fbGFzdEZ1bGxHQ0xlbmd0aDsKKyAgICAg
ICAgZG91YmxlIG1fbGFzdEVkZW5HQ0xlbmd0aDsKICAgICAgICAgZG91YmxlIG1fbGFzdENvZGVE
aXNjYXJkVGltZTsKIAogICAgICAgICBEb3VibHlMaW5rZWRMaXN0PEV4ZWN1dGFibGVCYXNlPiBt
X2NvbXBpbGVkQ29kZTsKICAgICAgICAgCi0gICAgICAgIE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJh
Y2s+IG1fYWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFj
az4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPEdDQWN0aXZpdHlDYWxs
YmFjaz4gbV9lZGVuQWN0aXZpdHlDYWxsYmFjazsKICAgICAgICAgT3duUHRyPEluY3JlbWVudGFs
U3dlZXBlcj4gbV9zd2VlcGVyOwogICAgICAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2Nr
U25hcHNob3Q7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cE9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBPcGVyYXRpb24uaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcE9wZXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi1lbnVtIEhlYXBPcGVyYXRpb24geyBOb09wZXJhdGlvbiwgQWxs
b2NhdGlvbiwgRnVsbENvbGxlY3Rpb24sIEVkZW5Db2xsZWN0aW9uIH07CitlbnVtIEhlYXBPcGVy
YXRpb24geyBOb09wZXJhdGlvbiwgQWxsb2NhdGlvbiwgRnVsbENvbGxlY3Rpb24sIEVkZW5Db2xs
ZWN0aW9uLCBBbnlDb2xsZWN0aW9uIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lv
biAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIEhlYXBTdGF0aXN0aWNz
OjpzaG93T2JqZWN0U3RhdGlzdGljCiAgICAgZGF0YUxvZ0YoIlxuPT09IEhlYXAgU3RhdGlzdGlj
czogPT09XG4iKTsKICAgICBkYXRhTG9nRigic2l6ZTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxv
bmc+KGhlYXAtPm1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgLyBLQikpOwogICAgIGRhdGFMb2dGKCJj
YXBhY2l0eTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KGhlYXAtPmNhcGFjaXR5KCkgLyBL
QikpOwotICAgIGRhdGFMb2dGKCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBoZWFwLT5tX2xhc3RH
Q0xlbmd0aCk7CisgICAgZGF0YUxvZ0YoInBhdXNlIHRpbWU6ICVsZm1zXG5cbiIsIGhlYXAtPm1f
bGFzdEZ1bGxHQ0xlbmd0aCk7CiAKICAgICBTdG9yYWdlU3RhdGlzdGljcyBzdG9yYWdlU3RhdGlz
dGljczsKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5j
cHAJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBU
aW1lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1LDggKzg1LDEwIEBAIHZvaWQgSGVhcFRpbWVy
Ojp0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGkKICAgICB9CiAKICAgICBIZWFwVGltZXIqIGhlYXBU
aW1lciA9IDA7Ci0gICAgaWYgKHZtLT5oZWFwLmFjdGl2aXR5Q2FsbGJhY2soKSAmJiB2bS0+aGVh
cC5hY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIpCi0gICAgICAgIGhl
YXBUaW1lciA9IHZtLT5oZWFwLmFjdGl2aXR5Q2FsbGJhY2soKTsKKyAgICBpZiAodm0tPmhlYXAu
ZnVsbEFjdGl2aXR5Q2FsbGJhY2soKSAmJiB2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygp
LT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQorICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5m
dWxsQWN0aXZpdHlDYWxsYmFjaygpOworICAgIGVsc2UgaWYgKHZtLT5oZWFwLmVkZW5BY3Rpdml0
eUNhbGxiYWNrKCkgJiYgdm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKS0+bV90aW1lci5n
ZXQoKSA9PSB0aW1lcikKKyAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuZWRlbkFjdGl2aXR5
Q2FsbGJhY2soKTsKICAgICBlbHNlIGlmICh2bS0+aGVhcC5zd2VlcGVyKCktPm1fdGltZXIuZ2V0
KCkgPT0gdGltZXIpCiAgICAgICAgIGhlYXBUaW1lciA9IHZtLT5oZWFwLnN3ZWVwZXIoKTsKICAg
ICBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZp
c2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0Miw2ICsyNDIsMTAgQEAgdHlwZWRlZiBPcHRpb25SYW5nZSBv
cHRpb25SYW5nZTsKICAgICB2KGRvdWJsZSwgbWluQ29waWVkQmxvY2tVdGlsaXphdGlvbiwgMC45
KSBcCiAgICAgdihkb3VibGUsIG1pbk1hcmtlZEJsb2NrVXRpbGl6YXRpb24sIDAuOSkgXAogICAg
IFwKKyAgICB2KGRvdWJsZSwgcGVyY2VudENQVVBlck1CRm9yRnVsbFRpbWVyLCAwLjAwMDMxMjUp
IFwKKyAgICB2KGRvdWJsZSwgcGVyY2VudENQVVBlck1CRm9yRWRlblRpbWVyLCAwLjAwMjUpIFwK
KyAgICB2KGRvdWJsZSwgY29sbGVjdGlvblRpbWVyTWF4UGVyY2VudENQVSwgMC4wNSkgXAorICAg
IFwKICAgICB2KGJvb2wsIGZvcmNlV2Vha1JhbmRvbVNlZWQsIGZhbHNlKSBcCiAgICAgdih1bnNp
Z25lZCwgZm9yY2VkV2Vha1JhbmRvbVNlZWQsIDApIFwKICAgICBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNjU4MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wMy0xOCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5l
bmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEdDIHRpbWVyIHNob3VsZCBpbnRlbGxpZ2VudGx5
IGNob29zZSBiZXR3ZWVuIEVkZW5Db2xsZWN0aW9ucyBhbmQgRnVsbENvbGxlY3Rpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjgyNjEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
CisKKyAgICAgICAgVXBkYXRlZCBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrcyBmb3IgYm90aCBF
ZGVuIGFuZCBGdWxsIHRpbWVycy4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJTYWZlR0NB
Y3Rpdml0eUNhbGxiYWNrSU9TLmg6CisKIDIwMTQtMDMtMTggIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
NjU4MTUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZp
dHlDYWxsYmFja0lPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgJKHJldmlzaW9uIDE2NTgyNikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDI2ICsyNyw0MiBAQAogI2RlZmluZSBXZWJTYWZlR0NBY3Rp
dml0eUNhbGxiYWNrSU9TX2gKIAogI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9HQ0FjdGl2aXR5Q2FsbGJhY2suaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrIHsKK2NsYXNzIFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNr
IGZpbmFsIDogcHVibGljIEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjayB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEpT
Qzo6SGVhcCogaGVhcCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJTYWZlRnVsbEdDQWN0aXZp
dHlDYWxsYmFjaz4gY3JlYXRlKEpTQzo6SGVhcCogaGVhcCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgV2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgfldlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVy
cmlkZSB7IH0KKyAgICB2aXJ0dWFsIH5XZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjaygpIG92
ZXJyaWRlIHsgfQogCiBwcml2YXRlOgotICAgIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2soSlND
OjpIZWFwKiBoZWFwKQotICAgICAgICA6IEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayho
ZWFwLCBXZWJUaHJlYWRSdW5Mb29wKCkpCisgICAgV2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2soSlNDOjpIZWFwKiBoZWFwKQorICAgICAgICA6IEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFj
ayhoZWFwLCBXZWJUaHJlYWRSdW5Mb29wKCkpCiAgICAgewogICAgIH0KIH07CiAKK2NsYXNzIFdl
YlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIGZpbmFsIDogcHVibGljIEpTQzo6RWRlbkdDQWN0
aXZpdHlDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViU2FmZUVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkhlYXAqIGhlYXApCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhl
YXApKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFj
aygpIG92ZXJyaWRlIHsgfQorCitwcml2YXRlOgorICAgIFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKKyAgICAgICAgOiBKU0M6OkVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgpKQorICAgIHsKKyAgICB9Cit9OwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lP
U19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227128</attachid>
            <date>2014-03-18 16:24:01 -0700</date>
            <delta_ts>2014-03-18 18:30:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318162243.patch</filename>
            <type>text/plain</type>
            <size>53219</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKworRWRlbkdDQWN0
aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDog
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3ZtLT5oZWFwLmNvbGxlY3QoRWRlbkNvbGxl
Y3Rpb24pOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV92bS0+aGVhcC5sYXN0RWRlbkdDTGVuZ3RoKCk7Cit9CisKK2Rv
dWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhl
YXAgPSAmbV92bS0+aGVhcDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZv
cmVMYXN0RWRlbkNvbGxlY3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6
ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAg
ICByZXR1cm4gMS4wOworICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikg
LyBkb3VibGUoc2l6ZUJlZm9yZSk7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
OjpnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0
aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZv
ckVkZW5UaW1lcigpLCBPcHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOwor
fQorCisjZWxzZQorCitFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSkKK3sK
K30KKwordm9pZCBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQor
Citkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworZG91YmxlIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpn
Y1RpbWVTbGljZShzaXplX3QpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyBVU0Uo
Q0YpIHx8IFBMQVRGT1JNKEVGTCkKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrX2gKKworI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5
Q2FsbGJhY2sgeworcHVibGljOgorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwor
CisgICAgdmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6
CisjaWYgVVNFKENGKQorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZS
dW5Mb29wUmVmIHJ1bkxvb3ApCisgICAgICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIHJ1
bkxvb3ApCisgICAgeworICAgIH0KKyNlbmRpZgorCisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdD
TGVuZ3RoKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90
IGJ5dGVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlk
ZTsKK307CisKK2lubGluZSBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK3sKKyAgICByZXR1cm4gc19z
aG91bGRDcmVhdGVHQ1RpbWVyID8gYWRvcHRSZWYobmV3IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2so
aGVhcCkpIDogbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAi
Vk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkK
KworI2lmICFQTEFURk9STShJT1MpCitjb25zdCBkb3VibGUgcGFnaW5nVGltZU91dCA9IDAuMTsg
Ly8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0
ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KKyNlbmRp
ZgorCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAq
IGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKK3sKK30KKwordm9pZCBGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworICAgIEhlYXAqIGhlYXAgPSAm
bV92bS0+aGVhcDsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgZG91YmxlIHN0YXJ0VGltZSA9
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYgKGhlYXAtPmlzUGFn
ZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKKyAgICAgICAgY2FuY2VsKCk7Cisg
ICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEZ1bGxHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaGVhcC0+Y29sbGVjdChGdWxsQ29s
bGVjdGlvbik7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5n
dGgoKQoreworICAgIHJldHVybiBtX3ZtLT5oZWFwLmxhc3RGdWxsR0NMZW5ndGgoKTsKK30KKwor
ZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7CisgICAgSGVhcCog
aGVhcCA9ICZtX3ZtLT5oZWFwOworICAgIHNpemVfdCBzaXplQmVmb3JlID0gaGVhcC0+c2l6ZUJl
Zm9yZUxhc3RGdWxsQ29sbGVjdGlvbigpOworICAgIHNpemVfdCBzaXplQWZ0ZXIgPSBoZWFwLT5z
aXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKTsKKyAgICBpZiAoIXNpemVCZWZvcmUpCisgICAg
ICAgIHJldHVybiAxLjA7CisgICAgcmV0dXJuIGRvdWJsZShzaXplQmVmb3JlIC0gc2l6ZUFmdGVy
KSAvIGRvdWJsZShzaXplQmVmb3JlKTsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmdjVGltZVNsaWNlKHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gc3RkOjptaW4oKHN0
YXRpY19jYXN0PGRvdWJsZT4oYnl0ZXMpIC8gTUIpICogT3B0aW9uczo6cGVyY2VudENQVVBlck1C
Rm9yRnVsbFRpbWVyKCksIE9wdGlvbnM6OmNvbGxlY3Rpb25UaW1lck1heFBlcmNlbnRDUFUoKSk7
Cit9CisKKyNlbHNlCisKK0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OkZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKQoreworfQor
Cit2b2lkIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCit7Cit9CisKK2Rv
dWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgoKQoreworICAgIHJldHVy
biAwOworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmdjVGlt
ZVNsaWNlKHNpemVfdCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIFVTRShDRikg
fHwgUExBVEZPUk0oRUZMKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRnVsbEdDQWN0aXZpdHlDYWxsYmFja19oCisjZGVmaW5lIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2tfaAorCisjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxs
YmFjayB7CitwdWJsaWM6CisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7CisKK3Byb3RlY3RlZDoKKyNp
ZiBVU0UoQ0YpCisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkKKyAgICAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgcnVuTG9v
cCkKKyAgICB7CisgICAgfQorI2VuZGlmCisKKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXN0R0NMZW5n
dGgoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBnY1RpbWVTbGljZShzaXplX3QgYnl0
ZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpIG92ZXJyaWRlOwor
fTsKKworaW5saW5lIFBhc3NSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmNyZWF0ZUZ1bGxUaW1lcihIZWFwKiBoZWFwKQoreworICAgIHJldHVybiBzX3Nob3Vs
ZENyZWF0ZUdDVGltZXIgPyBhZG9wdFJlZihuZXcgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhoZWFw
KSkgOiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NywzOSArNDcsMjYgQEAgYm9vbCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3Jl
YXRlRwogCiAjaWYgVVNFKENGKSB8fCBQTEFURk9STShFRkwpCiAKLWNvbnN0IGRvdWJsZSBnY1Rp
bWVTbGljZVBlck1CID0gMC4wMTsgLy8gUGVyY2VudGFnZSBvZiBDUFUgdGltZSB3ZSB3aWxsIHNw
ZW5kIHRvIHJlY2xhaW0gMSBNQgotY29uc3QgZG91YmxlIG1heEdDVGltZVNsaWNlID0gMC4wNTsg
Ly8gVGhlIG1heGltdW0gYW1vdW50IG9mIENQVSB0aW1lIHdlIHdhbnQgdG8gdXNlIGZvciBvcHBv
cnR1bmlzdGljIHRpbWVyLXRyaWdnZXJlZCBjb2xsZWN0aW9ucy4KIGNvbnN0IGRvdWJsZSB0aW1l
clNsb3AgPSAyLjA7IC8vIEZ1ZGdlIGZhY3RvciB0byBhdm9pZCBwZXJmb3JtYW5jZSBjb3N0IG9m
IHJlc2V0dGluZyB0aW1lci4KIAotI2lmICFQTEFURk9STShJT1MpCi1jb25zdCBkb3VibGUgcGFn
aW5nVGltZU91dCA9IDAuMTsgLy8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0
aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlz
IHBhZ2VkIG91dC4KLSNlbmRpZgotCi0jaWYgIVVTRShDRikKLWNvbnN0IGRvdWJsZSBob3VyID0g
NjAgKiA2MDsKLSNlbmRpZgotCiAjaWYgVVNFKENGKQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorR0NBY3Rpdml0eUNhbGxi
YWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwLT52bSgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCi0gICAgLCBtX2RlbGF5KHNf
ZGVjYWRlKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQorR0NBY3Rpdml0
eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwgcnVuTG9vcCkKLSAg
ICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAjZWxpZiBQTEFURk9STShFRkwpCi1EZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAp
CitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAg
IDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIFdURjo6aXNNYWluVGhyZWFkKCkpCi0g
ICAgLCBtX2RlbGF5KGhvdXIpCiB7CiB9CiAjZW5kaWYKIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpkb1dvcmsoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiB7
CiAgICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOwogICAgIGlmICghaXNFbmFibGVkKCkpCkBA
IC05MSwyMCArNzgsMTEgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmso
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBp
ZiAoaGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdpbmdUaW1lT3V0KSkgewotICAgICAg
ICBoZWFwLT5hY3Rpdml0eUNhbGxiYWNrKCktPmNhbmNlbCgpOwotICAgICAgICBoZWFwLT5pbmNy
ZWFzZUxhc3RHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNlbmRpZgotICAgIGhlYXAtPmdjVGltZXJEaWRGaXJlKCk7Ci0gICAgaGVhcC0+Y29sbGVjdCgp
OworICAgIGRvQ29sbGVjdGlvbigpOwogfQotICAgIAorCiAjaWYgVVNFKENGKQotdm9pZCBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3Zv
aWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsK
ICAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47
CkBAIC0xMTMsMTMgKzkxLDEzIEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2No
ZWR1bGUKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBD
RlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpKSAtIGRlbHRhKTsKIH0K
IAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCit2b2lkIEdD
QWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQogewogICAgIG1fZGVsYXkgPSBzX2RlY2Fk
ZTsKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNfZGVjYWRlKTsKIH0KICNlbGlmIFBMQVRGT1JNKEVG
TCkKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUg
bmV3RGVsYXkpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUg
bmV3RGVsYXkpCiB7CiAgICAgaWYgKG5ld0RlbGF5ICogdGltZXJTbG9wID4gbV9kZWxheSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMxLDE0ICsxMDksMTQgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpzY2hlZHVsZQogICAgIG1fdGltZXIgPSBhZGQobmV3RGVsYXksIHRoaXMpOwog
fQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKK3ZvaWQg
R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAgbV9kZWxheSA9IGhvdXI7
CisgICAgbV9kZWxheSA9IHNfaG91cjsKICAgICBzdG9wKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QgYnl0ZXMpCit2b2lk
IEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogewogI2lmIFBM
QVRGT1JNKEVGTCkKICAgICBpZiAoIWlzRW5hYmxlZCgpKQpAQCAtMTUxLDQyICsxMjksNDEgQEAg
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvYwogICAgIC8vIFdlIHByZXRl
bmQgaXQncyBvbmUgYnl0ZSBzbyB0aGF0IHdlIGRvbid0IGlnbm9yZSB0aGlzIGFsbG9jYXRpb24g
ZW50aXJlbHkuCiAgICAgaWYgKCFieXRlcykKICAgICAgICAgYnl0ZXMgPSAxOwotICAgIEhlYXAq
IGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oJm1fdm0tPmhlYXApOwotICAgIGRvdWJsZSBnY1Rp
bWVTbGljZSA9IHN0ZDo6bWluKChzdGF0aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIGdj
VGltZVNsaWNlUGVyTUIsIG1heEdDVGltZVNsaWNlKTsKLSAgICBkb3VibGUgbmV3RGVsYXkgPSBo
ZWFwLT5sYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlOworICAgIGRvdWJsZSBieXRlc0V4cGVj
dGVkVG9SZWNsYWltID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgKiBkZWF0aFJhdGUoKTsK
KyAgICBkb3VibGUgbmV3RGVsYXkgPSBsYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlKGJ5dGVz
RXhwZWN0ZWRUb1JlY2xhaW0pOwogICAgIHNjaGVkdWxlVGltZXIobmV3RGVsYXkpOwogfQogCi12
b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKK3ZvaWQgR0NBY3Rp
dml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAot
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogI2Vsc2UKIAot
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
KiBoZWFwKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVh
cCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpKQogewogfQogCi12b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFj
azo6ZG9Xb3JrKCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRB
bGxvY2F0ZShzaXplX3QpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6
ZV90KQogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0
KCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiB9CiAKLXZvaWQg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxi
YWNrOjpjYW5jZWwoKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkhlYXBUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KQEAgLTQxLDI4ICs0MSw0NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SGVhcDsKIAotY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEhlYXBUaW1lciB7Citj
bGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgSGVhcFRpbWVyLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8R0NBY3Rpdml0eUNhbGxiYWNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNhbmNlbCgpIHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4g
Y3JlYXRlRnVsbFRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IGNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CisKKyAgICBHQ0FjdGl2aXR5Q2FsbGJh
Y2soSGVhcCopOworCisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOworCisgICAg
dmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRB
bGxvY2F0ZShzaXplX3QpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpOworICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoKTsKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFi
bGVkID0gZW5hYmxlZDsgfQogCiAgICAgc3RhdGljIGJvb2wgc19zaG91bGRDcmVhdGVHQ1RpbWVy
OwogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgPSAwOworICAgIHZp
cnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpID0gMDsKKwogI2lmIFVTRShDRikKICAgICBHQ0FjdGl2
aXR5Q2FsbGJhY2soVk0qIHZtLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICAgICAgOiBIZWFw
VGltZXIodm0sIHJ1bkxvb3ApCiAgICAgICAgICwgbV9lbmFibGVkKHRydWUpCisgICAgICAgICwg
bV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQogI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgc19ob3VyID0gNjAgKiA2MDsKICAgICBHQ0FjdGl2aXR5Q2Fs
bGJhY2soVk0qIHZtLCBib29sIGZsYWcpCiAgICAgICAgIDogSGVhcFRpbWVyKHZtKQogICAgICAg
ICAsIG1fZW5hYmxlZChmbGFnKQorICAgICAgICAsIG1fZGVsYXkoc19ob3VyKQogICAgIHsKICAg
ICB9CiAjZWxzZQpAQCAtNzQsMjMgKzkwLDEwIEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAg
Ym9vbCBtX2VuYWJsZWQ7Ci19OwotCi1jbGFzcyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrIDog
cHVibGljIEdDQWN0aXZpdHlDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25Q
dHI8RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEhlYXAqKTsKLQotICAgIERlZmF1
bHRHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgb3ZlcnJpZGU7Ci0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwotCi0gICAgSlNfRVhQT1JU
X1BSSVZBVEUgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOwogCiAjaWYgVVNFKENGKQog
cHJvdGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJh
Y2soSGVhcCosIENGUnVuTG9vcFJlZik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0
eUNhbGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwogI2VuZGlmCiAjaWYgVVNFKENGKSB8fCBQ
TEFURk9STShFRkwpCiBwcm90ZWN0ZWQ6CkBAIC0xMDIsMTEgKzEwNSw2IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIH07CiAKLWlubGluZSBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+
IERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZShIZWFwKiBoZWFwKQotewotICAgIHJl
dHVybiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/IGFkb3B0UHRy
KG5ldyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7Ci19Ci0KLX0K
K30gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkNv
cHlWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAi
RGVsYXllZFJlbGVhc2VTY29wZS5oIgorI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
aCIKKyNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NBY3Rp
dml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNTMsOCArMjU1LDEyIEBA
IEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcmFtU2l6ZShy
YW1TaXplKCkpCiAgICAgLCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlw
ZSwgbV9yYW1TaXplKSkKICAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKKyAgICAsIG1f
c2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KDApCisgICAgLCBtX3NpemVCZWZvcmVMYXN0RnVsbENv
bGxlY3QoMCkKKyAgICAsIG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0KDApCisgICAgLCBtX3Np
emVCZWZvcmVMYXN0RWRlbkNvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3lj
bGUoMCkKLSAgICAsIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUoMCkKKyAgICAsIG1fYnl0ZXNB
YmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCgwKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21p
bkJ5dGVzUGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkK
ICAgICAsIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSkKQEAgLTI3NCw5ICsyODAsMTUg
QEAgSGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pc1NhZmVU
b0NvbGxlY3QoZmFsc2UpCiAgICAgLCBtX3dyaXRlQmFycmllckJ1ZmZlcigyNTYpCiAgICAgLCBt
X3ZtKHZtKQotICAgICwgbV9sYXN0R0NMZW5ndGgoMCkKKyAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0
aCgwKQorICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RDb2RlRGlzY2Fy
ZFRpbWUoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKLSAgICAsIG1fYWN0aXZp
dHlDYWxsYmFjayhEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCisgICAg
LCBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRp
bWVyKHRoaXMpKQorI2lmIEVOQUJMRShHR0MpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNr
KEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRWRlblRpbWVyKHRoaXMpKQorI2Vsc2UKKyAgICAs
IG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2sobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKKyNlbmRpZgog
ICAgICwgbV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV9kZWZlcnJhbERlcHRoKDApCiB7CkBAIC0zMjMsNyArMzM1LDcgQEAgdm9pZCBIZWFwOjpyZXBv
cnRBYmFuZG9uZWRPYmplY3RHcmFwaCgpCiB7CiAgICAgLy8gT3VyIGNsaWVudHMgZG9uJ3Qga25v
dyBleGFjdGx5IGhvdyBtdWNoIG1lbW9yeSB0aGV5CiAgICAgLy8gYXJlIGFiYW5kb25pbmcgc28g
d2UganVzdCBndWVzcyBmb3IgdGhlbS4KLSAgICBkb3VibGUgYWJhbmRvbmVkQnl0ZXMgPSAwLjEw
ICogbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsKKyAgICBkb3VibGUgYWJhbmRvbmVkQnl0ZXMgPSAw
LjEgKiBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogCiAgICAgLy8gV2Ugd2FudCB0byBhY2NlbGVy
YXRlIHRoZSBuZXh0IGNvbGxlY3Rpb24uIEJlY2F1c2UgbWVtb3J5IGhhcyBqdXN0IAogICAgIC8v
IGJlZW4gYWJhbmRvbmVkLCB0aGUgbmV4dCBjb2xsZWN0aW9uIGhhcyB0aGUgcG90ZW50aWFsIHRv
IApAQCAtMzM0LDkgKzM0NiwxMSBAQCB2b2lkIEhlYXA6OnJlcG9ydEFiYW5kb25lZE9iamVjdEdy
YXBoKCkKIAogdm9pZCBIZWFwOjpkaWRBYmFuZG9uKHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAo
bV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9j
YXRlKG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xl
KTsKLSAgICBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlICs9IGJ5dGVzOworICAgIGlmIChtX2Z1
bGxBY3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRp
ZEFsbG9jYXRlKAorICAgICAgICAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAtIG1fc2l6ZUFm
dGVyTGFzdEZ1bGxDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNB
YmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCk7CisgICAgfQorICAgIG1fYnl0ZXNBYmFuZG9u
ZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCArPSBieXRlczsKIH0KIAogdm9pZCBIZWFwOjpwcm90ZWN0
KEpTVmFsdWUgaykKQEAgLTg0Niw4ICs4NjAsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJi
YWdlKCkKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOwotICAgIGNvbGxlY3QoKTsKKyAgICBj
b2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKIAogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKCJHYXJiYWdlIENvbGxlY3Rpb246IFN3ZWVwaW5nIik7CiAgICAgRGVsYXllZFJlbGVhc2VT
Y29wZSBkZWxheWVkUmVsZWFzZVNjb3BlKG1fb2JqZWN0U3BhY2UpOwpAQCAtODU3LDcgKzg3MCw3
IEBAIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogCiBzdGF0aWMgZG91YmxlIG1pbnV0
ZSA9IDYwLjA7CiAKLXZvaWQgSGVhcDo6Y29sbGVjdCgpCit2b2lkIEhlYXA6OmNvbGxlY3QoSGVh
cE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICNpZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dH
SU5HKQogICAgIGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRpbmcgY29sbGVjdGlvbi5cbiIpOwpAQCAt
ODgwLDcgKzg5Myw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAgICAgUkVMRUFTRV9BU1NFUlQo
bV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKIAogICAgIHN1c3BlbmRDb21w
aWxlclRocmVhZHMoKTsKLSAgICB3aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisgICAgd2lsbFN0YXJ0
Q29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSk7CiAKICAgICBkb3VibGUgZ2NTdGFydFRpbWUgPSBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCkBAIC05MjcsMTAgKzk0MCwxMCBA
QCB2b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2VuZGlmCiB9CiAKLXZvaWQg
SGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigpCit2b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rp
b24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICAgICBHQ1BIQVNFKFN0YXJ0aW5n
Q29sbGVjdGlvbik7Ci0gICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oKSkgeworICAgIGlm
IChzaG91bGREb0Z1bGxDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKSkgewogICAgICAgICBtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgPSBGdWxsQ29sbGVjdGlvbjsKICAgICAgICAgbV9zbG90VmlzaXRv
ci5jbGVhck1hcmtTdGFjaygpOwogICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSBm
YWxzZTsKQEAgLTk0MSwxMSArOTU0LDE5IEBAIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlv
bigpCiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAgZGF0YUxvZygi
RWRlbkNvbGxlY3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNz
ID09IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVs
bENvbGxlY3Rpb24pIHsKKyAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0ID0gbV9z
aXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgICAg
IG1fZXh0cmFNZW1vcnlVc2FnZSA9IDA7CiAKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQot
ICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CisgICAgICAgIGlmICht
X2Z1bGxBY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFj
ay0+d2lsbENvbGxlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9vcGVyYXRp
b25JblByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKTsKKyAgICAgICAgbV9zaXplQmVmb3JlTGFz
dEVkZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRU
aGlzQ3ljbGU7CisgICAgfQorCisgICAgaWYgKG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2spCisgICAg
ICAgIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiB9CiAKIHZvaWQgSGVh
cDo6ZGVsZXRlT2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpCkBAIC0xMDQzLDIwICsxMDY0LDI2
IEBAIHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAgIC8vIGZpeGVk
IG1pbmltdW0uCiAgICAgICAgIG1fbWF4SGVhcFNpemUgPSBtYXgobWluSGVhcFNpemUobV9oZWFw
VHlwZSwgbV9yYW1TaXplKSwgcHJvcG9ydGlvbmFsSGVhcFNpemUoY3VycmVudEhlYXBTaXplLCBt
X3JhbVNpemUpKTsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJy
ZW50SGVhcFNpemU7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0ID0gY3VycmVu
dEhlYXBTaXplOworICAgICAgICBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3Qg
PSAwOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9z
aXplQWZ0ZXJMYXN0Q29sbGVjdCk7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBT
aXplIC0gY3VycmVudEhlYXBTaXplOworICAgICAgICBtX3NpemVBZnRlckxhc3RFZGVuQ29sbGVj
dCA9IGN1cnJlbnRIZWFwU2l6ZTsKICAgICAgICAgZG91YmxlIGVkZW5Ub09sZEdlbmVyYXRpb25S
YXRpbyA9IChkb3VibGUpbV9tYXhFZGVuU2l6ZSAvIChkb3VibGUpbV9tYXhIZWFwU2l6ZTsKICAg
ICAgICAgZG91YmxlIG1pbkVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA9IDEuMCAvIDMuMDsKICAg
ICAgICAgaWYgKGVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA8IG1pbkVkZW5Ub09sZEdlbmVyYXRp
b25SYXRpbykKICAgICAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHRydWU7CiAg
ICAgICAgIG1fbWF4SGVhcFNpemUgKz0gY3VycmVudEhlYXBTaXplIC0gbV9zaXplQWZ0ZXJMYXN0
Q29sbGVjdDsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50
SGVhcFNpemU7CisgICAgICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAg
ICAgICBBU1NFUlQoY3VycmVudEhlYXBTaXplID49IG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0
KTsKKyAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKGN1cnJl
bnRIZWFwU2l6ZSAtIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CiAgICAg
bV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA9IDA7Ci0gICAgbV9ieXRlc0FiYW5kb25lZFRoaXND
eWNsZSA9IDA7CiAKICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgZGF0YUxvZyhj
dXJyZW50SGVhcFNpemUgLyAxMDI0LCAiIGtiLCAiKTsKQEAgLTEwNjYsNyArMTA5MywxMCBAQCB2
b2lkIEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiB7CiAgICAgR0NQSEFTRShG
aW5pc2hpbmdDb2xsZWN0aW9uKTsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBtX2xhc3RHQ0xlbmd0aCA9IGdjRW5kVGltZSAt
IGdjU3RhcnRUaW1lOworICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxl
Y3Rpb24pCisgICAgICAgIG1fbGFzdEZ1bGxHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRU
aW1lOworICAgIGVsc2UKKyAgICAgICAgbV9sYXN0RWRlbkdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0g
Z2NTdGFydFRpbWU7CiAKICAgICBpZiAoT3B0aW9uczo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpCiAg
ICAgICAgIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShnY1N0YXJ0VGltZSwgZ2NF
bmRUaW1lKTsKQEAgLTExMDIsMTQgKzExMzIsMjQgQEAgdm9pZCBIZWFwOjptYXJrRGVhZE9iamVj
dHMoKQogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPE1hcmtPYmplY3Q+KGl0ZXJh
dGlvblNjb3BlKTsKIH0KIAotdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25Q
dHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQordm9pZCBIZWFwOjpzZXRG
dWxsQWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGFj
dGl2aXR5Q2FsbGJhY2spCiB7Ci0gICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxs
YmFjazsKKyAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxsYmFjazsKIH0K
IAotR0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFwOjphY3Rpdml0eUNhbGxiYWNrKCkKK3ZvaWQgSGVh
cDo6c2V0RWRlbkFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrPiBhY3Rpdml0eUNhbGxiYWNrKQogewotICAgIHJldHVybiBtX2FjdGl2aXR5Q2FsbGJhY2su
Z2V0KCk7CisgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2FsbGJhY2s7Cit9
CisKK0dDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6ZnVsbEFjdGl2aXR5Q2FsbGJhY2soKQorewor
ICAgIHJldHVybiBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLmdldCgpOworfQorCitHQ0FjdGl2aXR5
Q2FsbGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKK3sKKyAgICByZXR1cm4gbV9l
ZGVuQWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRJbmNyZW1lbnRh
bFN3ZWVwZXIoUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IHN3ZWVwZXIpCkBAIC0xMTI0
LDE0ICsxMTY0LDE2IEBAIEluY3JlbWVudGFsU3dlZXBlciogSGVhcDo6c3dlZXBlcigpCiAKIHZv
aWQgSGVhcDo6c2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCBlbmFibGUpCiB7
Ci0gICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNr
LT5zZXRFbmFibGVkKGVuYWJsZSk7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCisg
ICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJsZWQoZW5hYmxlKTsKKyAgICBp
ZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFj
ay0+c2V0RW5hYmxlZChlbmFibGUpOwogfQogCiB2b2lkIEhlYXA6OmRpZEFsbG9jYXRlKHNpemVf
dCBieXRlcykKIHsKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2
aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5
dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKTsKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykK
KyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9j
YXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCk7CiAg
ICAgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArPSBieXRlczsKIH0KIApAQCAtMTIxNCwxMSAr
MTI1NiwyNyBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsCiAjZW5k
aWYKIH0KIAotYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkgY29uc3QKK2Jvb2wg
SGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxl
Y3Rpb25UeXBlKSBjb25zdAogewogI2lmIEVOQUJMRShHR0MpCi0gICAgcmV0dXJuIE9wdGlvbnM6
OmFsd2F5c0RvRnVsbENvbGxlY3Rpb24oKSB8fCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247Cisg
ICAgaWYgKE9wdGlvbnM6OmFsd2F5c0RvRnVsbENvbGxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7CisgICAgY2Fz
ZSBFZGVuQ29sbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgRnVsbENv
bGxlY3Rpb246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQW55Q29sbGVjdGlvbjoK
KyAgICAgICAgcmV0dXJuIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IGZhbHNlOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdGVkQ29sbGVjdGlvblR5cGUp
OwogICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgQ29waWVkU3BhY2U7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIEV4
ZWN1dGFibGVCYXNlOworICAgIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CisgICAgY2xh
c3MgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7
CiAgICAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOwogICAgIGNsYXNzIEdsb2JhbENvZGVC
bG9jazsKQEAgLTExOCw4ICsxMjAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtl
ZFNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICAgICAg
TWFjaGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4gbV9tYWNoaW5lVGhyZWFk
czsgfQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0
aXZpdHlDYWxsYmFjaygpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFjdGl2
aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBmdWxsQWN0aXZpdHlDYWxsYmFjaygp
OworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGVkZW5BY3Rp
dml0eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RnVsbEFj
dGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPik7CisgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RWRlbkFjdGl2aXR5Q2FsbGJhY2soUGFzc1Jl
ZlB0cjxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCk7CiAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgSW5jcmVtZW50YWxTd2VlcGVyKiBzd2VlcGVyKCk7CkBAIC0xNDgs
OSArMTUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgICAgICBib29sIHNob3VsZENvbGxlY3QoKTsK
LSAgICAgICAgdm9pZCBnY1RpbWVyRGlkRmlyZSgpIHsgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9u
ID0gdHJ1ZTsgfQotICAgICAgICB2b2lkIHNldFNob3VsZERvRnVsbENvbGxlY3Rpb24oYm9vbCBz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKSB7IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHNob3Vs
ZERvRnVsbENvbGxlY3Rpb247IH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xs
ZWN0KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChIZWFwT3BlcmF0
aW9uIGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CiAgICAgICAgIGJvb2wgY29sbGVj
dElmTmVjZXNzYXJ5T3JEZWZlcigpOyAvLyBSZXR1cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxlY3Qu
CiAKICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwpAQCAt
MTg2LDggKzE4OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hJ
dGVyYXRpbmcoKTsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhh
c2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAotICAgICAgICBkb3VibGUgbGFzdEdDTGVuZ3RoKCkg
eyByZXR1cm4gbV9sYXN0R0NMZW5ndGg7IH0KLSAgICAgICAgdm9pZCBpbmNyZWFzZUxhc3RHQ0xl
bmd0aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEdDTGVuZ3RoICs9IGFtb3VudDsgfQorICAgICAg
ICBkb3VibGUgbGFzdEZ1bGxHQ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEZ1bGxHQ0xl
bmd0aDsgfQorICAgICAgICBkb3VibGUgbGFzdEVkZW5HQ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdEVkZW5HQ0xlbmd0aDsgfQorICAgICAgICB2b2lkIGluY3JlYXNlTGFzdEZ1bGxHQ0xl
bmd0aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEZ1bGxHQ0xlbmd0aCArPSBhbW91bnQ7IH0KKwor
ICAgICAgICBzaXplX3Qgc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6ZUFm
dGVyTGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0RWRl
bkNvbGxlY3Q7IH0KKyAgICAgICAgc2l6ZV90IHNpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7IH0KKyAgICAgICAg
c2l6ZV90IHNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0OyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkZWxldGVBbGxDb21waWxlZENvZGUoKTsKICAgICAgICAgdm9pZCBkZWxldGVBbGxVbmxpbmtl
ZEZ1bmN0aW9uQ29kZSgpOwpAQCAtMjUyLDcgKzI2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNl
KHNpemVfdCk7CiAKICAgICAgICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAg
ICAgIHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbigpOworICAgICAgICB2b2lkIHdpbGxTdGFydENv
bGxlY3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSk7CiAgICAgICAgIHZvaWQgZGVs
ZXRlT2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpOwogICAgICAgICB2b2lkIGZsdXNoT2xkU3Ry
dWN0dXJlSURUYWJsZXMoKTsKICAgICAgICAgdm9pZCBmbHVzaFdyaXRlQmFycmllckJ1ZmZlcigp
OwpAQCAtMjk2LDcgKzMwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHpvbWJp
ZnlEZWFkT2JqZWN0cygpOwogICAgICAgICB2b2lkIG1hcmtEZWFkT2JqZWN0cygpOwogCi0gICAg
ICAgIGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbigpIGNvbnN0OworICAgICAgICBib29sIHNo
b3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xsZWN0aW9uVHlw
ZSkgY29uc3Q7CiAgICAgICAgIHNpemVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAKICAgICAgICAg
SlNTdGFjayYgc3RhY2soKTsKQEAgLTMwOSw5ICszMTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX21p
bkJ5dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0Owor
ICAgICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Q7CisgICAgICAgIHNpemVf
dCBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBtX3NpemVBZnRl
ckxhc3RFZGVuQ29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29s
bGVjdDsKIAogICAgICAgICBzaXplX3QgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKLSAgICAg
ICAgc2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGU7CisgICAgICAgIHNpemVfdCBtX2J5
dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3Q7CiAgICAgICAgIHNpemVfdCBtX21heEVk
ZW5TaXplOwogICAgICAgICBzaXplX3QgbV9tYXhIZWFwU2l6ZTsKICAgICAgICAgYm9vbCBtX3No
b3VsZERvRnVsbENvbGxlY3Rpb247CkBAIC0zNDksMTIgKzM2MSwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgV3JpdGVCYXJyaWVyQnVmZmVyIG1fd3JpdGVCYXJyaWVyQnVmZmVyOwogCiAg
ICAgICAgIFZNKiBtX3ZtOwotICAgICAgICBkb3VibGUgbV9sYXN0R0NMZW5ndGg7CisgICAgICAg
IGRvdWJsZSBtX2xhc3RGdWxsR0NMZW5ndGg7CisgICAgICAgIGRvdWJsZSBtX2xhc3RFZGVuR0NM
ZW5ndGg7CiAgICAgICAgIGRvdWJsZSBtX2xhc3RDb2RlRGlzY2FyZFRpbWU7CiAKICAgICAgICAg
RG91Ymx5TGlua2VkTGlzdDxFeGVjdXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAgICAgICAg
IAotICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7
CisgICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJh
Y2s7CisgICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZWRlbkFjdGl2aXR5Q2Fs
bGJhY2s7CiAgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKICAg
ICAgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja1NuYXBzaG90OwogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9u
IDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51
bSBIZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIEZ1bGxDb2xsZWN0aW9u
LCBFZGVuQ29sbGVjdGlvbiB9OworZW51bSBIZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFs
bG9jYXRpb24sIEZ1bGxDb2xsZWN0aW9uLCBFZGVuQ29sbGVjdGlvbiwgQW55Q29sbGVjdGlvbiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzMsNyArMjMzLDcgQEAgdm9pZCBIZWFwU3RhdGlzdGljczo6c2hvd09iamVjdFN0YXRpc3RpYwog
ICAgIGRhdGFMb2dGKCJcbj09PSBIZWFwIFN0YXRpc3RpY3M6ID09PVxuIik7CiAgICAgZGF0YUxv
Z0YoInNpemU6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFwLT5tX3NpemVBZnRlckxh
c3RDb2xsZWN0IC8gS0IpKTsKICAgICBkYXRhTG9nRigiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0
aWNfY2FzdDxsb25nPihoZWFwLT5jYXBhY2l0eSgpIC8gS0IpKTsKLSAgICBkYXRhTG9nRigicGF1
c2UgdGltZTogJWxmbXNcblxuIiwgaGVhcC0+bV9sYXN0R0NMZW5ndGgpOworICAgIGRhdGFMb2dG
KCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBoZWFwLT5tX2xhc3RGdWxsR0NMZW5ndGgpOwogCiAg
ICAgU3RvcmFnZVN0YXRpc3RpY3Mgc3RvcmFnZVN0YXRpc3RpY3M7CiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NSw4ICs4NSwxMCBAQCB2b2lkIEhlYXBUaW1lcjo6dGltZXJEaWRGaXJlKENGUnVuTG9v
cFRpCiAgICAgfQogCiAgICAgSGVhcFRpbWVyKiBoZWFwVGltZXIgPSAwOwotICAgIGlmICh2bS0+
aGVhcC5hY3Rpdml0eUNhbGxiYWNrKCkgJiYgdm0tPmhlYXAuYWN0aXZpdHlDYWxsYmFjaygpLT5t
X3RpbWVyLmdldCgpID09IHRpbWVyKQotICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5hY3Rp
dml0eUNhbGxiYWNrKCk7CisgICAgaWYgKHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkg
JiYgdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+bV90aW1lci5nZXQoKSA9PSB0aW1l
cikKKyAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKTsK
KyAgICBlbHNlIGlmICh2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpICYmIHZtLT5oZWFw
LmVkZW5BY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIpCisgICAgICAg
IGhlYXBUaW1lciA9IHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCk7CiAgICAgZWxzZSBp
ZiAodm0tPmhlYXAuc3dlZXBlcigpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQogICAgICAgICBo
ZWFwVGltZXIgPSB2bS0+aGVhcC5zd2VlcGVyKCk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIs
NiArMjQyLDEwIEBAIHR5cGVkZWYgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2U7CiAgICAgdihkb3Vi
bGUsIG1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24sIDAuOSkgXAogICAgIHYoZG91YmxlLCBtaW5N
YXJrZWRCbG9ja1V0aWxpemF0aW9uLCAwLjkpIFwKICAgICBcCisgICAgdihkb3VibGUsIHBlcmNl
bnRDUFVQZXJNQkZvckZ1bGxUaW1lciwgMC4wMDAzMTI1KSBcCisgICAgdihkb3VibGUsIHBlcmNl
bnRDUFVQZXJNQkZvckVkZW5UaW1lciwgMC4wMDI1KSBcCisgICAgdihkb3VibGUsIGNvbGxlY3Rp
b25UaW1lck1heFBlcmNlbnRDUFUsIDAuMDUpIFwKKyAgICBcCiAgICAgdihib29sLCBmb3JjZVdl
YWtSYW5kb21TZWVkLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGZvcmNlZFdlYWtSYW5kb21T
ZWVkLCAwKSBcCiAgICAgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIw
MTQtMDMtMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBHQyB0aW1lciBzaG91bGQgaW50ZWxsaWdlbnRseSBjaG9vc2UgYmV0d2VlbiBFZGVuQ29s
bGVjdGlvbnMgYW5kIEZ1bGxDb2xsZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIFVwZGF0ZWQgV2Vi
U2FmZUdDQWN0aXZpdHlDYWxsYmFja3MgZm9yIGJvdGggRWRlbiBhbmQgRnVsbCB0aW1lcnMuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oOgor
CiAyMDE0LTAzLTE4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY1ODE1LgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxs
YmFja0lPUy5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywy
NiArMjcsNDIgQEAKICNkZWZpbmUgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPU19oCiAKICNp
bmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rp
dml0eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2suaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJTYWZlR0NBY3Rpdml0eUNh
bGxiYWNrIGZpbmFsIDogcHVibGljIEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayB7Citj
bGFzcyBXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayBmaW5hbCA6IHB1YmxpYyBKU0M6OkZ1
bGxHQ0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdl
YlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkhlYXAqIGhlYXApCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6
OkhlYXAqIGhlYXApCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNhZmVH
Q0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdl
YlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IH5XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB+
V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKLSAgICAgICAg
OiBKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgp
KQorICAgIFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKKyAg
ICAgICAgOiBKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9v
cCgpKQogICAgIHsKICAgICB9CiB9OwogCitjbGFzcyBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxs
YmFjayBmaW5hbCA6IHB1YmxpYyBKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPiBj
cmVhdGUoSlNDOjpIZWFwKiBoZWFwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+V2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KKworcHJp
dmF0ZToKKyAgICBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXAp
CisgICAgICAgIDogSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1
bkxvb3AoKSkKKyAgICB7CisgICAgfQorfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1NfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227138</attachid>
            <date>2014-03-18 17:48:08 -0700</date>
            <delta_ts>2014-03-18 18:35:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318174648.patch</filename>
            <type>text/plain</type>
            <size>53216</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKworRWRlbkdDQWN0
aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDog
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3ZtLT5oZWFwLmNvbGxlY3QoRWRlbkNvbGxl
Y3Rpb24pOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV92bS0+aGVhcC5sYXN0RWRlbkdDTGVuZ3RoKCk7Cit9CisKK2Rv
dWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhl
YXAgPSAmbV92bS0+aGVhcDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZv
cmVMYXN0RWRlbkNvbGxlY3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6
ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAg
ICByZXR1cm4gMS4wOworICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikg
LyBkb3VibGUoc2l6ZUJlZm9yZSk7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
OjpnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0
aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZv
ckVkZW5UaW1lcigpLCBPcHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOwor
fQorCisjZWxzZQorCitFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSkKK3sK
K30KKwordm9pZCBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQor
Citkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworZG91YmxlIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpn
Y1RpbWVTbGljZShzaXplX3QpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyBVU0Uo
Q0YpIHx8IFBMQVRGT1JNKEVGTCkKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrX2gKKworI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5
Q2FsbGJhY2sgeworcHVibGljOgorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwor
CisgICAgdmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6
CisjaWYgVVNFKENGKQorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZS
dW5Mb29wUmVmIHJ1bkxvb3ApCisgICAgICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIHJ1
bkxvb3ApCisgICAgeworICAgIH0KKyNlbmRpZgorCisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdD
TGVuZ3RoKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90
IGJ5dGVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlk
ZTsKK307CisKK2lubGluZSBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK3sKKyAgICByZXR1cm4gc19z
aG91bGRDcmVhdGVHQ1RpbWVyID8gYWRvcHRSZWYobmV3IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2so
aGVhcCkpIDogbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAi
Vk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkK
KworI2lmICFQTEFURk9STShJT1MpCitjb25zdCBkb3VibGUgcGFnaW5nVGltZU91dCA9IDAuMTsg
Ly8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0
ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KKyNlbmRp
ZgorCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAq
IGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKK3sKK30KKwordm9pZCBGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworICAgIEhlYXAqIGhlYXAgPSAm
bV92bS0+aGVhcDsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgZG91YmxlIHN0YXJ0VGltZSA9
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYgKGhlYXAtPmlzUGFn
ZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKKyAgICAgICAgY2FuY2VsKCk7Cisg
ICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEZ1bGxHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaGVhcC0+Y29sbGVjdChGdWxsQ29s
bGVjdGlvbik7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5n
dGgoKQoreworICAgIHJldHVybiBtX3ZtLT5oZWFwLmxhc3RGdWxsR0NMZW5ndGgoKTsKK30KKwor
ZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7CisgICAgSGVhcCog
aGVhcCA9ICZtX3ZtLT5oZWFwOworICAgIHNpemVfdCBzaXplQmVmb3JlID0gaGVhcC0+c2l6ZUJl
Zm9yZUxhc3RGdWxsQ29sbGVjdGlvbigpOworICAgIHNpemVfdCBzaXplQWZ0ZXIgPSBoZWFwLT5z
aXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKTsKKyAgICBpZiAoIXNpemVCZWZvcmUpCisgICAg
ICAgIHJldHVybiAxLjA7CisgICAgcmV0dXJuIGRvdWJsZShzaXplQmVmb3JlIC0gc2l6ZUFmdGVy
KSAvIGRvdWJsZShzaXplQmVmb3JlKTsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmdjVGltZVNsaWNlKHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gc3RkOjptaW4oKHN0
YXRpY19jYXN0PGRvdWJsZT4oYnl0ZXMpIC8gTUIpICogT3B0aW9uczo6cGVyY2VudENQVVBlck1C
Rm9yRnVsbFRpbWVyKCksIE9wdGlvbnM6OmNvbGxlY3Rpb25UaW1lck1heFBlcmNlbnRDUFUoKSk7
Cit9CisKKyNlbHNlCisKK0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OkZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKQoreworfQor
Cit2b2lkIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCit7Cit9CisKK2Rv
dWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgoKQoreworICAgIHJldHVy
biAwOworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmdjVGlt
ZVNsaWNlKHNpemVfdCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIFVTRShDRikg
fHwgUExBVEZPUk0oRUZMKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRnVsbEdDQWN0aXZpdHlDYWxsYmFja19oCisjZGVmaW5lIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2tfaAorCisjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxs
YmFjayB7CitwdWJsaWM6CisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7CisKK3Byb3RlY3RlZDoKKyNp
ZiBVU0UoQ0YpCisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkKKyAgICAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgcnVuTG9v
cCkKKyAgICB7CisgICAgfQorI2VuZGlmCisKKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXN0R0NMZW5n
dGgoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBnY1RpbWVTbGljZShzaXplX3QgYnl0
ZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpIG92ZXJyaWRlOwor
fTsKKworaW5saW5lIFBhc3NSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmNyZWF0ZUZ1bGxUaW1lcihIZWFwKiBoZWFwKQoreworICAgIHJldHVybiBzX3Nob3Vs
ZENyZWF0ZUdDVGltZXIgPyBhZG9wdFJlZihuZXcgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhoZWFw
KSkgOiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NywzOSArNDcsMjYgQEAgYm9vbCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3Jl
YXRlRwogCiAjaWYgVVNFKENGKSB8fCBQTEFURk9STShFRkwpCiAKLWNvbnN0IGRvdWJsZSBnY1Rp
bWVTbGljZVBlck1CID0gMC4wMTsgLy8gUGVyY2VudGFnZSBvZiBDUFUgdGltZSB3ZSB3aWxsIHNw
ZW5kIHRvIHJlY2xhaW0gMSBNQgotY29uc3QgZG91YmxlIG1heEdDVGltZVNsaWNlID0gMC4wNTsg
Ly8gVGhlIG1heGltdW0gYW1vdW50IG9mIENQVSB0aW1lIHdlIHdhbnQgdG8gdXNlIGZvciBvcHBv
cnR1bmlzdGljIHRpbWVyLXRyaWdnZXJlZCBjb2xsZWN0aW9ucy4KIGNvbnN0IGRvdWJsZSB0aW1l
clNsb3AgPSAyLjA7IC8vIEZ1ZGdlIGZhY3RvciB0byBhdm9pZCBwZXJmb3JtYW5jZSBjb3N0IG9m
IHJlc2V0dGluZyB0aW1lci4KIAotI2lmICFQTEFURk9STShJT1MpCi1jb25zdCBkb3VibGUgcGFn
aW5nVGltZU91dCA9IDAuMTsgLy8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0
aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlz
IHBhZ2VkIG91dC4KLSNlbmRpZgotCi0jaWYgIVVTRShDRikKLWNvbnN0IGRvdWJsZSBob3VyID0g
NjAgKiA2MDsKLSNlbmRpZgotCiAjaWYgVVNFKENGKQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorR0NBY3Rpdml0eUNhbGxi
YWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwLT52bSgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCi0gICAgLCBtX2RlbGF5KHNf
ZGVjYWRlKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQorR0NBY3Rpdml0
eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwgcnVuTG9vcCkKLSAg
ICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAjZWxpZiBQTEFURk9STShFRkwpCi1EZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAp
CitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAg
IDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIFdURjo6aXNNYWluVGhyZWFkKCkpCi0g
ICAgLCBtX2RlbGF5KGhvdXIpCiB7CiB9CiAjZW5kaWYKIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpkb1dvcmsoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiB7
CiAgICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOwogICAgIGlmICghaXNFbmFibGVkKCkpCkBA
IC05MSwyMCArNzgsMTEgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmso
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBp
ZiAoaGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdpbmdUaW1lT3V0KSkgewotICAgICAg
ICBoZWFwLT5hY3Rpdml0eUNhbGxiYWNrKCktPmNhbmNlbCgpOwotICAgICAgICBoZWFwLT5pbmNy
ZWFzZUxhc3RHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNlbmRpZgotICAgIGhlYXAtPmdjVGltZXJEaWRGaXJlKCk7Ci0gICAgaGVhcC0+Y29sbGVjdCgp
OworICAgIGRvQ29sbGVjdGlvbigpOwogfQotICAgIAorCiAjaWYgVVNFKENGKQotdm9pZCBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3Zv
aWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsK
ICAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47
CkBAIC0xMTMsMTMgKzkxLDEzIEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2No
ZWR1bGUKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBD
RlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpKSAtIGRlbHRhKTsKIH0K
IAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCit2b2lkIEdD
QWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQogewogICAgIG1fZGVsYXkgPSBzX2RlY2Fk
ZTsKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNfZGVjYWRlKTsKIH0KICNlbGlmIFBMQVRGT1JNKEVG
TCkKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUg
bmV3RGVsYXkpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUg
bmV3RGVsYXkpCiB7CiAgICAgaWYgKG5ld0RlbGF5ICogdGltZXJTbG9wID4gbV9kZWxheSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMxLDE0ICsxMDksMTQgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpzY2hlZHVsZQogICAgIG1fdGltZXIgPSBhZGQobmV3RGVsYXksIHRoaXMpOwog
fQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKK3ZvaWQg
R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAgbV9kZWxheSA9IGhvdXI7
CisgICAgbV9kZWxheSA9IHNfaG91cjsKICAgICBzdG9wKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QgYnl0ZXMpCit2b2lk
IEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogewogI2lmIFBM
QVRGT1JNKEVGTCkKICAgICBpZiAoIWlzRW5hYmxlZCgpKQpAQCAtMTUxLDQyICsxMjksNDEgQEAg
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvYwogICAgIC8vIFdlIHByZXRl
bmQgaXQncyBvbmUgYnl0ZSBzbyB0aGF0IHdlIGRvbid0IGlnbm9yZSB0aGlzIGFsbG9jYXRpb24g
ZW50aXJlbHkuCiAgICAgaWYgKCFieXRlcykKICAgICAgICAgYnl0ZXMgPSAxOwotICAgIEhlYXAq
IGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oJm1fdm0tPmhlYXApOwotICAgIGRvdWJsZSBnY1Rp
bWVTbGljZSA9IHN0ZDo6bWluKChzdGF0aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIGdj
VGltZVNsaWNlUGVyTUIsIG1heEdDVGltZVNsaWNlKTsKLSAgICBkb3VibGUgbmV3RGVsYXkgPSBo
ZWFwLT5sYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlOworICAgIGRvdWJsZSBieXRlc0V4cGVj
dGVkVG9SZWNsYWltID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgKiBkZWF0aFJhdGUoKTsK
KyAgICBkb3VibGUgbmV3RGVsYXkgPSBsYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlKGJ5dGVz
RXhwZWN0ZWRUb1JlY2xhaW0pOwogICAgIHNjaGVkdWxlVGltZXIobmV3RGVsYXkpOwogfQogCi12
b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKK3ZvaWQgR0NBY3Rp
dml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAot
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogI2Vsc2UKIAot
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
KiBoZWFwKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVh
cCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpKQogewogfQogCi12b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFj
azo6ZG9Xb3JrKCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRB
bGxvY2F0ZShzaXplX3QpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6
ZV90KQogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0
KCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiB9CiAKLXZvaWQg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxi
YWNrOjpjYW5jZWwoKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkhlYXBUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KQEAgLTQxLDI4ICs0MSw0NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SGVhcDsKIAotY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEhlYXBUaW1lciB7Citj
bGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgSGVhcFRpbWVyLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8R0NBY3Rpdml0eUNhbGxiYWNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNhbmNlbCgpIHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4g
Y3JlYXRlRnVsbFRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IGNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CisKKyAgICBHQ0FjdGl2aXR5Q2FsbGJh
Y2soSGVhcCopOworCisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOworCisgICAg
dmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRB
bGxvY2F0ZShzaXplX3QpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpOworICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoKTsKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFi
bGVkID0gZW5hYmxlZDsgfQogCiAgICAgc3RhdGljIGJvb2wgc19zaG91bGRDcmVhdGVHQ1RpbWVy
OwogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgPSAwOworICAgIHZp
cnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpID0gMDsKKwogI2lmIFVTRShDRikKICAgICBHQ0FjdGl2
aXR5Q2FsbGJhY2soVk0qIHZtLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICAgICAgOiBIZWFw
VGltZXIodm0sIHJ1bkxvb3ApCiAgICAgICAgICwgbV9lbmFibGVkKHRydWUpCisgICAgICAgICwg
bV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQogI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgc19ob3VyID0gMzYwMDsKICAgICBHQ0FjdGl2aXR5Q2FsbGJh
Y2soVk0qIHZtLCBib29sIGZsYWcpCiAgICAgICAgIDogSGVhcFRpbWVyKHZtKQogICAgICAgICAs
IG1fZW5hYmxlZChmbGFnKQorICAgICAgICAsIG1fZGVsYXkoc19ob3VyKQogICAgIHsKICAgICB9
CiAjZWxzZQpAQCAtNzQsMjMgKzkwLDEwIEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiAgICAgYm9v
bCBtX2VuYWJsZWQ7Ci19OwotCi1jbGFzcyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrIDogcHVi
bGljIEdDQWN0aXZpdHlDYWxsYmFjayB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjaz4gY3JlYXRlKEhlYXAqKTsKLQotICAgIERlZmF1bHRH
Q0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwotCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVh
bCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgSlNfRVhQT1JUX1BSSVZB
VEUgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgb3ZlcnJpZGU7Ci0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwotCi0gICAgSlNfRVhQT1JUX1BS
SVZBVEUgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOwogCiAjaWYgVVNFKENGKQogcHJv
dGVjdGVkOgotICAgIEpTX0VYUE9SVF9QUklWQVRFIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2so
SGVhcCosIENGUnVuTG9vcFJlZik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNh
bGxiYWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOwogI2VuZGlmCiAjaWYgVVNFKENGKSB8fCBQTEFU
Rk9STShFRkwpCiBwcm90ZWN0ZWQ6CkBAIC0xMDIsMTEgKzEwNSw2IEBAIHByaXZhdGU6CiAjZW5k
aWYKIH07CiAKLWlubGluZSBQYXNzT3duUHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+IERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZShIZWFwKiBoZWFwKQotewotICAgIHJldHVy
biBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3JlYXRlR0NUaW1lciA/IGFkb3B0UHRyKG5l
dyBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKSA6IG51bGxwdHI7Ci19Ci0KLX0KK30g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgIkNvcHlW
aXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCiAjaW5jbHVkZSAiRGVs
YXllZFJlbGVhc2VTY29wZS5oIgorI2luY2x1ZGUgIkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCIK
KyNpbmNsdWRlICJGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0
eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiR0NJbmNvbWluZ1JlZkNvdW50ZWRTZXRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNTMsOCArMjU1LDEyIEBAIEhl
YXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1fcmFtU2l6ZShyYW1T
aXplKCkpCiAgICAgLCBtX21pbkJ5dGVzUGVyQ3ljbGUobWluSGVhcFNpemUobV9oZWFwVHlwZSwg
bV9yYW1TaXplKSkKICAgICAsIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QoMCkKKyAgICAsIG1fc2l6
ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KDApCisgICAgLCBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxl
Y3QoMCkKKyAgICAsIG1fc2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0KDApCisgICAgLCBtX3NpemVC
ZWZvcmVMYXN0RWRlbkNvbGxlY3QoMCkKICAgICAsIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUo
MCkKLSAgICAsIG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGUoMCkKKyAgICAsIG1fYnl0ZXNBYmFu
ZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCgwKQogICAgICwgbV9tYXhFZGVuU2l6ZShtX21pbkJ5
dGVzUGVyQ3ljbGUpCiAgICAgLCBtX21heEhlYXBTaXplKG1fbWluQnl0ZXNQZXJDeWNsZSkKICAg
ICAsIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihmYWxzZSkKQEAgLTI3NCw5ICsyODAsMTUgQEAg
SGVhcDo6SGVhcChWTSogdm0sIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgbV9pc1NhZmVUb0Nv
bGxlY3QoZmFsc2UpCiAgICAgLCBtX3dyaXRlQmFycmllckJ1ZmZlcigyNTYpCiAgICAgLCBtX3Zt
KHZtKQotICAgICwgbV9sYXN0R0NMZW5ndGgoMCkKKyAgICAsIG1fbGFzdEZ1bGxHQ0xlbmd0aCgw
KQorICAgICwgbV9sYXN0RWRlbkdDTGVuZ3RoKDApCiAgICAgLCBtX2xhc3RDb2RlRGlzY2FyZFRp
bWUoV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSkKLSAgICAsIG1fYWN0aXZpdHlD
YWxsYmFjayhEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykpCisgICAgLCBt
X2Z1bGxBY3Rpdml0eUNhbGxiYWNrKEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRnVsbFRpbWVy
KHRoaXMpKQorI2lmIEVOQUJMRShHR0MpCisgICAgLCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKEdD
QWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlRWRlblRpbWVyKHRoaXMpKQorI2Vsc2UKKyAgICAsIG1f
ZWRlbkFjdGl2aXR5Q2FsbGJhY2sobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKKyNlbmRpZgogICAg
ICwgbV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9k
ZWZlcnJhbERlcHRoKDApCiB7CkBAIC0zMjMsNyArMzM1LDcgQEAgdm9pZCBIZWFwOjpyZXBvcnRB
YmFuZG9uZWRPYmplY3RHcmFwaCgpCiB7CiAgICAgLy8gT3VyIGNsaWVudHMgZG9uJ3Qga25vdyBl
eGFjdGx5IGhvdyBtdWNoIG1lbW9yeSB0aGV5CiAgICAgLy8gYXJlIGFiYW5kb25pbmcgc28gd2Ug
anVzdCBndWVzcyBmb3IgdGhlbS4KLSAgICBkb3VibGUgYWJhbmRvbmVkQnl0ZXMgPSAwLjEwICog
bV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsKKyAgICBkb3VibGUgYWJhbmRvbmVkQnl0ZXMgPSAwLjEg
KiBtX3NpemVBZnRlckxhc3RDb2xsZWN0OwogCiAgICAgLy8gV2Ugd2FudCB0byBhY2NlbGVyYXRl
IHRoZSBuZXh0IGNvbGxlY3Rpb24uIEJlY2F1c2UgbWVtb3J5IGhhcyBqdXN0IAogICAgIC8vIGJl
ZW4gYWJhbmRvbmVkLCB0aGUgbmV4dCBjb2xsZWN0aW9uIGhhcyB0aGUgcG90ZW50aWFsIHRvIApA
QCAtMzM0LDkgKzM0NiwxMSBAQCB2b2lkIEhlYXA6OnJlcG9ydEFiYW5kb25lZE9iamVjdEdyYXBo
KCkKIAogdm9pZCBIZWFwOjpkaWRBYmFuZG9uKHNpemVfdCBieXRlcykKIHsKLSAgICBpZiAobV9h
Y3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRl
KG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKTsK
LSAgICBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlICs9IGJ5dGVzOworICAgIGlmIChtX2Z1bGxB
Y3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRpZEFs
bG9jYXRlKAorICAgICAgICAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAtIG1fc2l6ZUFmdGVy
TGFzdEZ1bGxDb2xsZWN0ICsgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFu
ZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCk7CisgICAgfQorICAgIG1fYnl0ZXNBYmFuZG9uZWRT
aW5jZUxhc3RGdWxsQ29sbGVjdCArPSBieXRlczsKIH0KIAogdm9pZCBIZWFwOjpwcm90ZWN0KEpT
VmFsdWUgaykKQEAgLTg0Niw4ICs4NjAsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdl
KCkKICAgICBpZiAoIW1faXNTYWZlVG9Db2xsZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOwotICAgIGNvbGxlY3QoKTsKKyAgICBjb2xs
ZWN0KEZ1bGxDb2xsZWN0aW9uKTsKIAogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KCJHYXJiYWdlIENvbGxlY3Rpb246IFN3ZWVwaW5nIik7CiAgICAgRGVsYXllZFJlbGVhc2VTY29w
ZSBkZWxheWVkUmVsZWFzZVNjb3BlKG1fb2JqZWN0U3BhY2UpOwpAQCAtODU3LDcgKzg3MCw3IEBA
IHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQogCiBzdGF0aWMgZG91YmxlIG1pbnV0ZSA9
IDYwLjA7CiAKLXZvaWQgSGVhcDo6Y29sbGVjdCgpCit2b2lkIEhlYXA6OmNvbGxlY3QoSGVhcE9w
ZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICNpZiBFTkFCTEUoQUxMT0NBVElPTl9MT0dHSU5H
KQogICAgIGRhdGFMb2dGKCJKU0MgR0Mgc3RhcnRpbmcgY29sbGVjdGlvbi5cbiIpOwpAQCAtODgw
LDcgKzg5Myw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdCgpCiAgICAgUkVMRUFTRV9BU1NFUlQobV9v
cGVyYXRpb25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKIAogICAgIHN1c3BlbmRDb21waWxl
clRocmVhZHMoKTsKLSAgICB3aWxsU3RhcnRDb2xsZWN0aW9uKCk7CisgICAgd2lsbFN0YXJ0Q29s
bGVjdGlvbihjb2xsZWN0aW9uVHlwZSk7CiAKICAgICBkb3VibGUgZ2NTdGFydFRpbWUgPSBXVEY6
Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogCkBAIC05MjcsMTAgKzk0MCwxMCBAQCB2
b2lkIEhlYXA6OnN1c3BlbmRDb21waWxlclRocmVhZHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgSGVh
cDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigpCit2b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24o
SGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSkKIHsKICAgICBHQ1BIQVNFKFN0YXJ0aW5nQ29s
bGVjdGlvbik7Ci0gICAgaWYgKHNob3VsZERvRnVsbENvbGxlY3Rpb24oKSkgeworICAgIGlmIChz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKGNvbGxlY3Rpb25UeXBlKSkgewogICAgICAgICBtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPSBGdWxsQ29sbGVjdGlvbjsKICAgICAgICAgbV9zbG90VmlzaXRvci5j
bGVhck1hcmtTdGFjaygpOwogICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSBmYWxz
ZTsKQEAgLTk0MSwxMSArOTU0LDE5IEBAIHZvaWQgSGVhcDo6d2lsbFN0YXJ0Q29sbGVjdGlvbigp
CiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dHQygpKQogICAgICAgICAgICAgZGF0YUxvZygiRWRl
bkNvbGxlY3Rpb24sICIpOwogICAgIH0KLSAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09
IEZ1bGxDb2xsZWN0aW9uKQorICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENv
bGxlY3Rpb24pIHsKKyAgICAgICAgbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0ID0gbV9zaXpl
QWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7CiAgICAgICAgIG1f
ZXh0cmFNZW1vcnlVc2FnZSA9IDA7CiAKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAg
ICAgICBtX2FjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CisgICAgICAgIGlmIChtX2Z1
bGxBY3Rpdml0eUNhbGxiYWNrKQorICAgICAgICAgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjay0+
d2lsbENvbGxlY3QoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9vcGVyYXRpb25J
blByb2dyZXNzID09IEVkZW5Db2xsZWN0aW9uKTsKKyAgICAgICAgbV9zaXplQmVmb3JlTGFzdEVk
ZW5Db2xsZWN0ID0gbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlz
Q3ljbGU7CisgICAgfQorCisgICAgaWYgKG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2spCisgICAgICAg
IG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2stPndpbGxDb2xsZWN0KCk7CiB9CiAKIHZvaWQgSGVhcDo6
ZGVsZXRlT2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpCkBAIC0xMDQzLDIwICsxMDY0LDI2IEBA
IHZvaWQgSGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cygpCiAgICAgICAgIC8vIGZpeGVkIG1p
bmltdW0uCiAgICAgICAgIG1fbWF4SGVhcFNpemUgPSBtYXgobWluSGVhcFNpemUobV9oZWFwVHlw
ZSwgbV9yYW1TaXplKSwgcHJvcG9ydGlvbmFsSGVhcFNpemUoY3VycmVudEhlYXBTaXplLCBtX3Jh
bVNpemUpKTsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50
SGVhcFNpemU7CisgICAgICAgIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0ID0gY3VycmVudEhl
YXBTaXplOworICAgICAgICBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3QgPSAw
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChjdXJyZW50SGVhcFNpemUgPj0gbV9zaXpl
QWZ0ZXJMYXN0Q29sbGVjdCk7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXpl
IC0gY3VycmVudEhlYXBTaXplOworICAgICAgICBtX3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdCA9
IGN1cnJlbnRIZWFwU2l6ZTsKICAgICAgICAgZG91YmxlIGVkZW5Ub09sZEdlbmVyYXRpb25SYXRp
byA9IChkb3VibGUpbV9tYXhFZGVuU2l6ZSAvIChkb3VibGUpbV9tYXhIZWFwU2l6ZTsKICAgICAg
ICAgZG91YmxlIG1pbkVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA9IDEuMCAvIDMuMDsKICAgICAg
ICAgaWYgKGVkZW5Ub09sZEdlbmVyYXRpb25SYXRpbyA8IG1pbkVkZW5Ub09sZEdlbmVyYXRpb25S
YXRpbykKICAgICAgICAgICAgIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHRydWU7CiAgICAg
ICAgIG1fbWF4SGVhcFNpemUgKz0gY3VycmVudEhlYXBTaXplIC0gbV9zaXplQWZ0ZXJMYXN0Q29s
bGVjdDsKICAgICAgICAgbV9tYXhFZGVuU2l6ZSA9IG1fbWF4SGVhcFNpemUgLSBjdXJyZW50SGVh
cFNpemU7CisgICAgICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKSB7CisgICAgICAgICAg
ICBBU1NFUlQoY3VycmVudEhlYXBTaXplID49IG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KTsK
KyAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKGN1cnJlbnRI
ZWFwU2l6ZSAtIG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0KTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVhcFNpemU7CiAgICAgbV9i
eXRlc0FsbG9jYXRlZFRoaXNDeWNsZSA9IDA7Ci0gICAgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNs
ZSA9IDA7CiAKICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgZGF0YUxvZyhjdXJy
ZW50SGVhcFNpemUgLyAxMDI0LCAiIGtiLCAiKTsKQEAgLTEwNjYsNyArMTA5MywxMCBAQCB2b2lk
IEhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24oZG91YmxlIGdjCiB7CiAgICAgR0NQSEFTRShGaW5p
c2hpbmdDb2xsZWN0aW9uKTsKICAgICBkb3VibGUgZ2NFbmRUaW1lID0gV1RGOjptb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBtX2xhc3RHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdj
U3RhcnRUaW1lOworICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gRnVsbENvbGxlY3Rp
b24pCisgICAgICAgIG1fbGFzdEZ1bGxHQ0xlbmd0aCA9IGdjRW5kVGltZSAtIGdjU3RhcnRUaW1l
OworICAgIGVsc2UKKyAgICAgICAgbV9sYXN0RWRlbkdDTGVuZ3RoID0gZ2NFbmRUaW1lIC0gZ2NT
dGFydFRpbWU7CiAKICAgICBpZiAoT3B0aW9uczo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpCiAgICAg
ICAgIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShnY1N0YXJ0VGltZSwgZ2NFbmRU
aW1lKTsKQEAgLTExMDIsMTQgKzExMzIsMjQgQEAgdm9pZCBIZWFwOjptYXJrRGVhZE9iamVjdHMo
KQogICAgIG1fb2JqZWN0U3BhY2UuZm9yRWFjaERlYWRDZWxsPE1hcmtPYmplY3Q+KGl0ZXJhdGlv
blNjb3BlKTsKIH0KIAotdm9pZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8
R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0eUNhbGxiYWNrKQordm9pZCBIZWFwOjpzZXRGdWxs
QWN0aXZpdHlDYWxsYmFjayhQYXNzUmVmUHRyPEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGFjdGl2
aXR5Q2FsbGJhY2spCiB7Ci0gICAgbV9hY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxsYmFj
azsKKyAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrID0gYWN0aXZpdHlDYWxsYmFjazsKIH0KIAot
R0NBY3Rpdml0eUNhbGxiYWNrKiBIZWFwOjphY3Rpdml0eUNhbGxiYWNrKCkKK3ZvaWQgSGVhcDo6
c2V0RWRlbkFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
PiBhY3Rpdml0eUNhbGxiYWNrKQogewotICAgIHJldHVybiBtX2FjdGl2aXR5Q2FsbGJhY2suZ2V0
KCk7CisgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2FsbGJhY2s7Cit9CisK
K0dDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6ZnVsbEFjdGl2aXR5Q2FsbGJhY2soKQoreworICAg
IHJldHVybiBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLmdldCgpOworfQorCitHQ0FjdGl2aXR5Q2Fs
bGJhY2sqIEhlYXA6OmVkZW5BY3Rpdml0eUNhbGxiYWNrKCkKK3sKKyAgICByZXR1cm4gbV9lZGVu
QWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKIH0KIAogdm9pZCBIZWFwOjpzZXRJbmNyZW1lbnRhbFN3
ZWVwZXIoUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IHN3ZWVwZXIpCkBAIC0xMTI0LDE0
ICsxMTY0LDE2IEBAIEluY3JlbWVudGFsU3dlZXBlciogSGVhcDo6c3dlZXBlcigpCiAKIHZvaWQg
SGVhcDo6c2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCBlbmFibGUpCiB7Ci0g
ICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrLT5z
ZXRFbmFibGVkKGVuYWJsZSk7CisgICAgaWYgKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCisgICAg
ICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2stPnNldEVuYWJsZWQoZW5hYmxlKTsKKyAgICBpZiAo
bV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+
c2V0RW5hYmxlZChlbmFibGUpOwogfQogCiB2b2lkIEhlYXA6OmRpZEFsbG9jYXRlKHNpemVfdCBi
eXRlcykKIHsKLSAgICBpZiAobV9hY3Rpdml0eUNhbGxiYWNrKQotICAgICAgICBtX2FjdGl2aXR5
Q2FsbGJhY2stPmRpZEFsbG9jYXRlKG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVz
QWJhbmRvbmVkVGhpc0N5Y2xlKTsKKyAgICBpZiAobV9lZGVuQWN0aXZpdHlDYWxsYmFjaykKKyAg
ICAgICAgbV9lZGVuQWN0aXZpdHlDYWxsYmFjay0+ZGlkQWxsb2NhdGUobV9ieXRlc0FsbG9jYXRl
ZFRoaXNDeWNsZSArIG1fYnl0ZXNBYmFuZG9uZWRTaW5jZUxhc3RGdWxsQ29sbGVjdCk7CiAgICAg
bV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZSArPSBieXRlczsKIH0KIApAQCAtMTIxNCwxMSArMTI1
NiwyNyBAQCB2b2lkIEhlYXA6OmZsdXNoV3JpdGVCYXJyaWVyQnVmZmVyKEpTQ2VsCiAjZW5kaWYK
IH0KIAotYm9vbCBIZWFwOjpzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkgY29uc3QKK2Jvb2wgSGVh
cDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbihIZWFwT3BlcmF0aW9uIHJlcXVlc3RlZENvbGxlY3Rp
b25UeXBlKSBjb25zdAogewogI2lmIEVOQUJMRShHR0MpCi0gICAgcmV0dXJuIE9wdGlvbnM6OmFs
d2F5c0RvRnVsbENvbGxlY3Rpb24oKSB8fCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247CisgICAg
aWYgKE9wdGlvbnM6OmFsd2F5c0RvRnVsbENvbGxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICBzd2l0Y2ggKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBlKSB7CisgICAgY2FzZSBF
ZGVuQ29sbGVjdGlvbjoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgRnVsbENvbGxl
Y3Rpb246CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQW55Q29sbGVjdGlvbjoKKyAg
ICAgICAgcmV0dXJuIG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbjsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZh
bHNlOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdGVkQ29sbGVjdGlvblR5cGUpOwog
ICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgQ29waWVkU3BhY2U7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIEV4ZWN1
dGFibGVCYXNlOworICAgIGNsYXNzIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s7CisgICAgY2xhc3Mg
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiAg
ICAgY2xhc3MgR0NBd2FyZUpJVFN0dWJSb3V0aW5lOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9j
azsKQEAgLTExOCw4ICsxMjAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hcmtlZFNw
YWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICAgICAgTWFj
aGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4gbV9tYWNoaW5lVGhyZWFkczsg
fQogCi0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZp
dHlDYWxsYmFjaygpOwotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEFjdGl2aXR5
Q2FsbGJhY2soUGFzc093blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+KTsKKyAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBmdWxsQWN0aXZpdHlDYWxsYmFjaygpOwor
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGVkZW5BY3Rpdml0
eUNhbGxiYWNrKCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RnVsbEFjdGl2
aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPik7CisgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0RWRlbkFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0
cjxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPik7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQoYm9vbCk7CiAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgSW5jcmVtZW50YWxTd2VlcGVyKiBzd2VlcGVyKCk7CkBAIC0xNDgsOSAr
MTUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgICAgICBib29sIHNob3VsZENvbGxlY3QoKTsKLSAg
ICAgICAgdm9pZCBnY1RpbWVyRGlkRmlyZSgpIHsgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0g
dHJ1ZTsgfQotICAgICAgICB2b2lkIHNldFNob3VsZERvRnVsbENvbGxlY3Rpb24oYm9vbCBzaG91
bGREb0Z1bGxDb2xsZWN0aW9uKSB7IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlvbiA9IHNob3VsZERv
RnVsbENvbGxlY3Rpb247IH0KLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBjb2xsZWN0
KCk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29sbGVjdChIZWFwT3BlcmF0aW9u
IGNvbGxlY3Rpb25UeXBlID0gQW55Q29sbGVjdGlvbik7CiAgICAgICAgIGJvb2wgY29sbGVjdElm
TmVjZXNzYXJ5T3JEZWZlcigpOyAvLyBSZXR1cm5zIHRydWUgaWYgaXQgZGlkIGNvbGxlY3QuCiAK
ICAgICAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3Qoc2l6ZV90IGNvc3QpOwpAQCAtMTg2
LDggKzE4OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hJdGVy
YXRpbmcoKTsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hT
ZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAotICAgICAgICBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgeyBy
ZXR1cm4gbV9sYXN0R0NMZW5ndGg7IH0KLSAgICAgICAgdm9pZCBpbmNyZWFzZUxhc3RHQ0xlbmd0
aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEdDTGVuZ3RoICs9IGFtb3VudDsgfQorICAgICAgICBk
b3VibGUgbGFzdEZ1bGxHQ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEZ1bGxHQ0xlbmd0
aDsgfQorICAgICAgICBkb3VibGUgbGFzdEVkZW5HQ0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGFzdEVkZW5HQ0xlbmd0aDsgfQorICAgICAgICB2b2lkIGluY3JlYXNlTGFzdEZ1bGxHQ0xlbmd0
aChkb3VibGUgYW1vdW50KSB7IG1fbGFzdEZ1bGxHQ0xlbmd0aCArPSBhbW91bnQ7IH0KKworICAg
ICAgICBzaXplX3Qgc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVjdDsgfQorICAgICAgICBzaXplX3Qgc2l6ZUFmdGVy
TGFzdEVkZW5Db2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaXplQWZ0ZXJMYXN0RWRlbkNv
bGxlY3Q7IH0KKyAgICAgICAgc2l6ZV90IHNpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBtX3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7IH0KKyAgICAgICAgc2l6
ZV90IHNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUFm
dGVyTGFzdEZ1bGxDb2xsZWN0OyB9CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
ZWxldGVBbGxDb21waWxlZENvZGUoKTsKICAgICAgICAgdm9pZCBkZWxldGVBbGxVbmxpbmtlZEZ1
bmN0aW9uQ29kZSgpOwpAQCAtMjUyLDcgKzI2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNp
emVfdCk7CiAKICAgICAgICAgdm9pZCBzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCk7Ci0gICAgICAg
IHZvaWQgd2lsbFN0YXJ0Q29sbGVjdGlvbigpOworICAgICAgICB2b2lkIHdpbGxTdGFydENvbGxl
Y3Rpb24oSGVhcE9wZXJhdGlvbiBjb2xsZWN0aW9uVHlwZSk7CiAgICAgICAgIHZvaWQgZGVsZXRl
T2xkQ29kZShkb3VibGUgZ2NTdGFydFRpbWUpOwogICAgICAgICB2b2lkIGZsdXNoT2xkU3RydWN0
dXJlSURUYWJsZXMoKTsKICAgICAgICAgdm9pZCBmbHVzaFdyaXRlQmFycmllckJ1ZmZlcigpOwpA
QCAtMjk2LDcgKzMwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHpvbWJpZnlE
ZWFkT2JqZWN0cygpOwogICAgICAgICB2b2lkIG1hcmtEZWFkT2JqZWN0cygpOwogCi0gICAgICAg
IGJvb2wgc2hvdWxkRG9GdWxsQ29sbGVjdGlvbigpIGNvbnN0OworICAgICAgICBib29sIHNob3Vs
ZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSkg
Y29uc3Q7CiAgICAgICAgIHNpemVfdCBzaXplQWZ0ZXJDb2xsZWN0KCk7CiAKICAgICAgICAgSlNT
dGFjayYgc3RhY2soKTsKQEAgLTMwOSw5ICszMTcsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGNvbnN0IHNpemVfdCBtX3JhbVNpemU7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX21pbkJ5
dGVzUGVyQ3ljbGU7CiAgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxhc3RDb2xsZWN0OworICAg
ICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBt
X3NpemVCZWZvcmVMYXN0RnVsbENvbGxlY3Q7CisgICAgICAgIHNpemVfdCBtX3NpemVBZnRlckxh
c3RFZGVuQ29sbGVjdDsKKyAgICAgICAgc2l6ZV90IG1fc2l6ZUJlZm9yZUxhc3RFZGVuQ29sbGVj
dDsKIAogICAgICAgICBzaXplX3QgbV9ieXRlc0FsbG9jYXRlZFRoaXNDeWNsZTsKLSAgICAgICAg
c2l6ZV90IG1fYnl0ZXNBYmFuZG9uZWRUaGlzQ3ljbGU7CisgICAgICAgIHNpemVfdCBtX2J5dGVz
QWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3Q7CiAgICAgICAgIHNpemVfdCBtX21heEVkZW5T
aXplOwogICAgICAgICBzaXplX3QgbV9tYXhIZWFwU2l6ZTsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZERvRnVsbENvbGxlY3Rpb247CkBAIC0zNDksMTIgKzM2MSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgV3JpdGVCYXJyaWVyQnVmZmVyIG1fd3JpdGVCYXJyaWVyQnVmZmVyOwogCiAgICAg
ICAgIFZNKiBtX3ZtOwotICAgICAgICBkb3VibGUgbV9sYXN0R0NMZW5ndGg7CisgICAgICAgIGRv
dWJsZSBtX2xhc3RGdWxsR0NMZW5ndGg7CisgICAgICAgIGRvdWJsZSBtX2xhc3RFZGVuR0NMZW5n
dGg7CiAgICAgICAgIGRvdWJsZSBtX2xhc3RDb2RlRGlzY2FyZFRpbWU7CiAKICAgICAgICAgRG91
Ymx5TGlua2VkTGlzdDxFeGVjdXRhYmxlQmFzZT4gbV9jb21waWxlZENvZGU7CiAgICAgICAgIAot
ICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7Cisg
ICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2s7
CisgICAgICAgIFJlZlB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+IG1fZWRlbkFjdGl2aXR5Q2FsbGJh
Y2s7CiAgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKICAgICAg
ICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja1NuYXBzaG90OwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJKHJldmlzaW9uIDE2
NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBPcGVyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotZW51bSBI
ZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFsbG9jYXRpb24sIEZ1bGxDb2xsZWN0aW9uLCBF
ZGVuQ29sbGVjdGlvbiB9OworZW51bSBIZWFwT3BlcmF0aW9uIHsgTm9PcGVyYXRpb24sIEFsbG9j
YXRpb24sIEZ1bGxDb2xsZWN0aW9uLCBFZGVuQ29sbGVjdGlvbiwgQW55Q29sbGVjdGlvbiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMs
NyArMjMzLDcgQEAgdm9pZCBIZWFwU3RhdGlzdGljczo6c2hvd09iamVjdFN0YXRpc3RpYwogICAg
IGRhdGFMb2dGKCJcbj09PSBIZWFwIFN0YXRpc3RpY3M6ID09PVxuIik7CiAgICAgZGF0YUxvZ0Yo
InNpemU6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFwLT5tX3NpemVBZnRlckxhc3RD
b2xsZWN0IC8gS0IpKTsKICAgICBkYXRhTG9nRigiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNf
Y2FzdDxsb25nPihoZWFwLT5jYXBhY2l0eSgpIC8gS0IpKTsKLSAgICBkYXRhTG9nRigicGF1c2Ug
dGltZTogJWxmbXNcblxuIiwgaGVhcC0+bV9sYXN0R0NMZW5ndGgpOworICAgIGRhdGFMb2dGKCJw
YXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBoZWFwLT5tX2xhc3RGdWxsR0NMZW5ndGgpOwogCiAgICAg
U3RvcmFnZVN0YXRpc3RpY3Mgc3RvcmFnZVN0YXRpc3RpY3M7CiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwVGltZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw4ICs4NSwxMCBAQCB2b2lkIEhlYXBUaW1lcjo6dGltZXJEaWRGaXJlKENGUnVuTG9vcFRp
CiAgICAgfQogCiAgICAgSGVhcFRpbWVyKiBoZWFwVGltZXIgPSAwOwotICAgIGlmICh2bS0+aGVh
cC5hY3Rpdml0eUNhbGxiYWNrKCkgJiYgdm0tPmhlYXAuYWN0aXZpdHlDYWxsYmFjaygpLT5tX3Rp
bWVyLmdldCgpID09IHRpbWVyKQotICAgICAgICBoZWFwVGltZXIgPSB2bS0+aGVhcC5hY3Rpdml0
eUNhbGxiYWNrKCk7CisgICAgaWYgKHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkgJiYg
dm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKS0+bV90aW1lci5nZXQoKSA9PSB0aW1lcikK
KyAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuZnVsbEFjdGl2aXR5Q2FsbGJhY2soKTsKKyAg
ICBlbHNlIGlmICh2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpICYmIHZtLT5oZWFwLmVk
ZW5BY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGltZXIpCisgICAgICAgIGhl
YXBUaW1lciA9IHZtLT5oZWFwLmVkZW5BY3Rpdml0eUNhbGxiYWNrKCk7CiAgICAgZWxzZSBpZiAo
dm0tPmhlYXAuc3dlZXBlcigpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQogICAgICAgICBoZWFw
VGltZXIgPSB2bS0+aGVhcC5zd2VlcGVyKCk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiAr
MjQyLDEwIEBAIHR5cGVkZWYgT3B0aW9uUmFuZ2Ugb3B0aW9uUmFuZ2U7CiAgICAgdihkb3VibGUs
IG1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24sIDAuOSkgXAogICAgIHYoZG91YmxlLCBtaW5NYXJr
ZWRCbG9ja1V0aWxpemF0aW9uLCAwLjkpIFwKICAgICBcCisgICAgdihkb3VibGUsIHBlcmNlbnRD
UFVQZXJNQkZvckZ1bGxUaW1lciwgMC4wMDAzMTI1KSBcCisgICAgdihkb3VibGUsIHBlcmNlbnRD
UFVQZXJNQkZvckVkZW5UaW1lciwgMC4wMDI1KSBcCisgICAgdihkb3VibGUsIGNvbGxlY3Rpb25U
aW1lck1heFBlcmNlbnRDUFUsIDAuMDUpIFwKKyAgICBcCiAgICAgdihib29sLCBmb3JjZVdlYWtS
YW5kb21TZWVkLCBmYWxzZSkgXAogICAgIHYodW5zaWduZWQsIGZvcmNlZFdlYWtSYW5kb21TZWVk
LCAwKSBcCiAgICAgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQt
MDMtMTggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBHQyB0aW1lciBzaG91bGQgaW50ZWxsaWdlbnRseSBjaG9vc2UgYmV0d2VlbiBFZGVuQ29sbGVj
dGlvbnMgYW5kIEZ1bGxDb2xsZWN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI4MjYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgIFVwZGF0ZWQgV2ViU2Fm
ZUdDQWN0aXZpdHlDYWxsYmFja3MgZm9yIGJvdGggRWRlbiBhbmQgRnVsbCB0aW1lcnMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oOgorCiAy
MDE0LTAzLTE4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTY1ODE1LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFj
a0lPUy5oCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNiAr
MjcsNDIgQEAKICNkZWZpbmUgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFja0lPU19oCiAKICNpbmNs
dWRlICJXZWJDb3JlVGhyZWFkLmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR0NBY3Rpdml0
eUNhbGxiYWNrLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2su
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJTYWZlR0NBY3Rpdml0eUNhbGxi
YWNrIGZpbmFsIDogcHVibGljIEpTQzo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayB7CitjbGFz
cyBXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayBmaW5hbCA6IHB1YmxpYyBKU0M6OkZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNh
ZmVHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkhlYXAqIGhlYXApCisgICAgc3RhdGlj
IFBhc3NPd25QdHI8V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShKU0M6Okhl
YXAqIGhlYXApCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNhZmVHQ0Fj
dGl2aXR5Q2FsbGJhY2soaGVhcCkpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNh
ZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5X
ZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB+V2Vi
U2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KIAogcHJpdmF0ZToKLSAg
ICBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKLSAgICAgICAgOiBK
U0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgpKQor
ICAgIFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEpTQzo6SGVhcCogaGVhcCkKKyAgICAg
ICAgOiBKU0M6OkZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgV2ViVGhyZWFkUnVuTG9vcCgp
KQogICAgIHsKICAgICB9CiB9OwogCitjbGFzcyBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFj
ayBmaW5hbCA6IHB1YmxpYyBKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2sgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVh
dGUoSlNDOjpIZWFwKiBoZWFwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBX
ZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CisgICAgfQorCisgICAgdmlydHVh
bCB+V2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCisg
ICAgICAgIDogSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1bkxv
b3AoKSkKKyAgICB7CisgICAgfQorfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1NfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227142</attachid>
            <date>2014-03-18 18:37:56 -0700</date>
            <delta_ts>2014-03-19 13:30:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128261-20140318183635.patch</filename>
            <type>text/plain</type>
            <size>53220</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY1ODI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRl
bkNvbGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIEdDcyB3aGlsZSBicm93c2luZyB0
aGUgd2ViIGFyZSBkdWUgdG8gdGhlIEdDIHRpbWVyLiBDdXJyZW50bHkgdGhlIEdDIHRpbWVyIAor
ICAgICAgICBhbHdheXMgZG9lcyBGdWxsQ29sbGVjdGlvbnMuIFRvIHJlZHVjZSB0aGUgaW1wYWN0
IG9mIHRoZSBHQyB0aW1lciBvbiB0aGUgc3lzdGVtIHRoaXMgcGF0Y2gKKyAgICAgICAgY2hhbmdl
cyBIZWFwIHNvIHRoYXQgaXQgaGFzIHR3byB0aW1lcnMsIG9uZSBmb3IgZWFjaCB0eXBlIG9mIGNv
bGxlY3Rpb24uIFRoZSBGdWxsQ29sbGVjdGlvbgorICAgICAgICB0aW1lciBpcyBub3RpZmllZCBh
dCB0aGUgZW5kIG9mIEVkZW5Db2xsZWN0aW9ucyBob3cgbXVjaCB0aGUgSGVhcCBoYXMgZ3Jvd24g
c2luY2UgdGhlIGxhc3QgCisgICAgICAgIEZ1bGxDb2xsZWN0aW9uIGFuZCB3aGVuIHNvbWVib2R5
IG5vdGlmaWVzIHRoZSBIZWFwIG9mIGFiYW5kb25lZCBtZW1vcnkgKHdoaWNoIHVzdWFsbHkgd291
bGRuJ3QgCisgICAgICAgIGJlIGRldGVjdGVkIGJ5IGFuIEVkZW5Db2xsZWN0aW9uKS4KKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OkVkZW5HQ0FjdGl2aXR5Q2FsbGJh
Y2spOgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24p
OgorICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUpOgorICAgICAg
ICAoSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpnY1RpbWVTbGljZSk6CisgICAgICAgICog
aGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFZGVu
R0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpT
Qzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIpOgorICAgICAgICAqIGhlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpGdWxsR0NB
Y3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZG9Db2xsZWN0aW9uKToKKyAgICAgICAgKEpTQzo6RnVs
bEdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6RnVsbEdD
QWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKToKKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZp
dHlDYWxsYmFjazo6Z2NUaW1lU2xpY2UpOgorICAgICAgICAqIGhlYXAvRnVsbEdDQWN0aXZpdHlD
YWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6
RnVsbEdDQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6Y3JlYXRlRnVsbFRpbWVyKToKKyAgICAgICAgKiBoZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5j
cHA6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFjazo6R0NBY3Rpdml0eUNhbGxiYWNr
KToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmspOgorICAgICAgICAo
SlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNjaGVkdWxlVGltZXIpOgorICAgICAgICAoSlNDOjpH
Q0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKToKKyAgICAgICAgKEpTQzo6R0NBY3Rpdml0
eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZSk6CisgICAgICAgIChKU0M6OkdDQWN0aXZpdHlDYWxsYmFj
azo6d2lsbENvbGxlY3QpOgorICAgICAgICAoSlNDOjpHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNl
bCk6CisgICAgICAgICogaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaDoKKyAgICAgICAgKEpTQzo6
R0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2spOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OkhlYXApOgorICAgICAgICAoSlNDOjpIZWFw
OjpyZXBvcnRBYmFuZG9uZWRPYmplY3RHcmFwaCk6CisgICAgICAgIChKU0M6OkhlYXA6OmRpZEFi
YW5kb24pOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSk6CisgICAgICAg
IChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAoSlNDOjpIZWFwOjp3aWxsU3RhcnRDb2xs
ZWN0aW9uKToKKyAgICAgICAgKEpTQzo6SGVhcDo6dXBkYXRlQWxsb2NhdGlvbkxpbWl0cyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmRpZEZpbmlzaENvbGxlY3Rpb24pOgorICAgICAgICAoSlNDOjpI
ZWFwOjpzZXRGdWxsQWN0aXZpdHlDYWxsYmFjayk6CisgICAgICAgIChKU0M6OkhlYXA6OnNldEVk
ZW5BY3Rpdml0eUNhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnVsbEFjdGl2aXR5Q2Fs
bGJhY2spOgorICAgICAgICAoSlNDOjpIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjayk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6ZGlkQWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpIZWFwOjpzaG91bGRE
b0Z1bGxDb2xsZWN0aW9uKToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bGFzdEZ1bGxHQ0xlbmd0aCk6CisgICAgICAgIChKU0M6OkhlYXA6Omxhc3RFZGVuR0NM
ZW5ndGgpOgorICAgICAgICAoSlNDOjpIZWFwOjppbmNyZWFzZUxhc3RGdWxsR0NMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpzaXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6SGVhcDo6c2l6ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgIChKU0M6Okhl
YXA6OnNpemVBZnRlckxhc3RGdWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaGVhcC9IZWFwT3Bl
cmF0aW9uLmg6CisgICAgICAgICogaGVhcC9IZWFwU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChK
U0M6OkhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyk6CisgICAgICAgICogaGVh
cC9IZWFwVGltZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVGltZXI6OnRpbWVyRGlkRmlyZSk6
CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uRnVsbEdDKToKKyAgICAgICAg
KGZ1bmN0aW9uRWRlbkdDKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxNC0w
My0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgRlRM
IGVuYWJsaW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTYsNiArMjE2LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBoZWFwL0NvcGllZFNwYWNlLmNwcAogICAgIGhlYXAvQ29weVZpc2l0b3IuY3BwCiAgICAg
aGVhcC9EZWZlckdDLmNwcAorICAgIGhlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAKKyAg
ICBoZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCiAgICAgaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suY3BwCiAgICAgaGVhcC9HQ1RocmVhZC5jcHAKICAgICBoZWFwL0dDVGhyZWFkU2hhcmVk
RGF0YS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTU5LDYgKzU1OSwxMCBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9EZWZlckdDLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRGVmZXJHQy5oIFwKICAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9EZWxheWVkUmVsZWFzZVNjb3BlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDQWN0aXZpdHlDYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJl
dmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzcsMTggKzU3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uR0NBCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uRnVsbEdD
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBI
ZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERvRnVsbENvbGxl
Y3Rpb24odHJ1ZSk7Ci0gICAgZXhlYy0+aGVhcCgpLT5jb2xsZWN0KCk7CisgICAgZXhlYy0+aGVh
cCgpLT5jb2xsZWN0KEZ1bGxDb2xsZWN0aW9uKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uRWRlbkdDKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVj
KTsKLSAgICBIZWFwKiBoZWFwID0gZXhlYy0+aGVhcCgpOwotICAgIGhlYXAtPnNldFNob3VsZERv
RnVsbENvbGxlY3Rpb24oZmFsc2UpOwotICAgIGhlYXAtPmNvbGxlY3QoKTsKKyAgICBleGVjLT5o
ZWFwKCktPmNvbGxlY3QoRWRlbkNvbGxlY3Rpb24pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNDY0LDYgKzQ2NCw4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXENv
cGllZFNwYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcQ29weVZp
c2l0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmNw
cCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcRWRlbkdDQWN0aXZpdHlDYWxs
YmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxH
Q1RocmVhZC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEdDVGhyZWFk
U2hhcmVkRGF0YS5jcHAiIC8+CkBAIC0xMDQ2LDYgKzEwNDgsOCBAQAogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caGVhcFxDb3B5V3JpdGVCYXJyaWVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxoZWFwXERlZmVyR0MuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRGVsYXllZFJlbGVhc2VTY29wZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caGVhcFxFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxoZWFwXEdDU2VnbWVudGVkQXJyYXkuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGhlYXBcR0NTZWdtZW50ZWRBcnJheUlubGluZXMuaCIgLz4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlz
aW9uIDE2NTgyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkod29ya2luZyBjb3B5KQpAQCAtMjI4
LDYgKzIyOCwxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxDb3B5VmlzaXRv
ci5jcHAiPgogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3Bw
Ij4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+Cisg
ICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGhlYXBcR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCI+CiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTE2ODUsNiArMTY5MSwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxEZWZlckdDLmgiPgogICAgICAgPEZp
bHRlcj5oZWFwPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxoZWFwXEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCI+CisgICAgICA8RmlsdGVyPmhl
YXA8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGhlYXBcRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIj4KKyAgICAgIDxGaWx0ZXI+aGVhcDwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCI+CiAgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
NjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg2LDYgKzc4NiwxMCBAQAogCQky
QTY4Mjk1QjE4NzVGODA1MDBCNkMzRTIgLyogQ29weVdyaXRlQmFycmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2ODI5NUExODc1RjgwNTAwQjZD
M0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkyQTZGNDYyNjE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkE2
RjQ2MjUxN0U5NTlDRTAwQzQ1Qzk4IC8qIEhlYXBPcGVyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyQTdBNThFRjE4MDhBNEM0MDAyMEJE
RjcgLyogRGVmZXJHQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyQTdBNThFRTE4MDhBNEM0MDAyMEJERjcgLyogRGVmZXJHQy5jcHAgKi87IH07CisJ
CTJBODM2Mzg1MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2MzgzMThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJMkE4
MzYzODYxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBODM2Mzg0MThEN0QwRUUw
MDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkE4MzYzODkxOEQ3RDBGRTAwMDBFQkNDIC8q
IEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkE4MzYzODcxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2
aXR5Q2FsbGJhY2suY3BwICovOyB9OworCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkyQUFBQTMxMjE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQUFBQTMxMDE4QkQ0OUQxMDAz
OTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkFBQ0U2M0MxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAq
LzsgfTsKIAkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFBQ0U2M0Ix
OENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjcwLDYgKzIyNzQsMTAgQEAKIAkJ
MkE2ODI5NUExODc1RjgwNTAwQjZDM0UyIC8qIENvcHlXcml0ZUJhcnJpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdyaXRlQmFycmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQTZGNDYyNTE3RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwT3BlcmF0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBN0E1OEVFMTgwOEE0QzQwMDIwQkRGNyAvKiBE
ZWZlckdDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlZmVyR0Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4MzE4RDdEMEVFMDAwMEVC
Q0MgLyogRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODQxOEQ3RDBFRTAwMDBFQkNDIC8qIEVkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRlbkdDQWN0aXZp
dHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQTgzNjM4NzE4RDdE
MEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkE4MzYzODgxOEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVs
bEdDQWN0aXZpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQUFB
QTMxMDE4QkQ0OUQxMDAzOTRDQzggLyogU3RydWN0dXJlSURCbG9iLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZUlEQmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyQUFDRTYzQTE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNr
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdDQWN0aXZpdHlDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJBQUNFNjNCMThDQTVBMDMw
MEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjA1LDYgKzM2MTMsMTAgQEAKIAkJCQkyQTRFQzkwQTE4NjBENkMyMDA5NEY3ODIgLyog
V3JpdGVCYXJyaWVyQnVmZmVyLmggKi8sCiAJCQkJMEZDODE1MDgxNDA0M0JDQTAwQ0ZBNjAzIC8q
IFdyaXRlQmFycmllclN1cHBvcnQuY3BwICovLAogCQkJCTBGQzgxNTA5MTQwNDNCRDIwMENGQTYw
MyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmggKi8sCisJCQkJMkE4MzYzODMxOEQ3RDBFRTAwMDBF
QkNDIC8qIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJBODM2Mzg0MThEN0Qw
RUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCisJCQkJMkE4MzYzODcx
OEQ3RDBGRTAwMDBFQkNDIC8qIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovLAorCQkJCTJB
ODM2Mzg4MThEN0QwRkUwMDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNDky
Niw2ICs0OTM4LDggQEAKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5z
cGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5
MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCTJBODM2Mzg2MThE
N0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQUEzMTIxOEJENDlEMTAwMzk0Q0M4IC8qIFN0cnVjdHVy
ZUlEQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0RThFQjExOEJGRkJCRTAwNTU2RDI4IC8q
IEdDU2VnbWVudGVkQXJyYXlJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkFERDE0NTBG
RERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNjIz
MCw2ICs2MjQ0LDcgQEAKIAkJCQkxNDdGMzlDMjEwN0VDMzc2MDA0MjdBNDggLyogQ29tcGxldGlv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDZCMTZEODEyRUI1QjU5MDAxQkVDMUIgLyogQ29u
c2VydmF0aXZlUm9vdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVGRDAwNzkxODlCMDUxMDAw
NjMzMjMxIC8qIENvbnNvbGVNZXNzYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg1
MThEN0QwRUUwMDAwRUJDQyAvKiBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODJFMTA3RUMwNTcwMDEzRTdCMiAvKiBDb25zdHJ1Y3REYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE1N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTY1MzEsNiArNjU0Niw3
IEBACiAJCQkJMEY5MTlEMTAxNTdGMzMyOTAwNEE0RTdEIC8qIEpTU2VnbWVudGVkVmFyaWFibGVP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8q
IEpTU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3OTBERDZGMTgyRjQ5OTcwMDU4ODgwNyAv
KiBKU1NldEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJBODM2Mzg5MThEN0QwRkUw
MDAwRUJDQyAvKiBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MjgwODNBMTA3RUMwNzUwMDEzRTdCMiAvKiBKU1N0YWNrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0N0YzOUQ1MTA3RUMzNzYwMDQyN0E0OCAvKiBKU1N0cmluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyNjAwQjVBNjE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rp
dml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAiVk0uaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkKKworRWRlbkdDQWN0
aXZpdHlDYWxsYmFjazo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorICAgIDog
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApCit7Cit9CisKK3ZvaWQgRWRlbkdDQWN0aXZpdHlDYWxs
YmFjazo6ZG9Db2xsZWN0aW9uKCkKK3sKKyAgICBtX3ZtLT5oZWFwLmNvbGxlY3QoRWRlbkNvbGxl
Y3Rpb24pOworfQorCitkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3Ro
KCkKK3sKKyAgICByZXR1cm4gbV92bS0+aGVhcC5sYXN0RWRlbkdDTGVuZ3RoKCk7Cit9CisKK2Rv
dWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkZWF0aFJhdGUoKQoreworICAgIEhlYXAqIGhl
YXAgPSAmbV92bS0+aGVhcDsKKyAgICBzaXplX3Qgc2l6ZUJlZm9yZSA9IGhlYXAtPnNpemVCZWZv
cmVMYXN0RWRlbkNvbGxlY3Rpb24oKTsKKyAgICBzaXplX3Qgc2l6ZUFmdGVyID0gaGVhcC0+c2l6
ZUFmdGVyTGFzdEVkZW5Db2xsZWN0aW9uKCk7CisgICAgaWYgKCFzaXplQmVmb3JlKQorICAgICAg
ICByZXR1cm4gMS4wOworICAgIHJldHVybiBkb3VibGUoc2l6ZUJlZm9yZSAtIHNpemVBZnRlcikg
LyBkb3VibGUoc2l6ZUJlZm9yZSk7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
OjpnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMpCit7CisgICAgcmV0dXJuIHN0ZDo6bWluKChzdGF0
aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIE9wdGlvbnM6OnBlcmNlbnRDUFVQZXJNQkZv
ckVkZW5UaW1lcigpLCBPcHRpb25zOjpjb2xsZWN0aW9uVGltZXJNYXhQZXJjZW50Q1BVKCkpOwor
fQorCisjZWxzZQorCitFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpFZGVuR0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqIGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSkKK3sK
K30KKwordm9pZCBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworfQor
Citkb3VibGUgRWRlbkdDQWN0aXZpdHlDYWxsYmFjazo6bGFzdEdDTGVuZ3RoKCkKK3sKKyAgICBy
ZXR1cm4gMDsKK30KKworZG91YmxlIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK2RvdWJsZSBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOjpn
Y1RpbWVTbGljZShzaXplX3QpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyBVU0Uo
Q0YpIHx8IFBMQVRGT1JNKEVGTCkKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlDYWxsYmFjay5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdDQWN0aXZpdHlD
YWxsYmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2tfaAorI2RlZmluZSBFZGVuR0NBY3Rpdml0eUNh
bGxiYWNrX2gKKworI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRWRlbkdDQWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5
Q2FsbGJhY2sgeworcHVibGljOgorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwor
CisgICAgdmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpIG92ZXJyaWRlOworCitwcm90ZWN0ZWQ6
CisjaWYgVVNFKENGKQorICAgIEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZS
dW5Mb29wUmVmIHJ1bkxvb3ApCisgICAgICAgIDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIHJ1
bkxvb3ApCisgICAgeworICAgIH0KKyNlbmRpZgorCisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdD
TGVuZ3RoKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBkb3VibGUgZ2NUaW1lU2xpY2Uoc2l6ZV90
IGJ5dGVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlk
ZTsKK307CisKK2lubGluZSBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gR0NBY3Rpdml0
eUNhbGxiYWNrOjpjcmVhdGVFZGVuVGltZXIoSGVhcCogaGVhcCkKK3sKKyAgICByZXR1cm4gc19z
aG91bGRDcmVhdGVHQ1RpbWVyID8gYWRvcHRSZWYobmV3IEVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2so
aGVhcCkpIDogbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBF
ZGVuR0NBY3Rpdml0eUNhbGxiYWNrX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgorCisjaW5jbHVkZSAi
Vk0uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpIHx8IFBMQVRGT1JNKEVGTCkK
KworI2lmICFQTEFURk9STShJT1MpCitjb25zdCBkb3VibGUgcGFnaW5nVGltZU91dCA9IDAuMTsg
Ly8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMgdGltZXIgdG8gaXRlcmF0
ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlzIHBhZ2VkIG91dC4KKyNlbmRp
ZgorCitGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAq
IGhlYXApCisgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkKK3sKK30KKwordm9pZCBGdWxs
R0NBY3Rpdml0eUNhbGxiYWNrOjpkb0NvbGxlY3Rpb24oKQoreworICAgIEhlYXAqIGhlYXAgPSAm
bV92bS0+aGVhcDsKKworI2lmICFQTEFURk9STShJT1MpCisgICAgZG91YmxlIHN0YXJ0VGltZSA9
IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgaWYgKGhlYXAtPmlzUGFn
ZWRPdXQoc3RhcnRUaW1lICsgcGFnaW5nVGltZU91dCkpIHsKKyAgICAgICAgY2FuY2VsKCk7Cisg
ICAgICAgIGhlYXAtPmluY3JlYXNlTGFzdEZ1bGxHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgaGVhcC0+Y29sbGVjdChGdWxsQ29s
bGVjdGlvbik7Cit9CisKK2RvdWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5n
dGgoKQoreworICAgIHJldHVybiBtX3ZtLT5oZWFwLmxhc3RGdWxsR0NMZW5ndGgoKTsKK30KKwor
ZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRlYXRoUmF0ZSgpCit7CisgICAgSGVhcCog
aGVhcCA9ICZtX3ZtLT5oZWFwOworICAgIHNpemVfdCBzaXplQmVmb3JlID0gaGVhcC0+c2l6ZUJl
Zm9yZUxhc3RGdWxsQ29sbGVjdGlvbigpOworICAgIHNpemVfdCBzaXplQWZ0ZXIgPSBoZWFwLT5z
aXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKTsKKyAgICBpZiAoIXNpemVCZWZvcmUpCisgICAg
ICAgIHJldHVybiAxLjA7CisgICAgcmV0dXJuIGRvdWJsZShzaXplQmVmb3JlIC0gc2l6ZUFmdGVy
KSAvIGRvdWJsZShzaXplQmVmb3JlKTsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2s6OmdjVGltZVNsaWNlKHNpemVfdCBieXRlcykKK3sKKyAgICByZXR1cm4gc3RkOjptaW4oKHN0
YXRpY19jYXN0PGRvdWJsZT4oYnl0ZXMpIC8gTUIpICogT3B0aW9uczo6cGVyY2VudENQVVBlck1C
Rm9yRnVsbFRpbWVyKCksIE9wdGlvbnM6OmNvbGxlY3Rpb25UaW1lck1heFBlcmNlbnRDUFUoKSk7
Cit9CisKKyNlbHNlCisKK0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OkZ1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2soSGVhcCogaGVhcCkKKyAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKQoreworfQor
Cit2b2lkIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvQ29sbGVjdGlvbigpCit7Cit9CisKK2Rv
dWJsZSBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrOjpsYXN0R0NMZW5ndGgoKQoreworICAgIHJldHVy
biAwOworfQorCitkb3VibGUgRnVsbEdDQWN0aXZpdHlDYWxsYmFjazo6ZGVhdGhSYXRlKCkKK3sK
KyAgICByZXR1cm4gMDsKK30KKworZG91YmxlIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s6OmdjVGlt
ZVNsaWNlKHNpemVfdCkKK3sKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmIC8vIFVTRShDRikg
fHwgUExBVEZPUk0oRUZMKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRnVsbEdDQWN0aXZpdHlDYWxsYmFja19oCisjZGVmaW5lIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJh
Y2tfaAorCisjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBGdWxsR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEdDQWN0aXZpdHlDYWxs
YmFjayB7CitwdWJsaWM6CisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKik7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7CisKK3Byb3RlY3RlZDoKKyNp
ZiBVU0UoQ0YpCisgICAgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwLCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkKKyAgICAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCwgcnVuTG9v
cCkKKyAgICB7CisgICAgfQorI2VuZGlmCisKKyAgICB2aXJ0dWFsIGRvdWJsZSBsYXN0R0NMZW5n
dGgoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGRvdWJsZSBnY1RpbWVTbGljZShzaXplX3QgYnl0
ZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpIG92ZXJyaWRlOwor
fTsKKworaW5saW5lIFBhc3NSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2Fs
bGJhY2s6OmNyZWF0ZUZ1bGxUaW1lcihIZWFwKiBoZWFwKQoreworICAgIHJldHVybiBzX3Nob3Vs
ZENyZWF0ZUdDVGltZXIgPyBhZG9wdFJlZihuZXcgRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhoZWFw
KSkgOiBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEZ1bGxH
Q0FjdGl2aXR5Q2FsbGJhY2tfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NB
Y3Rpdml0eUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAxNjU4MjYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NywzOSArNDcsMjYgQEAgYm9vbCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OnNfc2hvdWxkQ3Jl
YXRlRwogCiAjaWYgVVNFKENGKSB8fCBQTEFURk9STShFRkwpCiAKLWNvbnN0IGRvdWJsZSBnY1Rp
bWVTbGljZVBlck1CID0gMC4wMTsgLy8gUGVyY2VudGFnZSBvZiBDUFUgdGltZSB3ZSB3aWxsIHNw
ZW5kIHRvIHJlY2xhaW0gMSBNQgotY29uc3QgZG91YmxlIG1heEdDVGltZVNsaWNlID0gMC4wNTsg
Ly8gVGhlIG1heGltdW0gYW1vdW50IG9mIENQVSB0aW1lIHdlIHdhbnQgdG8gdXNlIGZvciBvcHBv
cnR1bmlzdGljIHRpbWVyLXRyaWdnZXJlZCBjb2xsZWN0aW9ucy4KIGNvbnN0IGRvdWJsZSB0aW1l
clNsb3AgPSAyLjA7IC8vIEZ1ZGdlIGZhY3RvciB0byBhdm9pZCBwZXJmb3JtYW5jZSBjb3N0IG9m
IHJlc2V0dGluZyB0aW1lci4KIAotI2lmICFQTEFURk9STShJT1MpCi1jb25zdCBkb3VibGUgcGFn
aW5nVGltZU91dCA9IDAuMTsgLy8gVGltZSBpbiBzZWNvbmRzIHRvIGFsbG93IG9wcG9ydHVuaXN0
aWMgdGltZXIgdG8gaXRlcmF0ZSBvdmVyIGFsbCBibG9ja3MgdG8gc2VlIGlmIHRoZSBIZWFwIGlz
IHBhZ2VkIG91dC4KLSNlbmRpZgotCi0jaWYgIVVTRShDRikKLWNvbnN0IGRvdWJsZSBob3VyID0g
NjAgKiA2MDsKLSNlbmRpZgotCiAjaWYgVVNFKENGKQotRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFj
azo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQorR0NBY3Rpdml0eUNhbGxi
YWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCkKICAgICA6IEdDQWN0aXZpdHlDYWxs
YmFjayhoZWFwLT52bSgpLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpCi0gICAgLCBtX2RlbGF5KHNf
ZGVjYWRlKQogewogfQogCi1EZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rp
dml0eUNhbGxiYWNrKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQorR0NBY3Rpdml0
eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3ApCiAgICAgOiBHQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcC0+dm0oKSwgcnVuTG9vcCkKLSAg
ICAsIG1fZGVsYXkoc19kZWNhZGUpCiB7CiB9CiAjZWxpZiBQTEFURk9STShFRkwpCi1EZWZhdWx0
R0NBY3Rpdml0eUNhbGxiYWNrOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqIGhlYXAp
CitHQ0FjdGl2aXR5Q2FsbGJhY2s6OkdDQWN0aXZpdHlDYWxsYmFjayhIZWFwKiBoZWFwKQogICAg
IDogR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAtPnZtKCksIFdURjo6aXNNYWluVGhyZWFkKCkpCi0g
ICAgLCBtX2RlbGF5KGhvdXIpCiB7CiB9CiAjZW5kaWYKIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpkb1dvcmsoKQordm9pZCBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCiB7
CiAgICAgSGVhcCogaGVhcCA9ICZtX3ZtLT5oZWFwOwogICAgIGlmICghaXNFbmFibGVkKCkpCkBA
IC05MSwyMCArNzgsMTEgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkb1dvcmso
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgIVBMQVRGT1JNKElPUykKLSAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBp
ZiAoaGVhcC0+aXNQYWdlZE91dChzdGFydFRpbWUgKyBwYWdpbmdUaW1lT3V0KSkgewotICAgICAg
ICBoZWFwLT5hY3Rpdml0eUNhbGxiYWNrKCktPmNhbmNlbCgpOwotICAgICAgICBoZWFwLT5pbmNy
ZWFzZUxhc3RHQ0xlbmd0aChwYWdpbmdUaW1lT3V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSNlbmRpZgotICAgIGhlYXAtPmdjVGltZXJEaWRGaXJlKCk7Ci0gICAgaGVhcC0+Y29sbGVjdCgp
OworICAgIGRvQ29sbGVjdGlvbigpOwogfQotICAgIAorCiAjaWYgVVNFKENGKQotdm9pZCBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKK3Zv
aWQgR0NBY3Rpdml0eUNhbGxiYWNrOjpzY2hlZHVsZVRpbWVyKGRvdWJsZSBuZXdEZWxheSkKIHsK
ICAgICBpZiAobmV3RGVsYXkgKiB0aW1lclNsb3AgPiBtX2RlbGF5KQogICAgICAgICByZXR1cm47
CkBAIC0xMTMsMTMgKzkxLDEzIEBAIHZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2No
ZWR1bGUKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBD
RlJ1bkxvb3BUaW1lckdldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpKSAtIGRlbHRhKTsKIH0K
IAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCit2b2lkIEdD
QWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsVGltZXIoKQogewogICAgIG1fZGVsYXkgPSBzX2RlY2Fk
ZTsKICAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKSArIHNfZGVjYWRlKTsKIH0KICNlbGlmIFBMQVRGT1JNKEVG
TCkKLXZvaWQgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUg
bmV3RGVsYXkpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6c2NoZWR1bGVUaW1lcihkb3VibGUg
bmV3RGVsYXkpCiB7CiAgICAgaWYgKG5ld0RlbGF5ICogdGltZXJTbG9wID4gbV9kZWxheSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTMxLDE0ICsxMDksMTQgQEAgdm9pZCBEZWZhdWx0R0NBY3Rpdml0
eUNhbGxiYWNrOjpzY2hlZHVsZQogICAgIG1fdGltZXIgPSBhZGQobmV3RGVsYXksIHRoaXMpOwog
fQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNhbmNlbFRpbWVyKCkKK3ZvaWQg
R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWxUaW1lcigpCiB7Ci0gICAgbV9kZWxheSA9IGhvdXI7
CisgICAgbV9kZWxheSA9IHNfaG91cjsKICAgICBzdG9wKCk7CiB9CiAjZW5kaWYKIAotdm9pZCBE
ZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvY2F0ZShzaXplX3QgYnl0ZXMpCit2b2lk
IEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogewogI2lmIFBM
QVRGT1JNKEVGTCkKICAgICBpZiAoIWlzRW5hYmxlZCgpKQpAQCAtMTUxLDQyICsxMjksNDEgQEAg
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRBbGxvYwogICAgIC8vIFdlIHByZXRl
bmQgaXQncyBvbmUgYnl0ZSBzbyB0aGF0IHdlIGRvbid0IGlnbm9yZSB0aGlzIGFsbG9jYXRpb24g
ZW50aXJlbHkuCiAgICAgaWYgKCFieXRlcykKICAgICAgICAgYnl0ZXMgPSAxOwotICAgIEhlYXAq
IGhlYXAgPSBzdGF0aWNfY2FzdDxIZWFwKj4oJm1fdm0tPmhlYXApOwotICAgIGRvdWJsZSBnY1Rp
bWVTbGljZSA9IHN0ZDo6bWluKChzdGF0aWNfY2FzdDxkb3VibGU+KGJ5dGVzKSAvIE1CKSAqIGdj
VGltZVNsaWNlUGVyTUIsIG1heEdDVGltZVNsaWNlKTsKLSAgICBkb3VibGUgbmV3RGVsYXkgPSBo
ZWFwLT5sYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlOworICAgIGRvdWJsZSBieXRlc0V4cGVj
dGVkVG9SZWNsYWltID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihieXRlcykgKiBkZWF0aFJhdGUoKTsK
KyAgICBkb3VibGUgbmV3RGVsYXkgPSBsYXN0R0NMZW5ndGgoKSAvIGdjVGltZVNsaWNlKGJ5dGVz
RXhwZWN0ZWRUb1JlY2xhaW0pOwogICAgIHNjaGVkdWxlVGltZXIobmV3RGVsYXkpOwogfQogCi12
b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0KCkKK3ZvaWQgR0NBY3Rp
dml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAot
dm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjYW5jZWwoKQordm9pZCBHQ0FjdGl2aXR5
Q2FsbGJhY2s6OmNhbmNlbCgpCiB7CiAgICAgY2FuY2VsVGltZXIoKTsKIH0KIAogI2Vsc2UKIAot
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhIZWFw
KiBoZWFwKQorR0NBY3Rpdml0eUNhbGxiYWNrOjpHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCogaGVh
cCkKICAgICA6IEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLT52bSgpKQogewogfQogCi12b2lkIERl
ZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmRvV29yaygpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFj
azo6ZG9Xb3JrKCkKIHsKIH0KIAotdm9pZCBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpkaWRB
bGxvY2F0ZShzaXplX3QpCit2b2lkIEdDQWN0aXZpdHlDYWxsYmFjazo6ZGlkQWxsb2NhdGUoc2l6
ZV90KQogewogfQogCi12b2lkIERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OndpbGxDb2xsZWN0
KCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxiYWNrOjp3aWxsQ29sbGVjdCgpCiB7CiB9CiAKLXZvaWQg
RGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y2FuY2VsKCkKK3ZvaWQgR0NBY3Rpdml0eUNhbGxi
YWNrOjpjYW5jZWwoKQogewogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9H
Q0FjdGl2aXR5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIAogI2luY2x1ZGUgIkhlYXBUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAKICNpZiBVU0UoQ0YpCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KQEAgLTQxLDI4ICs0MSw0NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SGVhcDsKIAotY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrIDogcHVibGljIEhlYXBUaW1lciB7Citj
bGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2sgOiBwdWJsaWMgSGVhcFRpbWVyLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8R0NBY3Rpdml0eUNhbGxiYWNrPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFsbG9jYXRlKHNpemVfdCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDb2xsZWN0KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGNhbmNlbCgpIHsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4g
Y3JlYXRlRnVsbFRpbWVyKEhlYXAqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHQ0FjdGl2aXR5
Q2FsbGJhY2s+IGNyZWF0ZUVkZW5UaW1lcihIZWFwKik7CisKKyAgICBHQ0FjdGl2aXR5Q2FsbGJh
Y2soSGVhcCopOworCisgICAgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOworCisgICAg
dmlydHVhbCB2b2lkIGRvQ29sbGVjdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRB
bGxvY2F0ZShzaXplX3QpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpOworICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWwoKTsKICAgICBib29sIGlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5hYmxlZDsgfQogICAgIHZvaWQgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9lbmFi
bGVkID0gZW5hYmxlZDsgfQogCiAgICAgc3RhdGljIGJvb2wgc19zaG91bGRDcmVhdGVHQ1RpbWVy
OwogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBkb3VibGUgbGFzdEdDTGVuZ3RoKCkgPSAwOwor
ICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgPSAwOworICAgIHZp
cnR1YWwgZG91YmxlIGRlYXRoUmF0ZSgpID0gMDsKKwogI2lmIFVTRShDRikKICAgICBHQ0FjdGl2
aXR5Q2FsbGJhY2soVk0qIHZtLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKICAgICAgICAgOiBIZWFw
VGltZXIodm0sIHJ1bkxvb3ApCiAgICAgICAgICwgbV9lbmFibGVkKHRydWUpCisgICAgICAgICwg
bV9kZWxheShzX2RlY2FkZSkKICAgICB7CiAgICAgfQogI2VsaWYgUExBVEZPUk0oRUZMKQorICAg
IHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIHNfaG91ciA9IDM2MDA7CiAgICAgR0NBY3Rpdml0eUNh
bGxiYWNrKFZNKiB2bSwgYm9vbCBmbGFnKQogICAgICAgICA6IEhlYXBUaW1lcih2bSkKICAgICAg
ICAgLCBtX2VuYWJsZWQoZmxhZykKKyAgICAgICAgLCBtX2RlbGF5KHNfaG91cikKICAgICB7CiAg
ICAgfQogI2Vsc2UKQEAgLTc0LDIzICs5MCwxMCBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAg
IGJvb2wgbV9lbmFibGVkOwotfTsKLQotY2xhc3MgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayA6
IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s+IGNyZWF0ZShIZWFwKik7Ci0KLSAgICBEZWZh
dWx0R0NBY3Rpdml0eUNhbGxiYWNrKEhlYXAqKTsKLQotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgdm9pZCBkaWRBbGxvY2F0ZShzaXplX3QpIG92ZXJyaWRlOwotICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgdm9pZCB3aWxsQ29sbGVjdCgpIG92ZXJyaWRlOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSBvdmVycmlkZTsKLQotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZpcnR1YWwgdm9pZCBkb1dvcmsoKSBvdmVycmlkZTsKIAogI2lmIFVTRShDRikK
IHByb3RlY3RlZDoKLSAgICBKU19FWFBPUlRfUFJJVkFURSBEZWZhdWx0R0NBY3Rpdml0eUNhbGxi
YWNrKEhlYXAqLCBDRlJ1bkxvb3BSZWYpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEdDQWN0aXZp
dHlDYWxsYmFjayhIZWFwKiwgQ0ZSdW5Mb29wUmVmKTsKICNlbmRpZgogI2lmIFVTRShDRikgfHwg
UExBVEZPUk0oRUZMKQogcHJvdGVjdGVkOgpAQCAtMTAyLDExICsxMDUsNiBAQCBwcml2YXRlOgog
I2VuZGlmCiB9OwogCi1pbmxpbmUgUGFzc093blB0cjxEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNr
PiBEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUoSGVhcCogaGVhcCkKLXsKLSAgICBy
ZXR1cm4gR0NBY3Rpdml0eUNhbGxiYWNrOjpzX3Nob3VsZENyZWF0ZUdDVGltZXIgPyBhZG9wdFB0
cihuZXcgRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSkgOiBudWxscHRyOwotfQotCi19
Cit9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlICJD
b3B5VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJERkdXb3JrbGlzdC5oIgogI2luY2x1ZGUg
IkRlbGF5ZWRSZWxlYXNlU2NvcGUuaCIKKyNpbmNsdWRlICJFZGVuR0NBY3Rpdml0eUNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkdDQWN0
aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkdDSW5jb21pbmdSZWZDb3VudGVkU2V0SW5saW5l
cy5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjUzLDggKzI1NSwxMiBA
QCBIZWFwOjpIZWFwKFZNKiB2bSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBtX3JhbVNpemUo
cmFtU2l6ZSgpKQogICAgICwgbV9taW5CeXRlc1BlckN5Y2xlKG1pbkhlYXBTaXplKG1faGVhcFR5
cGUsIG1fcmFtU2l6ZSkpCiAgICAgLCBtX3NpemVBZnRlckxhc3RDb2xsZWN0KDApCisgICAgLCBt
X3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdCgwKQorICAgICwgbV9zaXplQmVmb3JlTGFzdEZ1bGxD
b2xsZWN0KDApCisgICAgLCBtX3NpemVBZnRlckxhc3RFZGVuQ29sbGVjdCgwKQorICAgICwgbV9z
aXplQmVmb3JlTGFzdEVkZW5Db2xsZWN0KDApCiAgICAgLCBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5
Y2xlKDApCi0gICAgLCBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlKDApCisgICAgLCBtX2J5dGVz
QWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3QoMCkKICAgICAsIG1fbWF4RWRlblNpemUobV9t
aW5CeXRlc1BlckN5Y2xlKQogICAgICwgbV9tYXhIZWFwU2l6ZShtX21pbkJ5dGVzUGVyQ3ljbGUp
CiAgICAgLCBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24oZmFsc2UpCkBAIC0yNzQsOSArMjgwLDE1
IEBAIEhlYXA6OkhlYXAoVk0qIHZtLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIG1faXNTYWZl
VG9Db2xsZWN0KGZhbHNlKQogICAgICwgbV93cml0ZUJhcnJpZXJCdWZmZXIoMjU2KQogICAgICwg
bV92bSh2bSkKLSAgICAsIG1fbGFzdEdDTGVuZ3RoKDApCisgICAgLCBtX2xhc3RGdWxsR0NMZW5n
dGgoMCkKKyAgICAsIG1fbGFzdEVkZW5HQ0xlbmd0aCgwKQogICAgICwgbV9sYXN0Q29kZURpc2Nh
cmRUaW1lKFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpCi0gICAgLCBtX2FjdGl2
aXR5Q2FsbGJhY2soRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQorICAg
ICwgbV9mdWxsQWN0aXZpdHlDYWxsYmFjayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUZ1bGxU
aW1lcih0aGlzKSkKKyNpZiBFTkFCTEUoR0dDKQorICAgICwgbV9lZGVuQWN0aXZpdHlDYWxsYmFj
ayhHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVkZW5UaW1lcih0aGlzKSkKKyNlbHNlCisgICAg
LCBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKG1fZnVsbEFjdGl2aXR5Q2FsbGJhY2spCisjZW5kaWYK
ICAgICAsIG1fc3dlZXBlcihJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAs
IG1fZGVmZXJyYWxEZXB0aCgwKQogewpAQCAtMzIzLDcgKzMzNSw3IEBAIHZvaWQgSGVhcDo6cmVw
b3J0QWJhbmRvbmVkT2JqZWN0R3JhcGgoKQogewogICAgIC8vIE91ciBjbGllbnRzIGRvbid0IGtu
b3cgZXhhY3RseSBob3cgbXVjaCBtZW1vcnkgdGhleQogICAgIC8vIGFyZSBhYmFuZG9uaW5nIHNv
IHdlIGp1c3QgZ3Vlc3MgZm9yIHRoZW0uCi0gICAgZG91YmxlIGFiYW5kb25lZEJ5dGVzID0gMC4x
MCAqIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3Q7CisgICAgZG91YmxlIGFiYW5kb25lZEJ5dGVzID0g
MC4xICogbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsKIAogICAgIC8vIFdlIHdhbnQgdG8gYWNjZWxl
cmF0ZSB0aGUgbmV4dCBjb2xsZWN0aW9uLiBCZWNhdXNlIG1lbW9yeSBoYXMganVzdCAKICAgICAv
LyBiZWVuIGFiYW5kb25lZCwgdGhlIG5leHQgY29sbGVjdGlvbiBoYXMgdGhlIHBvdGVudGlhbCB0
byAKQEAgLTMzNCw5ICszNDYsMTEgQEAgdm9pZCBIZWFwOjpyZXBvcnRBYmFuZG9uZWRPYmplY3RH
cmFwaCgpCiAKIHZvaWQgSGVhcDo6ZGlkQWJhbmRvbihzaXplX3QgYnl0ZXMpCiB7Ci0gICAgaWYg
KG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrLT5kaWRBbGxv
Y2F0ZShtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICsgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNs
ZSk7Ci0gICAgbV9ieXRlc0FiYW5kb25lZFRoaXNDeWNsZSArPSBieXRlczsKKyAgICBpZiAobV9m
dWxsQWN0aXZpdHlDYWxsYmFjaykgeworICAgICAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT5k
aWRBbGxvY2F0ZSgKKyAgICAgICAgICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgLSBtX3NpemVB
ZnRlckxhc3RGdWxsQ29sbGVjdCArIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVz
QWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3QpOworICAgIH0KKyAgICBtX2J5dGVzQWJhbmRv
bmVkU2luY2VMYXN0RnVsbENvbGxlY3QgKz0gYnl0ZXM7CiB9CiAKIHZvaWQgSGVhcDo6cHJvdGVj
dChKU1ZhbHVlIGspCkBAIC04NDYsOCArODYwLDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0QWxsR2Fy
YmFnZSgpCiAgICAgaWYgKCFtX2lzU2FmZVRvQ29sbGVjdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0gdHJ1ZTsKLSAgICBjb2xsZWN0KCk7CisgICAg
Y29sbGVjdChGdWxsQ29sbGVjdGlvbik7CiAKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbigiR2FyYmFnZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwogICAgIERlbGF5ZWRSZWxlYXNl
U2NvcGUgZGVsYXllZFJlbGVhc2VTY29wZShtX29iamVjdFNwYWNlKTsKQEAgLTg1Nyw3ICs4NzAs
NyBAQCB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKIAogc3RhdGljIGRvdWJsZSBtaW51
dGUgPSA2MC4wOwogCi12b2lkIEhlYXA6OmNvbGxlY3QoKQordm9pZCBIZWFwOjpjb2xsZWN0KEhl
YXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCiB7CiAjaWYgRU5BQkxFKEFMTE9DQVRJT05fTE9H
R0lORykKICAgICBkYXRhTG9nRigiSlNDIEdDIHN0YXJ0aW5nIGNvbGxlY3Rpb24uXG4iKTsKQEAg
LTg4MCw3ICs4OTMsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoKQogICAgIFJFTEVBU0VfQVNTRVJU
KG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CiAKICAgICBzdXNwZW5kQ29t
cGlsZXJUaHJlYWRzKCk7Ci0gICAgd2lsbFN0YXJ0Q29sbGVjdGlvbigpOworICAgIHdpbGxTdGFy
dENvbGxlY3Rpb24oY29sbGVjdGlvblR5cGUpOwogCiAgICAgZG91YmxlIGdjU3RhcnRUaW1lID0g
V1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKIApAQCAtOTI3LDEwICs5NDAsMTAg
QEAgdm9pZCBIZWFwOjpzdXNwZW5kQ29tcGlsZXJUaHJlYWRzKCkKICNlbmRpZgogfQogCi12b2lk
IEhlYXA6OndpbGxTdGFydENvbGxlY3Rpb24oKQordm9pZCBIZWFwOjp3aWxsU3RhcnRDb2xsZWN0
aW9uKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpCiB7CiAgICAgR0NQSEFTRShTdGFydGlu
Z0NvbGxlY3Rpb24pOwotICAgIGlmIChzaG91bGREb0Z1bGxDb2xsZWN0aW9uKCkpIHsKKyAgICBp
ZiAoc2hvdWxkRG9GdWxsQ29sbGVjdGlvbihjb2xsZWN0aW9uVHlwZSkpIHsKICAgICAgICAgbV9v
cGVyYXRpb25JblByb2dyZXNzID0gRnVsbENvbGxlY3Rpb247CiAgICAgICAgIG1fc2xvdFZpc2l0
b3IuY2xlYXJNYXJrU3RhY2soKTsKICAgICAgICAgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uID0g
ZmFsc2U7CkBAIC05NDEsMTEgKzk1NCwxOSBAQCB2b2lkIEhlYXA6OndpbGxTdGFydENvbGxlY3Rp
b24oKQogICAgICAgICBpZiAoT3B0aW9uczo6bG9nR0MoKSkKICAgICAgICAgICAgIGRhdGFMb2co
IkVkZW5Db2xsZWN0aW9uLCAiKTsKICAgICB9Ci0gICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVz
cyA9PSBGdWxsQ29sbGVjdGlvbikKKyAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1
bGxDb2xsZWN0aW9uKSB7CisgICAgICAgIG1fc2l6ZUJlZm9yZUxhc3RGdWxsQ29sbGVjdCA9IG1f
c2l6ZUFmdGVyTGFzdENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlOwogICAgICAg
ICBtX2V4dHJhTWVtb3J5VXNhZ2UgPSAwOwogCi0gICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykK
LSAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVjdCgpOworICAgICAgICBpZiAo
bV9mdWxsQWN0aXZpdHlDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZnVsbEFjdGl2aXR5Q2FsbGJh
Y2stPndpbGxDb2xsZWN0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBFZGVuQ29sbGVjdGlvbik7CisgICAgICAgIG1fc2l6ZUJlZm9yZUxh
c3RFZGVuQ29sbGVjdCA9IG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgKyBtX2J5dGVzQWxsb2NhdGVk
VGhpc0N5Y2xlOworICAgIH0KKworICAgIGlmIChtX2VkZW5BY3Rpdml0eUNhbGxiYWNrKQorICAg
ICAgICBtX2VkZW5BY3Rpdml0eUNhbGxiYWNrLT53aWxsQ29sbGVjdCgpOwogfQogCiB2b2lkIEhl
YXA6OmRlbGV0ZU9sZENvZGUoZG91YmxlIGdjU3RhcnRUaW1lKQpAQCAtMTA0MywyMCArMTA2NCwy
NiBAQCB2b2lkIEhlYXA6OnVwZGF0ZUFsbG9jYXRpb25MaW1pdHMoKQogICAgICAgICAvLyBmaXhl
ZCBtaW5pbXVtLgogICAgICAgICBtX21heEhlYXBTaXplID0gbWF4KG1pbkhlYXBTaXplKG1faGVh
cFR5cGUsIG1fcmFtU2l6ZSksIHByb3BvcnRpb25hbEhlYXBTaXplKGN1cnJlbnRIZWFwU2l6ZSwg
bV9yYW1TaXplKSk7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXplIC0gY3Vy
cmVudEhlYXBTaXplOworICAgICAgICBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdCA9IGN1cnJl
bnRIZWFwU2l6ZTsKKyAgICAgICAgbV9ieXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0
ID0gMDsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQoY3VycmVudEhlYXBTaXplID49IG1f
c2l6ZUFmdGVyTGFzdENvbGxlY3QpOwogICAgICAgICBtX21heEVkZW5TaXplID0gbV9tYXhIZWFw
U2l6ZSAtIGN1cnJlbnRIZWFwU2l6ZTsKKyAgICAgICAgbV9zaXplQWZ0ZXJMYXN0RWRlbkNvbGxl
Y3QgPSBjdXJyZW50SGVhcFNpemU7CiAgICAgICAgIGRvdWJsZSBlZGVuVG9PbGRHZW5lcmF0aW9u
UmF0aW8gPSAoZG91YmxlKW1fbWF4RWRlblNpemUgLyAoZG91YmxlKW1fbWF4SGVhcFNpemU7CiAg
ICAgICAgIGRvdWJsZSBtaW5FZGVuVG9PbGRHZW5lcmF0aW9uUmF0aW8gPSAxLjAgLyAzLjA7CiAg
ICAgICAgIGlmIChlZGVuVG9PbGRHZW5lcmF0aW9uUmF0aW8gPCBtaW5FZGVuVG9PbGRHZW5lcmF0
aW9uUmF0aW8pCiAgICAgICAgICAgICBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSB0cnVlOwog
ICAgICAgICBtX21heEhlYXBTaXplICs9IGN1cnJlbnRIZWFwU2l6ZSAtIG1fc2l6ZUFmdGVyTGFz
dENvbGxlY3Q7CiAgICAgICAgIG1fbWF4RWRlblNpemUgPSBtX21heEhlYXBTaXplIC0gY3VycmVu
dEhlYXBTaXplOworICAgICAgICBpZiAobV9mdWxsQWN0aXZpdHlDYWxsYmFjaykgeworICAgICAg
ICAgICAgQVNTRVJUKGN1cnJlbnRIZWFwU2l6ZSA+PSBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVj
dCk7CisgICAgICAgICAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT5kaWRBbGxvY2F0ZShjdXJy
ZW50SGVhcFNpemUgLSBtX3NpemVBZnRlckxhc3RGdWxsQ29sbGVjdCk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBtX3NpemVBZnRlckxhc3RDb2xsZWN0ID0gY3VycmVudEhlYXBTaXplOwogICAg
IG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgPSAwOwotICAgIG1fYnl0ZXNBYmFuZG9uZWRUaGlz
Q3ljbGUgPSAwOwogCiAgICAgaWYgKE9wdGlvbnM6OmxvZ0dDKCkpCiAgICAgICAgIGRhdGFMb2co
Y3VycmVudEhlYXBTaXplIC8gMTAyNCwgIiBrYiwgIik7CkBAIC0xMDY2LDcgKzEwOTMsMTAgQEAg
dm9pZCBIZWFwOjpkaWRGaW5pc2hDb2xsZWN0aW9uKGRvdWJsZSBnYwogewogICAgIEdDUEhBU0Uo
RmluaXNoaW5nQ29sbGVjdGlvbik7CiAgICAgZG91YmxlIGdjRW5kVGltZSA9IFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgbV9sYXN0R0NMZW5ndGggPSBnY0VuZFRpbWUg
LSBnY1N0YXJ0VGltZTsKKyAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzID09IEZ1bGxDb2xs
ZWN0aW9uKQorICAgICAgICBtX2xhc3RGdWxsR0NMZW5ndGggPSBnY0VuZFRpbWUgLSBnY1N0YXJ0
VGltZTsKKyAgICBlbHNlCisgICAgICAgIG1fbGFzdEVkZW5HQ0xlbmd0aCA9IGdjRW5kVGltZSAt
IGdjU3RhcnRUaW1lOwogCiAgICAgaWYgKE9wdGlvbnM6OnJlY29yZEdDUGF1c2VUaW1lcygpKQog
ICAgICAgICBIZWFwU3RhdGlzdGljczo6cmVjb3JkR0NQYXVzZVRpbWUoZ2NTdGFydFRpbWUsIGdj
RW5kVGltZSk7CkBAIC0xMTAyLDE0ICsxMTMyLDI0IEBAIHZvaWQgSGVhcDo6bWFya0RlYWRPYmpl
Y3RzKCkKICAgICBtX29iamVjdFNwYWNlLmZvckVhY2hEZWFkQ2VsbDxNYXJrT2JqZWN0PihpdGVy
YXRpb25TY29wZSk7CiB9CiAKLXZvaWQgSGVhcDo6c2V0QWN0aXZpdHlDYWxsYmFjayhQYXNzT3du
UHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlDYWxsYmFjaykKK3ZvaWQgSGVhcDo6c2V0
RnVsbEFjdGl2aXR5Q2FsbGJhY2soUGFzc1JlZlB0cjxGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPiBh
Y3Rpdml0eUNhbGxiYWNrKQogewotICAgIG1fYWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2Fs
bGJhY2s7CisgICAgbV9mdWxsQWN0aXZpdHlDYWxsYmFjayA9IGFjdGl2aXR5Q2FsbGJhY2s7CiB9
CiAKLUdDQWN0aXZpdHlDYWxsYmFjayogSGVhcDo6YWN0aXZpdHlDYWxsYmFjaygpCit2b2lkIEhl
YXA6OnNldEVkZW5BY3Rpdml0eUNhbGxiYWNrKFBhc3NSZWZQdHI8RWRlbkdDQWN0aXZpdHlDYWxs
YmFjaz4gYWN0aXZpdHlDYWxsYmFjaykKIHsKLSAgICByZXR1cm4gbV9hY3Rpdml0eUNhbGxiYWNr
LmdldCgpOworICAgIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2sgPSBhY3Rpdml0eUNhbGxiYWNrOwor
fQorCitHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCkKK3sK
KyAgICByZXR1cm4gbV9mdWxsQWN0aXZpdHlDYWxsYmFjay5nZXQoKTsKK30KKworR0NBY3Rpdml0
eUNhbGxiYWNrKiBIZWFwOjplZGVuQWN0aXZpdHlDYWxsYmFjaygpCit7CisgICAgcmV0dXJuIG1f
ZWRlbkFjdGl2aXR5Q2FsbGJhY2suZ2V0KCk7CiB9CiAKIHZvaWQgSGVhcDo6c2V0SW5jcmVtZW50
YWxTd2VlcGVyKFBhc3NPd25QdHI8SW5jcmVtZW50YWxTd2VlcGVyPiBzd2VlcGVyKQpAQCAtMTEy
NCwxNCArMTE2NCwxNiBAQCBJbmNyZW1lbnRhbFN3ZWVwZXIqIEhlYXA6OnN3ZWVwZXIoKQogCiB2
b2lkIEhlYXA6OnNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wgZW5hYmxlKQog
ewotICAgIGlmIChtX2FjdGl2aXR5Q2FsbGJhY2spCi0gICAgICAgIG1fYWN0aXZpdHlDYWxsYmFj
ay0+c2V0RW5hYmxlZChlbmFibGUpOworICAgIGlmIChtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrKQor
ICAgICAgICBtX2Z1bGxBY3Rpdml0eUNhbGxiYWNrLT5zZXRFbmFibGVkKGVuYWJsZSk7CisgICAg
aWYgKG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2spCisgICAgICAgIG1fZWRlbkFjdGl2aXR5Q2FsbGJh
Y2stPnNldEVuYWJsZWQoZW5hYmxlKTsKIH0KIAogdm9pZCBIZWFwOjpkaWRBbGxvY2F0ZShzaXpl
X3QgYnl0ZXMpCiB7Ci0gICAgaWYgKG1fYWN0aXZpdHlDYWxsYmFjaykKLSAgICAgICAgbV9hY3Rp
dml0eUNhbGxiYWNrLT5kaWRBbGxvY2F0ZShtX2J5dGVzQWxsb2NhdGVkVGhpc0N5Y2xlICsgbV9i
eXRlc0FiYW5kb25lZFRoaXNDeWNsZSk7CisgICAgaWYgKG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2sp
CisgICAgICAgIG1fZWRlbkFjdGl2aXR5Q2FsbGJhY2stPmRpZEFsbG9jYXRlKG1fYnl0ZXNBbGxv
Y2F0ZWRUaGlzQ3ljbGUgKyBtX2J5dGVzQWJhbmRvbmVkU2luY2VMYXN0RnVsbENvbGxlY3QpOwog
ICAgIG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGUgKz0gYnl0ZXM7CiB9CiAKQEAgLTEyMTQsMTEg
KzEyNTYsMjcgQEAgdm9pZCBIZWFwOjpmbHVzaFdyaXRlQmFycmllckJ1ZmZlcihKU0NlbAogI2Vu
ZGlmCiB9CiAKLWJvb2wgSGVhcDo6c2hvdWxkRG9GdWxsQ29sbGVjdGlvbigpIGNvbnN0Citib29s
IEhlYXA6OnNob3VsZERvRnVsbENvbGxlY3Rpb24oSGVhcE9wZXJhdGlvbiByZXF1ZXN0ZWRDb2xs
ZWN0aW9uVHlwZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoR0dDKQotICAgIHJldHVybiBPcHRpb25z
OjphbHdheXNEb0Z1bGxDb2xsZWN0aW9uKCkgfHwgbV9zaG91bGREb0Z1bGxDb2xsZWN0aW9uOwor
ICAgIGlmIChPcHRpb25zOjphbHdheXNEb0Z1bGxDb2xsZWN0aW9uKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgc3dpdGNoIChyZXF1ZXN0ZWRDb2xsZWN0aW9uVHlwZSkgeworICAgIGNh
c2UgRWRlbkNvbGxlY3Rpb246CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEZ1bGxD
b2xsZWN0aW9uOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIEFueUNvbGxlY3Rpb246
CisgICAgICAgIHJldHVybiBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb247CisgICAgZGVmYXVsdDoK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBmYWxzZTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3RlZENvbGxlY3Rpb25UeXBl
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIENvcGllZFNwYWNlOwogICAgIGNsYXNzIENvZGVCbG9jazsKICAgICBjbGFzcyBF
eGVjdXRhYmxlQmFzZTsKKyAgICBjbGFzcyBFZGVuR0NBY3Rpdml0eUNhbGxiYWNrOworICAgIGNs
YXNzIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2s7CiAgICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNr
OwogICAgIGNsYXNzIEdDQXdhcmVKSVRTdHViUm91dGluZTsKICAgICBjbGFzcyBHbG9iYWxDb2Rl
QmxvY2s7CkBAIC0xMTgsOCArMTIwLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYXJr
ZWRTcGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBtX29iamVjdFNwYWNlOyB9CiAgICAgICAg
IE1hY2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVh
ZHM7IH0KIAotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFj
dGl2aXR5Q2FsbGJhY2soKTsKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRBY3Rp
dml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPik7CisgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIEdDQWN0aXZpdHlDYWxsYmFjayogZnVsbEFjdGl2aXR5Q2FsbGJhY2so
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgR0NBY3Rpdml0eUNhbGxiYWNrKiBlZGVuQWN0
aXZpdHlDYWxsYmFjaygpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEZ1bGxB
Y3Rpdml0eUNhbGxiYWNrKFBhc3NSZWZQdHI8RnVsbEdDQWN0aXZpdHlDYWxsYmFjaz4pOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldEVkZW5BY3Rpdml0eUNhbGxiYWNrKFBhc3NS
ZWZQdHI8RWRlbkdDQWN0aXZpdHlDYWxsYmFjaz4pOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIHNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wpOwogCiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIEluY3JlbWVudGFsU3dlZXBlciogc3dlZXBlcigpOwpAQCAtMTQ4
LDkgKzE1Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKICAgICAgICAgYm9vbCBzaG91bGRDb2xsZWN0KCk7
Ci0gICAgICAgIHZvaWQgZ2NUaW1lckRpZEZpcmUoKSB7IG1fc2hvdWxkRG9GdWxsQ29sbGVjdGlv
biA9IHRydWU7IH0KLSAgICAgICAgdm9pZCBzZXRTaG91bGREb0Z1bGxDb2xsZWN0aW9uKGJvb2wg
c2hvdWxkRG9GdWxsQ29sbGVjdGlvbikgeyBtX3Nob3VsZERvRnVsbENvbGxlY3Rpb24gPSBzaG91
bGREb0Z1bGxDb2xsZWN0aW9uOyB9Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29s
bGVjdCgpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGNvbGxlY3QoSGVhcE9wZXJh
dGlvbiBjb2xsZWN0aW9uVHlwZSA9IEFueUNvbGxlY3Rpb24pOwogICAgICAgICBib29sIGNvbGxl
Y3RJZk5lY2Vzc2FyeU9yRGVmZXIoKTsgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGRpZCBjb2xsZWN0
LgogCiAgICAgICAgIHZvaWQgcmVwb3J0RXh0cmFNZW1vcnlDb3N0KHNpemVfdCBjb3N0KTsKQEAg
LTE4Niw4ICsxODgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGlkRmluaXNo
SXRlcmF0aW5nKCk7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhI
YXNoU2V0PEpTQ2VsbCo+JiByb290cyk7CiAKLSAgICAgICAgZG91YmxlIGxhc3RHQ0xlbmd0aCgp
IHsgcmV0dXJuIG1fbGFzdEdDTGVuZ3RoOyB9Ci0gICAgICAgIHZvaWQgaW5jcmVhc2VMYXN0R0NM
ZW5ndGgoZG91YmxlIGFtb3VudCkgeyBtX2xhc3RHQ0xlbmd0aCArPSBhbW91bnQ7IH0KKyAgICAg
ICAgZG91YmxlIGxhc3RGdWxsR0NMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xhc3RGdWxsR0NM
ZW5ndGg7IH0KKyAgICAgICAgZG91YmxlIGxhc3RFZGVuR0NMZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RFZGVuR0NMZW5ndGg7IH0KKyAgICAgICAgdm9pZCBpbmNyZWFzZUxhc3RGdWxsR0NM
ZW5ndGgoZG91YmxlIGFtb3VudCkgeyBtX2xhc3RGdWxsR0NMZW5ndGggKz0gYW1vdW50OyB9CisK
KyAgICAgICAgc2l6ZV90IHNpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NpemVCZWZvcmVMYXN0RWRlbkNvbGxlY3Q7IH0KKyAgICAgICAgc2l6ZV90IHNpemVB
ZnRlckxhc3RFZGVuQ29sbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZUFmdGVyTGFzdEVk
ZW5Db2xsZWN0OyB9CisgICAgICAgIHNpemVfdCBzaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0OyB9CisgICAgICAg
IHNpemVfdCBzaXplQWZ0ZXJMYXN0RnVsbENvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Np
emVBZnRlckxhc3RGdWxsQ29sbGVjdDsgfQogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGVsZXRlQWxsQ29tcGlsZWRDb2RlKCk7CiAgICAgICAgIHZvaWQgZGVsZXRlQWxsVW5saW5r
ZWRGdW5jdGlvbkNvZGUoKTsKQEAgLTI1Miw3ICsyNjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2Fz
ZShzaXplX3QpOwogCiAgICAgICAgIHZvaWQgc3VzcGVuZENvbXBpbGVyVGhyZWFkcygpOwotICAg
ICAgICB2b2lkIHdpbGxTdGFydENvbGxlY3Rpb24oKTsKKyAgICAgICAgdm9pZCB3aWxsU3RhcnRD
b2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gY29sbGVjdGlvblR5cGUpOwogICAgICAgICB2b2lkIGRl
bGV0ZU9sZENvZGUoZG91YmxlIGdjU3RhcnRUaW1lKTsKICAgICAgICAgdm9pZCBmbHVzaE9sZFN0
cnVjdHVyZUlEVGFibGVzKCk7CiAgICAgICAgIHZvaWQgZmx1c2hXcml0ZUJhcnJpZXJCdWZmZXIo
KTsKQEAgLTI5Niw3ICszMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB6b21i
aWZ5RGVhZE9iamVjdHMoKTsKICAgICAgICAgdm9pZCBtYXJrRGVhZE9iamVjdHMoKTsKIAotICAg
ICAgICBib29sIHNob3VsZERvRnVsbENvbGxlY3Rpb24oKSBjb25zdDsKKyAgICAgICAgYm9vbCBz
aG91bGREb0Z1bGxDb2xsZWN0aW9uKEhlYXBPcGVyYXRpb24gcmVxdWVzdGVkQ29sbGVjdGlvblR5
cGUpIGNvbnN0OwogICAgICAgICBzaXplX3Qgc2l6ZUFmdGVyQ29sbGVjdCgpOwogCiAgICAgICAg
IEpTU3RhY2smIHN0YWNrKCk7CkBAIC0zMDksOSArMzE3LDEzIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBzaXplX3QgbV9yYW1TaXplOwogICAgICAgICBjb25zdCBzaXplX3QgbV9t
aW5CeXRlc1BlckN5Y2xlOwogICAgICAgICBzaXplX3QgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdDsK
KyAgICAgICAgc2l6ZV90IG1fc2l6ZUFmdGVyTGFzdEZ1bGxDb2xsZWN0OworICAgICAgICBzaXpl
X3QgbV9zaXplQmVmb3JlTGFzdEZ1bGxDb2xsZWN0OworICAgICAgICBzaXplX3QgbV9zaXplQWZ0
ZXJMYXN0RWRlbkNvbGxlY3Q7CisgICAgICAgIHNpemVfdCBtX3NpemVCZWZvcmVMYXN0RWRlbkNv
bGxlY3Q7CiAKICAgICAgICAgc2l6ZV90IG1fYnl0ZXNBbGxvY2F0ZWRUaGlzQ3ljbGU7Ci0gICAg
ICAgIHNpemVfdCBtX2J5dGVzQWJhbmRvbmVkVGhpc0N5Y2xlOworICAgICAgICBzaXplX3QgbV9i
eXRlc0FiYW5kb25lZFNpbmNlTGFzdEZ1bGxDb2xsZWN0OwogICAgICAgICBzaXplX3QgbV9tYXhF
ZGVuU2l6ZTsKICAgICAgICAgc2l6ZV90IG1fbWF4SGVhcFNpemU7CiAgICAgICAgIGJvb2wgbV9z
aG91bGREb0Z1bGxDb2xsZWN0aW9uOwpAQCAtMzQ5LDEyICszNjEsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFdyaXRlQmFycmllckJ1ZmZlciBtX3dyaXRlQmFycmllckJ1ZmZlcjsKIAog
ICAgICAgICBWTSogbV92bTsKLSAgICAgICAgZG91YmxlIG1fbGFzdEdDTGVuZ3RoOworICAgICAg
ICBkb3VibGUgbV9sYXN0RnVsbEdDTGVuZ3RoOworICAgICAgICBkb3VibGUgbV9sYXN0RWRlbkdD
TGVuZ3RoOwogICAgICAgICBkb3VibGUgbV9sYXN0Q29kZURpc2NhcmRUaW1lOwogCiAgICAgICAg
IERvdWJseUxpbmtlZExpc3Q8RXhlY3V0YWJsZUJhc2U+IG1fY29tcGlsZWRDb2RlOwogICAgICAg
ICAKLSAgICAgICAgT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gbV9hY3Rpdml0eUNhbGxiYWNr
OworICAgICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2Z1bGxBY3Rpdml0eUNhbGxi
YWNrOworICAgICAgICBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2VkZW5BY3Rpdml0eUNh
bGxiYWNrOwogICAgICAgICBPd25QdHI8SW5jcmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7CiAg
ICAgICAgIFZlY3RvcjxNYXJrZWRCbG9jayo+IG1fYmxvY2tTbmFwc2hvdDsKICAgICAgICAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcE9wZXJhdGlvbi5oCShyZXZpc2lv
biAxNjU4MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwT3BlcmF0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWVu
dW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBBbGxvY2F0aW9uLCBGdWxsQ29sbGVjdGlv
biwgRWRlbkNvbGxlY3Rpb24gfTsKK2VudW0gSGVhcE9wZXJhdGlvbiB7IE5vT3BlcmF0aW9uLCBB
bGxvY2F0aW9uLCBGdWxsQ29sbGVjdGlvbiwgRWRlbkNvbGxlY3Rpb24sIEFueUNvbGxlY3Rpb24g
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMzLDcgKzIzMyw3IEBAIHZvaWQgSGVhcFN0YXRpc3RpY3M6OnNob3dPYmplY3RTdGF0aXN0aWMK
ICAgICBkYXRhTG9nRigiXG49PT0gSGVhcCBTdGF0aXN0aWNzOiA9PT1cbiIpOwogICAgIGRhdGFM
b2dGKCJzaXplOiAlbGRrQlxuIiwgc3RhdGljX2Nhc3Q8bG9uZz4oaGVhcC0+bV9zaXplQWZ0ZXJM
YXN0Q29sbGVjdCAvIEtCKSk7CiAgICAgZGF0YUxvZ0YoImNhcGFjaXR5OiAlbGRrQlxuIiwgc3Rh
dGljX2Nhc3Q8bG9uZz4oaGVhcC0+Y2FwYWNpdHkoKSAvIEtCKSk7Ci0gICAgZGF0YUxvZ0YoInBh
dXNlIHRpbWU6ICVsZm1zXG5cbiIsIGhlYXAtPm1fbGFzdEdDTGVuZ3RoKTsKKyAgICBkYXRhTG9n
RigicGF1c2UgdGltZTogJWxmbXNcblxuIiwgaGVhcC0+bV9sYXN0RnVsbEdDTGVuZ3RoKTsKIAog
ICAgIFN0b3JhZ2VTdGF0aXN0aWNzIHN0b3JhZ2VTdGF0aXN0aWNzOwogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBUaW1lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAkocmV2aXNpb24gMTY1ODI2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFRpbWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODUsOCArODUsMTAgQEAgdm9pZCBIZWFwVGltZXI6OnRpbWVyRGlkRmlyZShDRlJ1bkxv
b3BUaQogICAgIH0KIAogICAgIEhlYXBUaW1lciogaGVhcFRpbWVyID0gMDsKLSAgICBpZiAodm0t
PmhlYXAuYWN0aXZpdHlDYWxsYmFjaygpICYmIHZtLT5oZWFwLmFjdGl2aXR5Q2FsbGJhY2soKS0+
bV90aW1lci5nZXQoKSA9PSB0aW1lcikKLSAgICAgICAgaGVhcFRpbWVyID0gdm0tPmhlYXAuYWN0
aXZpdHlDYWxsYmFjaygpOworICAgIGlmICh2bS0+aGVhcC5mdWxsQWN0aXZpdHlDYWxsYmFjaygp
ICYmIHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCktPm1fdGltZXIuZ2V0KCkgPT0gdGlt
ZXIpCisgICAgICAgIGhlYXBUaW1lciA9IHZtLT5oZWFwLmZ1bGxBY3Rpdml0eUNhbGxiYWNrKCk7
CisgICAgZWxzZSBpZiAodm0tPmhlYXAuZWRlbkFjdGl2aXR5Q2FsbGJhY2soKSAmJiB2bS0+aGVh
cC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpLT5tX3RpbWVyLmdldCgpID09IHRpbWVyKQorICAgICAg
ICBoZWFwVGltZXIgPSB2bS0+aGVhcC5lZGVuQWN0aXZpdHlDYWxsYmFjaygpOwogICAgIGVsc2Ug
aWYgKHZtLT5oZWFwLnN3ZWVwZXIoKS0+bV90aW1lci5nZXQoKSA9PSB0aW1lcikKICAgICAgICAg
aGVhcFRpbWVyID0gdm0tPmhlYXAuc3dlZXBlcigpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE2NTgyNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQy
LDYgKzI0MiwxMCBAQCB0eXBlZGVmIE9wdGlvblJhbmdlIG9wdGlvblJhbmdlOwogICAgIHYoZG91
YmxlLCBtaW5Db3BpZWRCbG9ja1V0aWxpemF0aW9uLCAwLjkpIFwKICAgICB2KGRvdWJsZSwgbWlu
TWFya2VkQmxvY2tVdGlsaXphdGlvbiwgMC45KSBcCiAgICAgXAorICAgIHYoZG91YmxlLCBwZXJj
ZW50Q1BVUGVyTUJGb3JGdWxsVGltZXIsIDAuMDAwMzEyNSkgXAorICAgIHYoZG91YmxlLCBwZXJj
ZW50Q1BVUGVyTUJGb3JFZGVuVGltZXIsIDAuMDAyNSkgXAorICAgIHYoZG91YmxlLCBjb2xsZWN0
aW9uVGltZXJNYXhQZXJjZW50Q1BVLCAwLjA1KSBcCisgICAgXAogICAgIHYoYm9vbCwgZm9yY2VX
ZWFrUmFuZG9tU2VlZCwgZmFsc2UpIFwKICAgICB2KHVuc2lnbmVkLCBmb3JjZWRXZWFrUmFuZG9t
U2VlZCwgMCkgXAogICAgIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTgyOSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDE0LTAzLTE4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgR0MgdGltZXIgc2hvdWxkIGludGVsbGlnZW50bHkgY2hvb3NlIGJldHdlZW4gRWRlbkNv
bGxlY3Rpb25zIGFuZCBGdWxsQ29sbGVjdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODI2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICBVcGRhdGVkIFdl
YlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tzIGZvciBib3RoIEVkZW4gYW5kIEZ1bGwgdGltZXJzLgor
CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaDoK
KwogMjAxNC0wMy0xOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE2NTgxNS4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2Fs
bGJhY2tJT1MuaAkocmV2aXNpb24gMTY1ODI2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1MuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MjYgKzI3LDQyIEBACiAjZGVmaW5lIFdlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJhY2tJT1NfaAogCiAj
aW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dDQWN0
aXZpdHlDYWxsYmFjay5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0VkZW5HQ0FjdGl2aXR5
Q2FsbGJhY2suaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdWxsR0NBY3Rpdml0eUNhbGxi
YWNrLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgV2ViU2FmZUdDQWN0aXZpdHlD
YWxsYmFjayBmaW5hbCA6IHB1YmxpYyBKU0M6OkRlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2sgewor
Y2xhc3MgV2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgSlNDOjpG
dWxsR0NBY3Rpdml0eUNhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxX
ZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGUoSlNDOjpIZWFwKiBoZWFwKQorICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrPiBjcmVhdGUoSlND
OjpIZWFwKiBoZWFwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJTYWZl
R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXApKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBX
ZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCB+V2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjaygpIG92ZXJyaWRlIHsgfQorICAgIHZpcnR1YWwg
fldlYlNhZmVGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CiAKIHByaXZhdGU6
Ci0gICAgV2ViU2FmZUdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCi0gICAgICAg
IDogSlNDOjpEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1bkxvb3Ao
KSkKKyAgICBXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCisg
ICAgICAgIDogSlNDOjpGdWxsR0NBY3Rpdml0eUNhbGxiYWNrKGhlYXAsIFdlYlRocmVhZFJ1bkxv
b3AoKSkKICAgICB7CiAgICAgfQogfTsKIAorY2xhc3MgV2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2Fs
bGJhY2sgZmluYWwgOiBwdWJsaWMgSlNDOjpFZGVuR0NBY3Rpdml0eUNhbGxiYWNrIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjaz4g
Y3JlYXRlKEpTQzo6SGVhcCogaGVhcCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgV2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soaGVhcCkpOworICAgIH0KKworICAgIHZp
cnR1YWwgfldlYlNhZmVFZGVuR0NBY3Rpdml0eUNhbGxiYWNrKCkgb3ZlcnJpZGUgeyB9CisKK3By
aXZhdGU6CisgICAgV2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSlNDOjpIZWFwKiBoZWFw
KQorICAgICAgICA6IEpTQzo6RWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwLCBXZWJUaHJlYWRS
dW5Mb29wKCkpCisgICAgeworICAgIH0KK307CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBXZWJTYWZlR0NBY3Rpdml0eUNhbGxiYWNrSU9TX2gK
</data>
<flag name="review"
          id="251374"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>