<?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>40005</bug_id>
          
          <creation_ts>2010-06-01 09:56:26 -0700</creation_ts>
          <short_desc>[Qt] Platform plugin support for Notifications UI</short_desc>
          <delta_ts>2010-08-03 08:31:31 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>39968</dependson>
    
    <dependson>40003</dependson>
    
    <dependson>40004</dependson>
          <blocked>39995</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>232789</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-06-01 09:56:26 -0700</bug_when>
    <thetext>Add an interface to platform plugin, so it can override the default behavior of using QSystemTrayIcon for notifications UI.
A patch is ready but it depends heavily on the patch at bug #40003, so it will not apply until that patch is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236644</commentid>
    <comment_count>1</comment_count>
      <attachid>58434</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-06-10 19:03:09 -0700</bug_when>
    <thetext>Created attachment 58434
Patch

Add an interface to the platform plugin to display UI notifications. Implemented the UI notification in the example platform plugin. 
This interface is enabled by default, but could be turned off with a build flag.

Moved the 10 seconds timer so it closes only QSystemTrayIcon notifications. If a platform plugin exists, it is responsible for closing the UI notifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236646</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-10 19:05:28 -0700</bug_when>
    <thetext>Attachment 58434 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/qt/WebCoreSupport/NotificationPresenterClientQt.cpp:41:  Alphabetical sorting problem.  [build/include_order] [4]
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/examples/platformplugin/WebNotificationUi.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/examples/platformplugin/qwebkitplatformplugin.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/examples/platformplugin/WebNotificationUi.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/Api/qwebkitplatformplugin.h&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/examples/platformplugin/WebPlugin.cpp&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/examples/platformplugin/platformplugin.pro&quot;
WARNING: File exempt from style guide. Skipping: &quot;WebKit/qt/examples/platformplugin/WebPlugin.h&quot;
Total errors found: 1 in 12 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>236647</commentid>
    <comment_count>3</comment_count>
      <attachid>58435</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-06-10 19:18:37 -0700</bug_when>
    <thetext>Created attachment 58435
Patch

Fix style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236889</commentid>
    <comment_count>4</comment_count>
      <attachid>58484</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-06-11 10:25:47 -0700</bug_when>
    <thetext>Created attachment 58484
Patch

Found a crash on exit that was a result of GC running during application shut down.
Did the following to address the crash on exit:

Changed the way NotificationPresenterClientQt is deleted because it is being accessed when GC is deleting the Notification objects. A delete timer was created to ensure that NotificationPresenterClientQt is deleted after final GC was done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237048</commentid>
    <comment_count>5</comment_count>
      <attachid>58510</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-06-11 14:54:58 -0700</bug_when>
    <thetext>Created attachment 58510
Patch

Previous approach did not always delete the NotificationPresenter, depending on how long GC took.
In this patch I detach the notifications from the presenter when the presenter is deleted, so when those notifications are GC&apos;d, they would not call the presenter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237135</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-11 16:41:55 -0700</bug_when>
    <thetext>WebKit/qt/Api/qwebkitplatformplugin.h:61
 +  class QWebNotificationUi : public QObject
I dont like the Ui part of the name. Isn&apos;t this more or less like a notification controller? or notification dispatcher?

WebKit/qt/Api/qwebkitplatformplugin.h:68
 +      virtual void showNotification() = 0;
If this class is a notification itself, this should probably just be called show() or appear()

WebKit/qt/Api/qwebkitplatformplugin.h:81
 +          Notifications
Maybe we should extend this with SingleSelections as well?

WebKit/qt/Api/qwebkitplatformplugin.h:72
 +  };
What string do I receive??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237138</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-11 16:43:29 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; WebKit/qt/Api/qwebkitplatformplugin.h:61
&gt;  +  class QWebNotificationUi : public QObject
&gt; I dont like the Ui part of the name. Isn&apos;t this more or less like a notification controller? or notification dispatcher?
&gt; 
&gt; WebKit/qt/Api/qwebkitplatformplugin.h:68
&gt;  +      virtual void showNotification() = 0;
&gt; If this class is a notification itself, this should probably just be called show() or appear()
&gt; 
&gt; WebKit/qt/Api/qwebkitplatformplugin.h:81
&gt;  +          Notifications
&gt; Maybe we should extend this with SingleSelections as well?
&gt; 
&gt; WebKit/qt/Api/qwebkitplatformplugin.h:72
&gt;  +  };
&gt; What string do I receive??

actually I like the WebCore name, so what about createNotificationPresenter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237196</commentid>
    <comment_count>8</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-06-11 18:18:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
Thank yoy for taking the time to review.
&gt; WebKit/qt/Api/qwebkitplatformplugin.h:61
&gt;  +  class QWebNotificationUi : public QObject
&gt; I dont like the Ui part of the name. Isn&apos;t this more or less like a notification controller? or notification dispatcher?
&gt; 
I&apos;ll change it to QWebNotificationPresenter

&gt; WebKit/qt/Api/qwebkitplatformplugin.h:68
&gt;  +      virtual void showNotification() = 0;
&gt; If this class is a notification itself, this should probably just be called show() or appear()
I will change it to &quot;show&quot;.

&gt; 
&gt; WebKit/qt/Api/qwebkitplatformplugin.h:81
&gt;  +          Notifications
&gt; Maybe we should extend this with SingleSelections as well?
&gt; 
Maks sense to me, but perhaps a separate patch, and also with a build flag, so one can get implement notifications but not the SingleSelect if they want to ?

&gt; WebKit/qt/Api/qwebkitplatformplugin.h:72
&gt;  +  };
&gt; What string do I receive??
This was supposed to be for HTML notifications, if a link was clicked. This is not yet supported, so I will leave it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237199</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-11 18:20:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; Thank yoy for taking the time to review.
&gt; &gt; WebKit/qt/Api/qwebkitplatformplugin.h:61
&gt; &gt;  +  class QWebNotificationUi : public QObject
&gt; &gt; I dont like the Ui part of the name. Isn&apos;t this more or less like a notification controller? or notification dispatcher?
&gt; &gt; 
&gt; I&apos;ll change it to QWebNotificationPresenter
&gt; 
&gt; &gt; WebKit/qt/Api/qwebkitplatformplugin.h:68
&gt; &gt;  +      virtual void showNotification() = 0;
&gt; &gt; If this class is a notification itself, this should probably just be called show() or appear()
&gt; I will change it to &quot;show&quot;.

Actually since you are renaming to QWebNotificationPresenter, showNotification makes sense :-) so no need to rename.

&gt; 
&gt; &gt; 
&gt; &gt; WebKit/qt/Api/qwebkitplatformplugin.h:81
&gt; &gt;  +          Notifications
&gt; &gt; Maybe we should extend this with SingleSelections as well?
&gt; &gt; 
&gt; Maks sense to me, but perhaps a separate patch, and also with a build flag, so one can get implement notifications but not the SingleSelect if they want to ?

Yes, not in this patch.

&gt; 
&gt; &gt; WebKit/qt/Api/qwebkitplatformplugin.h:72
&gt; &gt;  +  };
&gt; &gt; What string do I receive??
&gt; This was supposed to be for HTML notifications, if a link was clicked. This is not yet supported, so I will leave it out.

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237290</commentid>
    <comment_count>10</comment_count>
      <attachid>58550</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-06-12 06:59:14 -0700</bug_when>
    <thetext>Created attachment 58550
Patch

Address review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237294</commentid>
    <comment_count>11</comment_count>
      <attachid>58550</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-12 07:56:15 -0700</bug_when>
    <thetext>Comment on attachment 58550
Patch

WebKit/qt/examples/platformplugin/WebNotificationPresenter.h:50
 +      WebNotificationPresenter(const QString&amp; title, const QString&amp; message, const QByteArray&amp; bytes) : QWebNotificationPresenter(title, message, bytes)
Put the : part on the next line.

WebKit/qt/examples/platformplugin/WebPlugin.h:92
 +      virtual QWebNotificationPresenter* createNotificationPresenter(const QString&amp; title, const QString&amp; message, const QByteArray&amp; bytes) const { if (supportsExtension(Notifications)) return new WebNotificationPresenter(title, message, bytes); return 0; }
I would put the contents part on some other lines. This is barely readable.

WebKit/qt/examples/platformplugin/qwebkitplatformplugin.h:86
 +      virtual QWebNotificationPresenter* createNotificationPresenter(const QString&amp; title, const QString&amp; message, const QByteArray&amp;) const = 0;
Wouldn&apos;t it be better to make this similar to the SelectMethod? so that you can access the info (title, message, etc) from inside the function via an accessor. We never know what is going to be added here in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237552</commentid>
    <comment_count>12</comment_count>
      <attachid>58592</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-06-13 06:20:52 -0700</bug_when>
    <thetext>Created attachment 58592
Patch

Update based on comment #11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237554</commentid>
    <comment_count>13</comment_count>
      <attachid>58592</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-13 07:02:54 -0700</bug_when>
    <thetext>Comment on attachment 58592
Patch

Almost there!

WebKit/qt/examples/platformplugin/qwebkitplatformplugin.h:71
 +  Q_OBJECT
We normally indent the Q_OBJECT

WebKit/qt/examples/platformplugin/WebPlugin.h:93
 +          if (supportsExtension(Notifications))
Actually I think we (WebCore) should call supportsExtension(Notifications) before calling createNotificationPresenter(), leaving this code below just return the new WebNotificationsPresenter.

WebKit/qt/examples/platformplugin/WebNotificationPresenter.h:46
 +      : QWebNotificationPresenter()
the : part needs to be indented 4 spaces more.

WebKit/qt/examples/platformplugin/WebNotificationPresenter.h:35
 +      bool event(QEvent* ev);
This is the header, leave out ev

WebKit/qt/examples/platformplugin/WebNotificationPresenter.h:29
 +  Q_OBJECT
Indentation

WebKit/qt/examples/platformplugin/WebNotificationPresenter.h:43
 +  Q_OBJECT
Indentation of Q_OBJECT

 const QString NotificationIconWrapper::title() const
 84 {
 85     Notification* notification = NotificationPresenterClientQt::notificationPresenter()-&gt;notificationForWrapper(this);
 86     if (notification)
 87         return notification-&gt;contents().title();
 88     return QString();
 89 }

im a bit confused about this code. When you create the IconWrapper, why can&apos;t you already fill it with the title, message etc? 

Btw the name confused me _ICON_Wrapper, but it contains title, message etc. That doesnt seem like an icon to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237555</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-13 07:08:14 -0700</bug_when>
    <thetext>
&gt; im a bit confused about this code. When you create the IconWrapper, why can&apos;t you already fill it with the title, message etc? 

What is important there is that we do not copy data unnecessarily, so my comment might be invalid. Cutting down on indirection if possible, is a good thing though.

I think the Platform Plugin API is nice now, so later we can fix the implementation if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237582</commentid>
    <comment_count>15</comment_count>
      <attachid>58596</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-06-13 10:56:49 -0700</bug_when>
    <thetext>Created attachment 58596
Patch

Address comment #13, with the exception that I don&apos;t make a local copy of the strings (as said in comment #14).
I agree that the name NotificationIconWrapper does not reflect its purpose anymore.
Originally, I wanted it to only wrap QSystemTrayIcon, but now it does much more.
How about renaming it NotificationWrapper?
However, let&apos;s rename it in a separate patch, because this one just keeps growing :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237619</commentid>
    <comment_count>16</comment_count>
      <attachid>58596</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-13 16:26:25 -0700</bug_when>
    <thetext>Comment on attachment 58596
Patch

WebKit/qt/examples/platformplugin/WebPlugin.h:93
 +          if (supportsExtension(Notifications))
you still need this here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237620</commentid>
    <comment_count>17</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-06-13 16:44:46 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 58596 [details])
&gt; WebKit/qt/examples/platformplugin/WebPlugin.h:93
&gt;  +          if (supportsExtension(Notifications))
&gt; you still need this here?

Yes, I do :-)
I have a build flag that allows people the flexibility of building the platform plugin with SingleSelect, but without Notifications. I need to check if the build flag is enabled before creating the NotificationPresenter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237621</commentid>
    <comment_count>18</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-06-13 16:51:45 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 58596 [details] [details])
&gt; &gt; WebKit/qt/examples/platformplugin/WebPlugin.h:93
&gt; &gt;  +          if (supportsExtension(Notifications))
&gt; &gt; you still need this here?
&gt; 
&gt; Yes, I do :-)
&gt; I have a build flag that allows people the flexibility of building the platform plugin with SingleSelect, but without Notifications. I need to check if the build flag is enabled before creating the NotificationPresenter.

To be more specific, tge plugin and WebKit are 2 different components, so I don&apos;t think the plugin should rely on the caller to do the check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237643</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-13 18:06:03 -0700</bug_when>
    <thetext>the extension support is for the plugin to say whether it implements a feature or not. WebCoreSupport will then check if it does and in that case use the plugin or do some kind of fallback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237655</commentid>
    <comment_count>20</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-06-13 18:42:40 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; the extension support is for the plugin to say whether it implements a feature or not. WebCoreSupport will then check if it does and in that case use the plugin or do some kind of fallback.

I was just trying to protect from callers who are not using the API properly. Since the only caller is WebCoreSupport anyways, I&apos;ll remove the check when committing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237806</commentid>
    <comment_count>21</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-06-14 07:13:45 -0700</bug_when>
    <thetext>Committed r61121: &lt;http://trac.webkit.org/changeset/61121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259464</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-08-03 08:31:31 -0700</bug_when>
    <thetext>Revision r61121 cherry-picked into qtwebkit-2.1 with commit 033342ddc7af060c22ad42a033a22631ab10a54e</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58434</attachid>
            <date>2010-06-10 19:03:09 -0700</date>
            <delta_ts>2010-06-10 19:18:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>40005.patch</filename>
            <type>text/plain</type>
            <size>18260</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNjA5ODUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMDYtMTAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gUGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQgZm9yIE5vdGlmaWNhdGlvbnMgVUkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDA1CisK
KyAgICAgICAgQWRkIGFuIGludGVyZmFjZSB0byB0aGUgcGxhdGZvcm0gcGx1Z2luIHRvIGRpc3Bs
YXkgVUkgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIFVJIG5vdGlmaWNh
dGlvbiBpbiB0aGUgZXhhbXBsZSBwbGF0Zm9ybSBwbHVnaW4uIAorICAgICAgICBUaGlzIGludGVy
ZmFjZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBjb3VsZCBiZSB0dXJuZWQgb2ZmIHdpdGgK
KyAgICAgICAgYSBidWlsZCBmbGFnLgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBs
dWdpbi5oOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblVpOjpRV2ViTm90aWZpY2F0aW9uVWkp
OgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblVpOjp+UVdlYk5vdGlmaWNhdGlvblVpKToKKyAg
ICAgICAgKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25JY29uV3JhcHBlcjo6Tm90aWZpY2F0aW9uSWNvbldyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6On5Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3Jh
cHBlcjo6bm90aWZpY2F0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0OjpkaXNwbGF5Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRQ
bGF0Zm9ybVBsdWdpbjo6Y3JlYXRlTm90aWZpY2F0aW9uVWkpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9XZWJOb3RpZmljYXRpb25VaS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViTm90aWZpY2F0
aW9uVWlXaWRnZXQ6OldlYk5vdGlmaWNhdGlvblVpV2lkZ2V0KToKKyAgICAgICAgKFdlYk5vdGlm
aWNhdGlvblVpV2lkZ2V0Ojp+V2ViTm90aWZpY2F0aW9uVWlXaWRnZXQpOgorICAgICAgICAoV2Vi
Tm90aWZpY2F0aW9uVWlXaWRnZXQ6OnNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViTm90
aWZpY2F0aW9uVWlXaWRnZXQ6OmV2ZW50KToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9XZWJOb3RpZmljYXRpb25VaS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlv
blVpOjpXZWJOb3RpZmljYXRpb25VaSk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25VaTo6fldl
Yk5vdGlmaWNhdGlvblVpKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblVpOjpzaG93Tm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3Bw
OgorICAgICAgICAoV2ViUGx1Z2luOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgICogZXhh
bXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJQbHVnaW46OmNy
ZWF0ZU5vdGlmaWNhdGlvblVpKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9w
bGF0Zm9ybXBsdWdpbi5wcm86CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdl
YmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uVWk6OlFXZWJO
b3RpZmljYXRpb25VaSk6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uVWk6On5RV2ViTm90aWZp
Y2F0aW9uVWkpOgorICAgICAgICAoUVdlYktpdFBsYXRmb3JtUGx1Z2luOjopOgorCiAyMDEwLTA2
LTEwICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdC9xdC9BcGkv
cXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2Vi
a2l0cGxhdGZvcm1wbHVnaW4uaAkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvQXBpL3F3
ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwyMCArNTgsMzUgQEAg
UV9TSUdOQUxTOgogICAgIHZvaWQgZGlkSGlkZSgpOwogfTsKIAorY2xhc3MgUVdlYk5vdGlmaWNh
dGlvblVpIDogcHVibGljIFFPYmplY3QKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5v
dGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiwgY29uc3QgUUJ5dGVB
cnJheSYpIHt9CisgICAgdmlydHVhbCB+UVdlYk5vdGlmaWNhdGlvblVpKCkge30KKworICAgIHZp
cnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCkgPSAwOworICAgIAorUV9TSUdOQUxTOgorICAg
IHZvaWQgbm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0IFFTdHJpbmcmKTsKK307CisKIGNsYXNzIFFX
ZWJLaXRQbGF0Zm9ybVBsdWdpbgogewogcHVibGljOgogICAgIHZpcnR1YWwgflFXZWJLaXRQbGF0
Zm9ybVBsdWdpbigpIHt9CiAKICAgICBlbnVtIEV4dGVuc2lvbiB7Ci0gICAgICAgIE11bHRpcGxl
U2VsZWN0aW9ucworICAgICAgICBNdWx0aXBsZVNlbGVjdGlvbnMsCisgICAgICAgIE5vdGlmaWNh
dGlvbnMKICAgICB9OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVu
c2lvbiBleHRlbnNpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2Qq
IGNyZWF0ZVNlbGVjdElucHV0TWV0aG9kKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUVdlYk5v
dGlmaWNhdGlvblVpKiBjcmVhdGVOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJheSYpIGNvbnN0ID0gMDsKIAog
fTsKIAotUV9ERUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9r
aWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEuMSIpOworUV9ERUNMQVJFX0lOVEVSRkFDRShR
V2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2lu
LzEuMiIpOwogCiAjZW5kaWYgLy8gUVdFQktJVFBMQVRGT1JNUExVR0lOX0gKSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0LmNwcAkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw3ICszOCw5IEBACiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAKKyNpbmNsdWRlICJRdFBsYXRmb3JtUGx1Z2luLmgiCiAjaW5jbHVkZSAicXdlYmtpdGds
b2JhbC5oIgorI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgogI2luY2x1ZGUgPFF0
R3VpPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCkBAIC02Niw3ICs2OCw3IEBAIE5vdGlm
aWNhdGlvbkljb25XcmFwcGVyOjpOb3RpZmljYXRpb25JY28KICNpZm5kZWYgUVRfTk9fU1lTVEVN
VFJBWUlDT04KICAgICBtX25vdGlmaWNhdGlvbkljb24gPSAwOwogI2VuZGlmCi0gICAgbV9jbG9z
ZVRpbWVyLnN0YXJ0T25lU2hvdChub3RpZmljYXRpb25UaW1lb3V0KTsKKyAgICBtX25vdGlmaWNh
dGlvblVpID0gMDsKIH0KIAogTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6On5Ob3RpZmljYXRpb25J
Y29uV3JhcHBlcigpCkBAIC04Miw2ICs4NCwxNiBAQCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6Tm90aWZpY2F0CiB7CiB9CiAKK05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojp+
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKQoreworICAgIHdoaWxlICghbV9ub3RpZmlj
YXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBOb3RpZmljYXRpb25zUXVldWU6Okl0ZXJhdG9y
IGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKTsKKyAgICAgICAgTm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24gPSBpdGVyLmtleSgpOworICAgICAgICBkZWxldGUgbV9ub3RpZmljYXRpb25z
LnRha2Uobm90aWZpY2F0aW9uKTsKKyAgICAgICAgbm90aWZpY2F0aW9uLT51bnNldFBlbmRpbmdB
Y3Rpdml0eShub3RpZmljYXRpb24pOworICAgIH0KK30KKwogdm9pZCBOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdDo6cmVtb3ZlQ2xpZW50KCkKIHsKICAgICBtX2NsaWVudENvdW50LS07CkBA
IC05MSw2ICsxMDMsMTEgQEAgdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6cmVt
bwogICAgIH0KIH0KIAordm9pZCBOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6bm90aWZpY2F0aW9u
Q2xvc2VkKGNvbnN0IFFTdHJpbmcmKQoreworICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+Y2FuY2VsKHRoaXMpOworfQorCiBib29sIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uKQogewogICAgIC8vIEZJWE1FOiB3b3JrZXJzIGJhc2VkIG5vdGlmaWNhdGlvbnMgYXJlIG5v
dCBzdXBwb3J0ZWQgeWV0LgpAQCAtMTIzLDE0ICsxNDAsMTkgQEAgdm9pZCBOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdDo6ZGlzcAogICAgICAgICBtZXNzYWdlID0gbm90aWZpY2F0aW9uLT5j
b250ZW50cygpLmJvZHkoKTsKICAgICB9CiAKKyAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvblVp
ID0gbV9wbGF0Zm9ybVBsdWdpbi5jcmVhdGVOb3RpZmljYXRpb25VaSh0aXRsZSwgbWVzc2FnZSwg
Ynl0ZXMpOworCisgICAgaWYgKCF3cmFwcGVyLT5tX25vdGlmaWNhdGlvblVpKSB7CiAjaWZuZGVm
IFFUX05PX1NZU1RFTVRSQVlJQ09OCi0gICAgUVBpeG1hcCBwaXhtYXA7Ci0gICAgaWYgKGJ5dGVz
Lmxlbmd0aCgpICYmIHBpeG1hcC5sb2FkRnJvbURhdGEoYnl0ZXMpKSB7Ci0gICAgICAgIFFJY29u
IGljb24ocGl4bWFwKTsKLSAgICAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25JY29uID0gbmV3
IFFTeXN0ZW1UcmF5SWNvbihpY29uKTsKLSAgICB9IGVsc2UKLSAgICAgICAgd3JhcHBlci0+bV9u
b3RpZmljYXRpb25JY29uID0gbmV3IFFTeXN0ZW1UcmF5SWNvbigpOworICAgICAgICB3cmFwcGVy
LT5tX2Nsb3NlVGltZXIuc3RhcnRPbmVTaG90KG5vdGlmaWNhdGlvblRpbWVvdXQpOworICAgICAg
ICBRUGl4bWFwIHBpeG1hcDsKKyAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCgpICYmIHBpeG1hcC5s
b2FkRnJvbURhdGEoYnl0ZXMpKSB7CisgICAgICAgICAgICBRSWNvbiBpY29uKHBpeG1hcCk7Cisg
ICAgICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24gPSBuZXcgUVN5c3RlbVRyYXlJ
Y29uKGljb24pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHdyYXBwZXItPm1fbm90aWZp
Y2F0aW9uSWNvbiA9IG5ldyBRU3lzdGVtVHJheUljb24oKTsKICNlbmRpZgorICAgIH0KIAogICAg
IHNlbmRFdmVudChub3RpZmljYXRpb24sICJkaXNwbGF5Iik7CiAKQEAgLTEzOCw2ICsxNjAsMTMg
QEAgdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcAogICAgIGlmIChtX25v
dGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24pID09IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHdyYXBwZXItPm1fbm90aWZpY2F0aW9uVWkpIHsK
KyAgICAgICAgd3JhcHBlci0+Y29ubmVjdCh3cmFwcGVyLT5tX25vdGlmaWNhdGlvblVpLmdldCgp
LCBTSUdOQUwobm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0IFFTdHJpbmcmKSksIHdyYXBwZXIsIFNM
T1Qobm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0IFFTdHJpbmcmKSksIFF0OjpRdWV1ZWRDb25uZWN0
aW9uKTsKKyAgICAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25VaS0+c2hvd05vdGlmaWNhdGlv
bigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKICNpZm5kZWYgUVRfTk9fU1lTVEVNVFJB
WUlDT04KICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24tPnNob3coKTsKICAgICB3cmFw
cGVyLT5tX25vdGlmaWNhdGlvbkljb24tPnNob3dNZXNzYWdlKG5vdGlmaWNhdGlvbi0+Y29udGVu
dHMoKS50aXRsZSgpLCBub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSgpKTsKSW5kZXg6IFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5oCShyZXZpc2lvbiA2MDk4MSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwz
NiArMzQsNDggQEAKIAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlm
aWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIlF0UGxhdGZvcm1QbHVnaW4uaCIKICNpbmNs
dWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8UU11bHRpSGFzaD4KICNpbmNsdWRlIDxRU3lzdGVt
VHJheUljb24+CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK2NsYXNzIFFXZWJOb3RpZmlj
YXRpb25VaTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEtVUkw7CiAKLWNsYXNzIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyIHsKK2NsYXNzIE5vdGlmaWNh
dGlvbkljb25XcmFwcGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCiBwdWJsaWM6
CiAgICAgTm90aWZpY2F0aW9uSWNvbldyYXBwZXIoKTsKICAgICB+Tm90aWZpY2F0aW9uSWNvbldy
YXBwZXIoKTsKKwogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsb3NlKFRpbWVyPE5vdGlm
aWNhdGlvbkljb25XcmFwcGVyPiopOworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIG5vdGlm
aWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJik7CisKK3B1YmxpYzoKICNpZm5kZWYgUVRfTk9f
U1lTVEVNVFJBWUlDT04KICAgICBPd25QdHI8UVN5c3RlbVRyYXlJY29uPiBtX25vdGlmaWNhdGlv
bkljb247CiAjZW5kaWYKKworICAgIE93blB0cjxRV2ViTm90aWZpY2F0aW9uVWk+IG1fbm90aWZp
Y2F0aW9uVWk7CiAgICAgVGltZXI8Tm90aWZpY2F0aW9uSWNvbldyYXBwZXI+IG1fY2xvc2VUaW1l
cjsKIH07CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKwogdHlwZWRlZiBRSGFzaCA8Tm90
aWZpY2F0aW9uKiwgTm90aWZpY2F0aW9uSWNvbldyYXBwZXIqPiBOb3RpZmljYXRpb25zUXVldWU7
CiAKIGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0IDogcHVibGljIE5vdGlmaWNh
dGlvblByZXNlbnRlciB7CiBwdWJsaWM6CiAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQoKTsKLSAgICB+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKSB7fQorICAgIH5Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpOwogCiAgICAgLyogV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyIGludGVyZmFjZSAqLwogICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNh
dGlvbiopOwpAQCAtOTUsOSArMTA3LDExIEBAIHByaXZhdGU6CiAgICAgUUhhc2g8UVN0cmluZywg
IFFMaXN0PFJlZlB0cjxWb2lkQ2FsbGJhY2s+ID4gPiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVz
dHM7CiAgICAgTm90aWZpY2F0aW9uc1F1ZXVlIG1fbm90aWZpY2F0aW9uczsKICAgICBRT2JqZWN0
KiBtX3JlY2VpdmVyOworICAgIFF0UGxhdGZvcm1QbHVnaW4gbV9wbGF0Zm9ybVBsdWdpbjsKIH07
CiAKKyNlbmRpZgorCiB9CiAKICNlbmRpZgotI2VuZGlmCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCShyZXZpc2lvbiA2MDk4MSkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU3LDQgKzE1NywxMyBAQCBRdEFic3RyYWN0V2ViUG9wdXAqIFF0UGxhdGZvcm1QbHVn
aW46OmNyCiAgICAgcmV0dXJuIG5ldyBTZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXIoc2VsZWN0b3Ip
OwogfQogCisKK1FXZWJOb3RpZmljYXRpb25VaSogUXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlTm90
aWZpY2F0aW9uVWkoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFFCeXRlQXJyYXkmIGJ5dGVzKQoreworICAgIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiog
cCA9IHBsdWdpbigpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IHAtPmNyZWF0ZU5vdGlmaWNhdGlvblVpKHRpdGxlLCBtZXNzYWdlLCBieXRlcyk7Cit9CisKIH0K
SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaAkocmV2
aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKIGNsYXNzIFFXZWJTZWxlY3RN
ZXRob2Q7CiBjbGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW47CitjbGFzcyBRV2ViTm90aWZpY2F0
aW9uVWk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6
CiAgICAgflF0UGxhdGZvcm1QbHVnaW4oKTsKIAogICAgIFF0QWJzdHJhY3RXZWJQb3B1cCogY3Jl
YXRlU2VsZWN0SW5wdXRNZXRob2QoKTsKKyAgICBRV2ViTm90aWZpY2F0aW9uVWkqIGNyZWF0ZU5v
dGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBRQnl0ZUFycmF5Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRlZDsKSW5k
ZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25VaS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5v
dGlmaWNhdGlvblVpLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0
Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25VaS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblVpLmgi
CisKK1dlYk5vdGlmaWNhdGlvblVpV2lkZ2V0OjpXZWJOb3RpZmljYXRpb25VaVdpZGdldChjb25z
dCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJh
eSYgYnl0ZXMpCisgICAgOiBRV2lkZ2V0KCkKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBt
X21lc3NhZ2UobWVzc2FnZSkKK3sKKyAgICBRUGl4bWFwIG1hc2s7CisgICAgUVBhaW50ZXIgcGFp
bnRlcigmbWFzayk7CisgICAgcGFpbnRlci5maWxsUmVjdCgwLCAwLCAzMDAsIDEwMCwgUXQ6Omxp
Z2h0R3JheSk7CisgICAgUUJpdG1hcCBiaXRtYXAobWFzayk7CisgICAgc2V0TWFzayhiaXRtYXAp
OworICAgIFFHcmlkTGF5b3V0KiBsYXlvdXQgPSBuZXcgUUdyaWRMYXlvdXQodGhpcyk7CisgICAg
bGF5b3V0LT5hZGRXaWRnZXQobmV3IFFMYWJlbChtX3RpdGxlKSwgMCwgMCwgMSwgNSk7CisgICAg
aW50IG1lc3NhZ2VQb3NpdGlvbiA9IDA7CisgICAgaWYgKGJ5dGVzLmxlbmd0aCgpICYmIG1fcGl4
bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKKyAgICAgICAgUUxhYmVsKiBsYWJlbCA9IG5ldyBR
TGFiZWw7CisgICAgICAgIGxhYmVsLT5zZXRQaXhtYXAobV9waXhtYXApOworICAgICAgICBsYXlv
dXQtPmFkZFdpZGdldChsYWJlbCwgMSwgMCwgMSwgMSk7CisgICAgICAgIG1lc3NhZ2VQb3NpdGlv
bisrOworICAgIH0KKyAgICBRTGFiZWwqIG1lc3NhZ2VMYWJlbCA9IG5ldyBRTGFiZWwobV9tZXNz
YWdlKTsKKyAgICBtZXNzYWdlTGFiZWwtPnNldE1hc2soYml0bWFwKTsKKyAgICBtZXNzYWdlTGFi
ZWwtPnNldFdvcmRXcmFwKHRydWUpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KG1lc3NhZ2VMYWJl
bCwgMSwgbWVzc2FnZVBvc2l0aW9uLCAxLCA1IC0gbWVzc2FnZVBvc2l0aW9uKTsKKyAgICBzZXRM
YXlvdXQobGF5b3V0KTsKKyAgICBzZXRGaXhlZFNpemUoMzAwLCAxMDApOworfQorCitXZWJOb3Rp
ZmljYXRpb25VaVdpZGdldDo6fldlYk5vdGlmaWNhdGlvblVpV2lkZ2V0KCkKK3sKK30KKwordm9p
ZCBXZWJOb3RpZmljYXRpb25VaVdpZGdldDo6c2hvd05vdGlmaWNhdGlvbigpCit7CisgICAgc2hv
dygpOworfQorCitib29sIFdlYk5vdGlmaWNhdGlvblVpV2lkZ2V0OjpldmVudChRRXZlbnQqIGV2
KQoreworICAgIGlmIChldi0+dHlwZSgpID09IFFFdmVudDo6TW91c2VCdXR0b25SZWxlYXNlIHx8
IGV2LT50eXBlKCkgPT0gUUV2ZW50OjpDbG9zZSkKKyAgICAgICAgZW1pdCBub3RpZmljYXRpb25D
bG9zZWQoIiIpOworICAgIHJldHVybiBRV2lkZ2V0OjpldmVudChldik7Cit9CisKSW5kZXg6IFdl
YktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25VaS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRp
b25VaS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L1dlYk5vdGlmaWNhdGlvblVpLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2lmbmRlZiBXZWJOb3RpZmljYXRpb25VaV9oICAKKyNkZWZpbmUgV2Vi
Tm90aWZpY2F0aW9uVWlfaAorCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCisj
aW5jbHVkZSA8UXRHdWk+CisKK2NsYXNzIFdlYk5vdGlmaWNhdGlvblVpV2lkZ2V0IDogcHVibGlj
IFFXaWRnZXQKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViTm90aWZpY2F0aW9uVWlXaWRn
ZXQoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFC
eXRlQXJyYXkmKTsKKyAgICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25VaVdpZGdldCgpOworCisg
ICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCk7CisgICAgYm9vbCBldmVudChRRXZlbnQqIGV2KTsK
KworUV9TSUdOQUxTOgorICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0IFFTdHJpbmcm
KTsKKworcHJpdmF0ZToKKyAgICBRU3RyaW5nIG1fdGl0bGU7CisgICAgUVN0cmluZyBtX21lc3Nh
Z2U7CisgICAgUVBpeG1hcCBtX3BpeG1hcDsKK307CisKK2NsYXNzIFdlYk5vdGlmaWNhdGlvblVp
IDogcHVibGljIFFXZWJOb3RpZmljYXRpb25VaQoreworUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBX
ZWJOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSwgY29uc3QgUUJ5dGVBcnJheSYgYnl0ZXMpIDogUVdlYk5vdGlmaWNhdGlvblVpKHRpdGxl
LCBtZXNzYWdlLCBieXRlcykKKyAgICB7CisgICAgICAgIG1fd2lkZ2V0ID0gbmV3IFdlYk5vdGlm
aWNhdGlvblVpV2lkZ2V0KHRpdGxlLCBtZXNzYWdlLCBieXRlcyk7CisgICAgICAgIGNvbm5lY3Qo
bV93aWRnZXQsIFNJR05BTChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpKSwgdGhp
cywgU0lHTkFMKG5vdGlmaWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJikpKTsKKyAgICB9Cisg
ICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uVWkoKSB7IG1fd2lkZ2V0LT5oaWRlKCk7IGRlbGV0
ZSBtX3dpZGdldDsgfQorCisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCkgeyBtX3dpZGdldC0+
c2hvd05vdGlmaWNhdGlvbigpOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYk5vdGlmaWNhdGlv
blVpV2lkZ2V0KiBtX3dpZGdldDsKK307CisKKyNlbmRpZiAvLyBXZWJOb3RpZmljYXRpb25zVWlf
aApJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdp
bi5jcHAJKHJldmlzaW9uIDYwOTgxKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1
Z2luL1dlYlBsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAsMTUgQEAgTXVs
dGlwbGVTZWxlY3Rpb25Qb3B1cDo6TXVsdGlwbGVTZWxlY3RpbwogCiBib29sIFdlYlBsdWdpbjo6
c3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QKIHsKLSAgICByZXR1
cm4gZXh0ZW5zaW9uID09IE11bHRpcGxlU2VsZWN0aW9uczsKKyAgICBpZiAoZXh0ZW5zaW9uID09
IE11bHRpcGxlU2VsZWN0aW9ucykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGV4dGVu
c2lvbiA9PSBOb3RpZmljYXRpb25zKQorI2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAg
IHJldHVybiB0cnVlOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBRX0VYUE9SVF9QTFVHSU4yKHF3ZWJzZWxlY3RpbSwgV2ViUGx1
Z2luKQpJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVn
aW4uaAkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVn
aW4vV2ViUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUg
V0VCUExVR0lOX0gKIAogI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgorI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvblVpLmgiCiAKICNpbmNsdWRlIDxRRGlhbG9nPgogCkBAIC04OCw2
ICs4OSw3IEBAIGNsYXNzIFdlYlBsdWdpbiA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNlbGVjdElucHV0TWV0aG9k
KCkgY29uc3QgeyByZXR1cm4gbmV3IFdlYlBvcHVwKCk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3Q7CisgICAgdmlydHVhbCBR
V2ViTm90aWZpY2F0aW9uVWkqIGNyZWF0ZU5vdGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmIHRp
dGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRQnl0ZUFycmF5JiBieXRlcykgY29u
c3QgeyBpZiAoc3VwcG9ydHNFeHRlbnNpb24oTm90aWZpY2F0aW9ucykpIHJldHVybiBuZXcgV2Vi
Tm90aWZpY2F0aW9uVWkodGl0bGUsIG1lc3NhZ2UsIGJ5dGVzKTsgcmV0dXJuIDA7IH0KIH07CiAK
IApJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3BsYXRmb3JtcGx1Z2lu
LnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxh
dGZvcm1wbHVnaW4ucHJvCShyZXZpc2lvbiA2MDk4MSkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9w
bGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTYsOCAr
NiwxMiBAQCBDT05GSUcgKz0gcGx1Z2luCiBERVNURElSID0gJCRbUVRfSU5TVEFMTF9QTFVHSU5T
XS93ZWJraXQKIAogU09VUkNFUyArPSBcCi0gICAgV2ViUGx1Z2luLmNwcAorICAgIFdlYlBsdWdp
bi5jcHAgXAorICAgIFdlYk5vdGlmaWNhdGlvblVpLmNwcAogCiBIRUFERVJTICs9IFwKICAgICBX
ZWJQbHVnaW4uaCBcCi0gICAgcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKKyAgICBxd2Via2l0cGxh
dGZvcm1wbHVnaW4uaCBcCisgICAgV2ViTm90aWZpY2F0aW9uVWkuaAorCishY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX05PVElGSUNBVElPTlM9Lik6IERFRklORVMgKz0gRU5BQkxFX05PVElGSUNB
VElPTlM9MQpJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRw
bGF0Zm9ybXBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9y
bXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaAkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJL
aXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU4LDIwICs1OCwzNSBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBkaWRI
aWRlKCk7CiB9OwogCitjbGFzcyBRV2ViTm90aWZpY2F0aW9uVWkgOiBwdWJsaWMgUU9iamVjdAor
eworUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2ViTm90aWZpY2F0aW9uVWkoY29uc3QgUVN0cmlu
ZyYsIGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRQnl0ZUFycmF5Jikge30KKyAgICB2aXJ0dWFsIH5R
V2ViTm90aWZpY2F0aW9uVWkoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRp
b24oKSA9IDA7CisgICAgCitRX1NJR05BTFM6CisgICAgdm9pZCBub3RpZmljYXRpb25DbG9zZWQo
Y29uc3QgUVN0cmluZyYpOworfTsKKwogY2xhc3MgUVdlYktpdFBsYXRmb3JtUGx1Z2luCiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UVdlYktpdFBsYXRmb3JtUGx1Z2luKCkge30KIAogICAgIGVu
dW0gRXh0ZW5zaW9uIHsKLSAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb25zCisgICAgICAgIE11bHRp
cGxlU2VsZWN0aW9ucywKKyAgICAgICAgTm90aWZpY2F0aW9ucwogICAgIH07CiAKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUVdlYlNlbGVjdE1ldGhvZCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2Qo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRV2ViTm90aWZpY2F0aW9uVWkqIGNyZWF0ZU5vdGlm
aWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBRQnl0ZUFycmF5JikgY29uc3QgPSAwOwogCiB9OwogCi1RX0RFQ0xBUkVfSU5URVJGQUNF
KFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiwgImNvbS5ub2tpYS5RdC5XZWJLaXQuUGxhdGZvcm1QbHVn
aW4vMS4xIik7CitRX0RFQ0xBUkVfSU5URVJGQUNFKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiwgImNv
bS5ub2tpYS5RdC5XZWJLaXQuUGxhdGZvcm1QbHVnaW4vMS4yIik7CiAKICNlbmRpZiAvLyBRV0VC
S0lUUExBVEZPUk1QTFVHSU5fSAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58435</attachid>
            <date>2010-06-10 19:18:37 -0700</date>
            <delta_ts>2010-06-11 10:25:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>40005.patch</filename>
            <type>text/plain</type>
            <size>18324</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNjA5ODUpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAtMDYtMTAgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gUGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQgZm9yIE5vdGlmaWNhdGlvbnMgVUkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDA1CisK
KyAgICAgICAgQWRkIGFuIGludGVyZmFjZSB0byB0aGUgcGxhdGZvcm0gcGx1Z2luIHRvIGRpc3Bs
YXkgVUkgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIFVJIG5vdGlmaWNh
dGlvbiBpbiB0aGUgZXhhbXBsZSBwbGF0Zm9ybSBwbHVnaW4uIAorICAgICAgICBUaGlzIGludGVy
ZmFjZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBjb3VsZCBiZSB0dXJuZWQgb2ZmIHdpdGgK
KyAgICAgICAgYSBidWlsZCBmbGFnLgorCisgICAgICAgICogQXBpL3F3ZWJraXRwbGF0Zm9ybXBs
dWdpbi5oOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblVpOjpRV2ViTm90aWZpY2F0aW9uVWkp
OgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblVpOjp+UVdlYk5vdGlmaWNhdGlvblVpKToKKyAg
ICAgICAgKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25JY29uV3JhcHBlcjo6Tm90aWZpY2F0aW9uSWNvbldyYXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6On5Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3Jh
cHBlcjo6bm90aWZpY2F0aW9uQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0OjpkaXNwbGF5Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRQ
bGF0Zm9ybVBsdWdpbjo6Y3JlYXRlTm90aWZpY2F0aW9uVWkpOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9XZWJOb3RpZmljYXRpb25VaS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViTm90aWZpY2F0
aW9uVWlXaWRnZXQ6OldlYk5vdGlmaWNhdGlvblVpV2lkZ2V0KToKKyAgICAgICAgKFdlYk5vdGlm
aWNhdGlvblVpV2lkZ2V0Ojp+V2ViTm90aWZpY2F0aW9uVWlXaWRnZXQpOgorICAgICAgICAoV2Vi
Tm90aWZpY2F0aW9uVWlXaWRnZXQ6OnNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViTm90
aWZpY2F0aW9uVWlXaWRnZXQ6OmV2ZW50KToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9XZWJOb3RpZmljYXRpb25VaS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlv
blVpOjpXZWJOb3RpZmljYXRpb25VaSk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25VaTo6fldl
Yk5vdGlmaWNhdGlvblVpKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblVpOjpzaG93Tm90aWZp
Y2F0aW9uKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3Bw
OgorICAgICAgICAoV2ViUGx1Z2luOjpzdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgICogZXhh
bXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6CisgICAgICAgIChXZWJQbHVnaW46OmNy
ZWF0ZU5vdGlmaWNhdGlvblVpKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9w
bGF0Zm9ybXBsdWdpbi5wcm86CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdl
YmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uVWk6OlFXZWJO
b3RpZmljYXRpb25VaSk6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uVWk6On5RV2ViTm90aWZp
Y2F0aW9uVWkpOgorICAgICAgICAoUVdlYktpdFBsYXRmb3JtUGx1Z2luOjopOgorCiAyMDEwLTA2
LTEwICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYktpdC9xdC9BcGkv
cXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2Vi
a2l0cGxhdGZvcm1wbHVnaW4uaAkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvQXBpL3F3
ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwyMCArNTgsMzUgQEAg
UV9TSUdOQUxTOgogICAgIHZvaWQgZGlkSGlkZSgpOwogfTsKIAorY2xhc3MgUVdlYk5vdGlmaWNh
dGlvblVpIDogcHVibGljIFFPYmplY3QKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5v
dGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiwgY29uc3QgUUJ5dGVB
cnJheSYpIHt9CisgICAgdmlydHVhbCB+UVdlYk5vdGlmaWNhdGlvblVpKCkge30KKworICAgIHZp
cnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCkgPSAwOworICAgIAorUV9TSUdOQUxTOgorICAg
IHZvaWQgbm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0IFFTdHJpbmcmKTsKK307CisKIGNsYXNzIFFX
ZWJLaXRQbGF0Zm9ybVBsdWdpbgogewogcHVibGljOgogICAgIHZpcnR1YWwgflFXZWJLaXRQbGF0
Zm9ybVBsdWdpbigpIHt9CiAKICAgICBlbnVtIEV4dGVuc2lvbiB7Ci0gICAgICAgIE11bHRpcGxl
U2VsZWN0aW9ucworICAgICAgICBNdWx0aXBsZVNlbGVjdGlvbnMsCisgICAgICAgIE5vdGlmaWNh
dGlvbnMKICAgICB9OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVu
c2lvbiBleHRlbnNpb24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2Qq
IGNyZWF0ZVNlbGVjdElucHV0TWV0aG9kKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUVdlYk5v
dGlmaWNhdGlvblVpKiBjcmVhdGVOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwg
Y29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJheSYpIGNvbnN0ID0gMDsKIAog
fTsKIAotUV9ERUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9r
aWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEuMSIpOworUV9ERUNMQVJFX0lOVEVSRkFDRShR
V2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2lu
LzEuMiIpOwogCiAjZW5kaWYgLy8gUVdFQktJVFBMQVRGT1JNUExVR0lOX0gKSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0LmNwcAkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Niw5ICszNiwxMSBAQAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJRdFBsYXRm
b3JtUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgInF3
ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlICJxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCIKICNpbmNs
dWRlIDxRdEd1aT4KIAogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQpAQCAtNjYsNyArNjgsNyBA
QCBOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6Tm90aWZpY2F0aW9uSWNvCiAjaWZuZGVmIFFUX05P
X1NZU1RFTVRSQVlJQ09OCiAgICAgbV9ub3RpZmljYXRpb25JY29uID0gMDsKICNlbmRpZgotICAg
IG1fY2xvc2VUaW1lci5zdGFydE9uZVNob3Qobm90aWZpY2F0aW9uVGltZW91dCk7CisgICAgbV9u
b3RpZmljYXRpb25VaSA9IDA7CiB9CiAKIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjp+Tm90aWZp
Y2F0aW9uSWNvbldyYXBwZXIoKQpAQCAtODIsNiArODQsMTYgQEAgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6Ok5vdGlmaWNhdAogewogfQogCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KCkKK3sKKyAgICB3aGlsZSAoIW1f
bm90aWZpY2F0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpJ
dGVyYXRvciBpdGVyID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCk7CisgICAgICAgIE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uID0gaXRlci5rZXkoKTsKKyAgICAgICAgZGVsZXRlIG1fbm90aWZp
Y2F0aW9ucy50YWtlKG5vdGlmaWNhdGlvbik7CisgICAgICAgIG5vdGlmaWNhdGlvbi0+dW5zZXRQ
ZW5kaW5nQWN0aXZpdHkobm90aWZpY2F0aW9uKTsKKyAgICB9Cit9CisKIHZvaWQgTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlbW92ZUNsaWVudCgpCiB7CiAgICAgbV9jbGllbnRDb3Vu
dC0tOwpAQCAtOTEsNiArMTAzLDExIEBAIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6OnJlbW8KICAgICB9CiB9CiAKK3ZvaWQgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Om5vdGlm
aWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJikKK3sKKyAgICBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCktPmNhbmNlbCh0aGlzKTsKK30KKwog
Ym9vbCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6c2hvdyhOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKIHsKICAgICAvLyBGSVhNRTogd29ya2VycyBiYXNlZCBub3RpZmljYXRpb25z
IGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KQEAgLTEyMywxNCArMTQwLDE5IEBAIHZvaWQgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRpc3AKICAgICAgICAgbWVzc2FnZSA9IG5vdGlmaWNh
dGlvbi0+Y29udGVudHMoKS5ib2R5KCk7CiAgICAgfQogCisgICAgd3JhcHBlci0+bV9ub3RpZmlj
YXRpb25VaSA9IG1fcGxhdGZvcm1QbHVnaW4uY3JlYXRlTm90aWZpY2F0aW9uVWkodGl0bGUsIG1l
c3NhZ2UsIGJ5dGVzKTsKKworICAgIGlmICghd3JhcHBlci0+bV9ub3RpZmljYXRpb25VaSkgewog
I2lmbmRlZiBRVF9OT19TWVNURU1UUkFZSUNPTgotICAgIFFQaXhtYXAgcGl4bWFwOwotICAgIGlm
IChieXRlcy5sZW5ndGgoKSAmJiBwaXhtYXAubG9hZEZyb21EYXRhKGJ5dGVzKSkgewotICAgICAg
ICBRSWNvbiBpY29uKHBpeG1hcCk7Ci0gICAgICAgIHdyYXBwZXItPm1fbm90aWZpY2F0aW9uSWNv
biA9IG5ldyBRU3lzdGVtVHJheUljb24oaWNvbik7Ci0gICAgfSBlbHNlCi0gICAgICAgIHdyYXBw
ZXItPm1fbm90aWZpY2F0aW9uSWNvbiA9IG5ldyBRU3lzdGVtVHJheUljb24oKTsKKyAgICAgICAg
d3JhcHBlci0+bV9jbG9zZVRpbWVyLnN0YXJ0T25lU2hvdChub3RpZmljYXRpb25UaW1lb3V0KTsK
KyAgICAgICAgUVBpeG1hcCBwaXhtYXA7CisgICAgICAgIGlmIChieXRlcy5sZW5ndGgoKSAmJiBw
aXhtYXAubG9hZEZyb21EYXRhKGJ5dGVzKSkgeworICAgICAgICAgICAgUUljb24gaWNvbihwaXht
YXApOworICAgICAgICAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25JY29uID0gbmV3IFFTeXN0
ZW1UcmF5SWNvbihpY29uKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB3cmFwcGVyLT5t
X25vdGlmaWNhdGlvbkljb24gPSBuZXcgUVN5c3RlbVRyYXlJY29uKCk7CiAjZW5kaWYKKyAgICB9
CiAKICAgICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCAiZGlzcGxheSIpOwogCkBAIC0xMzgsNiAr
MTYwLDEzIEBAIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRpc3AKICAgICBp
ZiAobV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uKSA9PSBtX25vdGlmaWNhdGlvbnMu
ZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICh3cmFwcGVyLT5tX25vdGlmaWNhdGlv
blVpKSB7CisgICAgICAgIHdyYXBwZXItPmNvbm5lY3Qod3JhcHBlci0+bV9ub3RpZmljYXRpb25V
aS5nZXQoKSwgU0lHTkFMKG5vdGlmaWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJikpLCB3cmFw
cGVyLCBTTE9UKG5vdGlmaWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJikpLCBRdDo6UXVldWVk
Q29ubmVjdGlvbik7CisgICAgICAgIHdyYXBwZXItPm1fbm90aWZpY2F0aW9uVWktPnNob3dOb3Rp
ZmljYXRpb24oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCiAjaWZuZGVmIFFUX05PX1NZ
U1RFTVRSQVlJQ09OCiAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25JY29uLT5zaG93KCk7CiAg
ICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25JY29uLT5zaG93TWVzc2FnZShub3RpZmljYXRpb24t
PmNvbnRlbnRzKCkudGl0bGUoKSwgbm90aWZpY2F0aW9uLT5jb250ZW50cygpLmJvZHkoKSk7Cklu
ZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50UXQuaAkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsMzYgKzM0LDQ4IEBACiAKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRl
ICJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlICJRdFBsYXRmb3JtUGx1Z2luLmgi
CiAjaW5jbHVkZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgPFFNdWx0aUhhc2g+CiAjaW5jbHVkZSA8
UVN5c3RlbVRyYXlJY29uPgogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitjbGFzcyBRV2Vi
Tm90aWZpY2F0aW9uVWk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBLVVJMOwogCi1jbGFzcyBOb3RpZmljYXRpb25JY29uV3JhcHBlciB7CitjbGFzcyBO
b3RpZmljYXRpb25JY29uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAog
cHVibGljOgogICAgIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyKCk7CiAgICAgfk5vdGlmaWNhdGlv
bkljb25XcmFwcGVyKCk7CisKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbG9zZShUaW1l
cjxOb3RpZmljYXRpb25JY29uV3JhcHBlcj4qKTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9p
ZCBub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpOworCitwdWJsaWM6CiAjaWZuZGVm
IFFUX05PX1NZU1RFTVRSQVlJQ09OCiAgICAgT3duUHRyPFFTeXN0ZW1UcmF5SWNvbj4gbV9ub3Rp
ZmljYXRpb25JY29uOwogI2VuZGlmCisKKyAgICBPd25QdHI8UVdlYk5vdGlmaWNhdGlvblVpPiBt
X25vdGlmaWNhdGlvblVpOwogICAgIFRpbWVyPE5vdGlmaWNhdGlvbkljb25XcmFwcGVyPiBtX2Ns
b3NlVGltZXI7CiB9OwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKIHR5cGVkZWYgUUhh
c2ggPE5vdGlmaWNhdGlvbiosIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyKj4gTm90aWZpY2F0aW9u
c1F1ZXVlOwogCiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCA6IHB1YmxpYyBO
b3RpZmljYXRpb25QcmVzZW50ZXIgewogcHVibGljOgogICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0KCk7Ci0gICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KCkge30KKyAg
ICB+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKTsKIAogICAgIC8qIFdlYkNvcmU6Ok5v
dGlmaWNhdGlvblByZXNlbnRlciBpbnRlcmZhY2UgKi8KICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhO
b3RpZmljYXRpb24qKTsKQEAgLTk1LDkgKzEwNywxMSBAQCBwcml2YXRlOgogICAgIFFIYXNoPFFT
dHJpbmcsICBRTGlzdDxSZWZQdHI8Vm9pZENhbGxiYWNrPiA+ID4gbV9wZW5kaW5nUGVybWlzc2lv
blJlcXVlc3RzOwogICAgIE5vdGlmaWNhdGlvbnNRdWV1ZSBtX25vdGlmaWNhdGlvbnM7CiAgICAg
UU9iamVjdCogbV9yZWNlaXZlcjsKKyAgICBRdFBsYXRmb3JtUGx1Z2luIG1fcGxhdGZvcm1QbHVn
aW47CiB9OwogCisjZW5kaWYKKwogfQogCiAjZW5kaWYKLSNlbmRpZgpJbmRleDogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcAkocmV2aXNpb24gNjA5ODEp
CisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1Nyw0ICsxNTcsMTMgQEAgUXRBYnN0cmFjdFdlYlBvcHVwKiBRdFBsYXRm
b3JtUGx1Z2luOjpjcgogICAgIHJldHVybiBuZXcgU2VsZWN0SW5wdXRNZXRob2RXcmFwcGVyKHNl
bGVjdG9yKTsKIH0KIAorCitRV2ViTm90aWZpY2F0aW9uVWkqIFF0UGxhdGZvcm1QbHVnaW46OmNy
ZWF0ZU5vdGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBRQnl0ZUFycmF5JiBieXRlcykKK3sKKyAgICBRV2ViS2l0UGxhdGZvcm1Q
bHVnaW4qIHAgPSBwbHVnaW4oKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBwLT5jcmVhdGVOb3RpZmljYXRpb25VaSh0aXRsZSwgbWVzc2FnZSwgYnl0ZXMpOwor
fQorCiB9CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2lu
LmgJKHJldmlzaW9uIDYwOTgxKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZv
cm1QbHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiBjbGFzcyBRV2Vi
U2VsZWN0TWV0aG9kOwogY2xhc3MgUVdlYktpdFBsYXRmb3JtUGx1Z2luOworY2xhc3MgUVdlYk5v
dGlmaWNhdGlvblVpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDYgKzUzLDcgQEAg
cHVibGljOgogICAgIH5RdFBsYXRmb3JtUGx1Z2luKCk7CiAKICAgICBRdEFic3RyYWN0V2ViUG9w
dXAqIGNyZWF0ZVNlbGVjdElucHV0TWV0aG9kKCk7CisgICAgUVdlYk5vdGlmaWNhdGlvblVpKiBj
cmVhdGVOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYg
bWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJheSYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fk
ZWQ7CkluZGV4OiBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0
aW9uVWkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdp
bi9XZWJOb3RpZmljYXRpb25VaS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvcXQvZXhhbXBs
ZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uVWkuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRp
b25VaS5oIgorCitXZWJOb3RpZmljYXRpb25VaVdpZGdldDo6V2ViTm90aWZpY2F0aW9uVWlXaWRn
ZXQoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFC
eXRlQXJyYXkmIGJ5dGVzKQorICAgIDogUVdpZGdldCgpCisgICAgLCBtX3RpdGxlKHRpdGxlKQor
ICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCit7CisgICAgUVBpeG1hcCBtYXNrOworICAgIFFQYWlu
dGVyIHBhaW50ZXIoJm1hc2spOworICAgIHBhaW50ZXIuZmlsbFJlY3QoMCwgMCwgMzAwLCAxMDAs
IFF0OjpsaWdodEdyYXkpOworICAgIFFCaXRtYXAgYml0bWFwKG1hc2spOworICAgIHNldE1hc2so
Yml0bWFwKTsKKyAgICBRR3JpZExheW91dCogbGF5b3V0ID0gbmV3IFFHcmlkTGF5b3V0KHRoaXMp
OworICAgIGxheW91dC0+YWRkV2lkZ2V0KG5ldyBRTGFiZWwobV90aXRsZSksIDAsIDAsIDEsIDUp
OworICAgIGludCBtZXNzYWdlUG9zaXRpb24gPSAwOworICAgIGlmIChieXRlcy5sZW5ndGgoKSAm
JiBtX3BpeG1hcC5sb2FkRnJvbURhdGEoYnl0ZXMpKSB7CisgICAgICAgIFFMYWJlbCogbGFiZWwg
PSBuZXcgUUxhYmVsOworICAgICAgICBsYWJlbC0+c2V0UGl4bWFwKG1fcGl4bWFwKTsKKyAgICAg
ICAgbGF5b3V0LT5hZGRXaWRnZXQobGFiZWwsIDEsIDAsIDEsIDEpOworICAgICAgICBtZXNzYWdl
UG9zaXRpb24rKzsKKyAgICB9CisgICAgUUxhYmVsKiBtZXNzYWdlTGFiZWwgPSBuZXcgUUxhYmVs
KG1fbWVzc2FnZSk7CisgICAgbWVzc2FnZUxhYmVsLT5zZXRNYXNrKGJpdG1hcCk7CisgICAgbWVz
c2FnZUxhYmVsLT5zZXRXb3JkV3JhcCh0cnVlKTsKKyAgICBsYXlvdXQtPmFkZFdpZGdldChtZXNz
YWdlTGFiZWwsIDEsIG1lc3NhZ2VQb3NpdGlvbiwgMSwgNSAtIG1lc3NhZ2VQb3NpdGlvbik7Cisg
ICAgc2V0TGF5b3V0KGxheW91dCk7CisgICAgc2V0Rml4ZWRTaXplKDMwMCwgMTAwKTsKK30KKwor
V2ViTm90aWZpY2F0aW9uVWlXaWRnZXQ6On5XZWJOb3RpZmljYXRpb25VaVdpZGdldCgpCit7Cit9
CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uVWlXaWRnZXQ6OnNob3dOb3RpZmljYXRpb24oKQorewor
ICAgIHNob3coKTsKK30KKworYm9vbCBXZWJOb3RpZmljYXRpb25VaVdpZGdldDo6ZXZlbnQoUUV2
ZW50KiBldikKK3sKKyAgICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVs
ZWFzZSB8fCBldi0+dHlwZSgpID09IFFFdmVudDo6Q2xvc2UpCisgICAgICAgIGVtaXQgbm90aWZp
Y2F0aW9uQ2xvc2VkKCIiKTsKKyAgICByZXR1cm4gUVdpZGdldDo6ZXZlbnQoZXYpOworfQorCklu
ZGV4OiBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uVWku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90
aWZpY2F0aW9uVWkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9y
bXBsdWdpbi9XZWJOb3RpZmljYXRpb25VaS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgV2ViTm90aWZpY2F0aW9uVWlfaCAgCisjZGVm
aW5lIFdlYk5vdGlmaWNhdGlvblVpX2gKKworI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdp
bi5oIgorI2luY2x1ZGUgPFF0R3VpPgorCitjbGFzcyBXZWJOb3RpZmljYXRpb25VaVdpZGdldCA6
IHB1YmxpYyBRV2lkZ2V0Cit7CitRX09CSkVDVAorcHVibGljOgorICAgIFdlYk5vdGlmaWNhdGlv
blVpV2lkZ2V0KGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBRQnl0ZUFycmF5Jik7CisgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uVWlXaWRnZXQo
KTsKKworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbigpOworICAgIGJvb2wgZXZlbnQoUUV2ZW50
KiBldik7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZChjb25zdCBR
U3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgUVN0cmluZyBtX3RpdGxlOworICAgIFFTdHJpbmcg
bV9tZXNzYWdlOworICAgIFFQaXhtYXAgbV9waXhtYXA7Cit9OworCitjbGFzcyBXZWJOb3RpZmlj
YXRpb25VaSA6IHB1YmxpYyBRV2ViTm90aWZpY2F0aW9uVWkKK3sKK1FfT0JKRUNUCitwdWJsaWM6
CisgICAgV2ViTm90aWZpY2F0aW9uVWkoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFFCeXRlQXJyYXkmIGJ5dGVzKSA6IFFXZWJOb3RpZmljYXRpb25V
aSh0aXRsZSwgbWVzc2FnZSwgYnl0ZXMpCisgICAgeworICAgICAgICBtX3dpZGdldCA9IG5ldyBX
ZWJOb3RpZmljYXRpb25VaVdpZGdldCh0aXRsZSwgbWVzc2FnZSwgYnl0ZXMpOworICAgICAgICBj
b25uZWN0KG1fd2lkZ2V0LCBTSUdOQUwobm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0IFFTdHJpbmcm
KSksIHRoaXMsIFNJR05BTChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpKSk7Cisg
ICAgfQorICAgIHZpcnR1YWwgfldlYk5vdGlmaWNhdGlvblVpKCkgeyBtX3dpZGdldC0+aGlkZSgp
OyBkZWxldGUgbV93aWRnZXQ7IH0KKworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbigpIHsgbV93
aWRnZXQtPnNob3dOb3RpZmljYXRpb24oKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBXZWJOb3Rp
ZmljYXRpb25VaVdpZGdldCogbV93aWRnZXQ7Cit9OworCisjZW5kaWYgLy8gV2ViTm90aWZpY2F0
aW9uc1VpX2gKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVn
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9X
ZWJQbHVnaW4uY3BwCShyZXZpc2lvbiA2MDk4MSkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0
Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDE1
IEBAIE11bHRpcGxlU2VsZWN0aW9uUG9wdXA6Ok11bHRpcGxlU2VsZWN0aW8KIAogYm9vbCBXZWJQ
bHVnaW46OnN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGV4dGVuc2lvbiA9PSBNdWx0aXBsZVNlbGVjdGlvbnM7CisgICAgaWYgKGV4dGVu
c2lvbiA9PSBNdWx0aXBsZVNlbGVjdGlvbnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlm
IChleHRlbnNpb24gPT0gTm90aWZpY2F0aW9ucykKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogUV9FWFBPUlRfUExVR0lOMihxd2Vic2VsZWN0aW0s
IFdlYlBsdWdpbikKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQ
bHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4v
V2ViUGx1Z2luLmgJKHJldmlzaW9uIDYwOTgxKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRm
b3JtcGx1Z2luL1dlYlBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAj
ZGVmaW5lIFdFQlBMVUdJTl9ICiAKICNpbmNsdWRlICJxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCIK
KyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25VaS5oIgogCiAjaW5jbHVkZSA8UURpYWxvZz4KIApA
QCAtODgsNiArODksNyBAQCBjbGFzcyBXZWJQbHVnaW4gOiBwdWJsaWMgUU9iamVjdCwgcHVibGlj
CiBwdWJsaWM6CiAgICAgdmlydHVhbCBRV2ViU2VsZWN0TWV0aG9kKiBjcmVhdGVTZWxlY3RJbnB1
dE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJQb3B1cCgpOyB9CiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0OworICAgIHZp
cnR1YWwgUVdlYk5vdGlmaWNhdGlvblVpKiBjcmVhdGVOb3RpZmljYXRpb25VaShjb25zdCBRU3Ry
aW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJheSYgYnl0
ZXMpIGNvbnN0IHsgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKE5vdGlmaWNhdGlvbnMpKSByZXR1cm4g
bmV3IFdlYk5vdGlmaWNhdGlvblVpKHRpdGxlLCBtZXNzYWdlLCBieXRlcyk7IHJldHVybiAwOyB9
CiB9OwogCiAKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9y
bXBsdWdpbi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1
Z2luL3BsYXRmb3JtcGx1Z2luLnBybwkocmV2aXNpb24gNjA5ODEpCisrKyBXZWJLaXQvcXQvZXhh
bXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC02LDggKzYsMTIgQEAgQ09ORklHICs9IHBsdWdpbgogREVTVERJUiA9ICQkW1FUX0lOU1RBTExf
UExVR0lOU10vd2Via2l0CiAKIFNPVVJDRVMgKz0gXAotICAgIFdlYlBsdWdpbi5jcHAKKyAgICBX
ZWJQbHVnaW4uY3BwIFwKKyAgICBXZWJOb3RpZmljYXRpb25VaS5jcHAKIAogSEVBREVSUyArPSBc
CiAgICAgV2ViUGx1Z2luLmggXAotICAgIHF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCisgICAgcXdl
YmtpdHBsYXRmb3JtcGx1Z2luLmggXAorICAgIFdlYk5vdGlmaWNhdGlvblVpLmgKKworIWNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9OT1RJRklDQVRJT05TPS4pOiBERUZJTkVTICs9IEVOQUJMRV9O
T1RJRklDQVRJT05TPTEKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9x
d2Via2l0cGxhdGZvcm1wbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMv
cGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgJKHJldmlzaW9uIDYwOTgxKQor
KysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwyMCArNTgsMzUgQEAgUV9TSUdOQUxTOgogICAgIHZv
aWQgZGlkSGlkZSgpOwogfTsKIAorY2xhc3MgUVdlYk5vdGlmaWNhdGlvblVpIDogcHVibGljIFFP
YmplY3QKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5vdGlmaWNhdGlvblVpKGNvbnN0
IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJiwgY29uc3QgUUJ5dGVBcnJheSYpIHt9CisgICAgdmly
dHVhbCB+UVdlYk5vdGlmaWNhdGlvblVpKCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90
aWZpY2F0aW9uKCkgPSAwOworICAgIAorUV9TSUdOQUxTOgorICAgIHZvaWQgbm90aWZpY2F0aW9u
Q2xvc2VkKGNvbnN0IFFTdHJpbmcmKTsKK307CisKIGNsYXNzIFFXZWJLaXRQbGF0Zm9ybVBsdWdp
bgogewogcHVibGljOgogICAgIHZpcnR1YWwgflFXZWJLaXRQbGF0Zm9ybVBsdWdpbigpIHt9CiAK
ICAgICBlbnVtIEV4dGVuc2lvbiB7Ci0gICAgICAgIE11bHRpcGxlU2VsZWN0aW9ucworICAgICAg
ICBNdWx0aXBsZVNlbGVjdGlvbnMsCisgICAgICAgIE5vdGlmaWNhdGlvbnMKICAgICB9OwogCiAg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNpb24pIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNlbGVjdElucHV0
TWV0aG9kKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUVdlYk5vdGlmaWNhdGlvblVpKiBjcmVh
dGVOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSwgY29uc3QgUUJ5dGVBcnJheSYpIGNvbnN0ID0gMDsKIAogfTsKIAotUV9ERUNMQVJFX0lO
VEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRm
b3JtUGx1Z2luLzEuMSIpOworUV9ERUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVn
aW4sICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEuMiIpOwogCiAjZW5kaWYg
Ly8gUVdFQktJVFBMQVRGT1JNUExVR0lOX0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58484</attachid>
            <date>2010-06-11 10:25:47 -0700</date>
            <delta_ts>2010-06-11 14:54:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>40005.patch</filename>
            <type>text/plain</type>
            <size>19629</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5n
ZUxvZwkocmV2aXNpb24gNjEwMjQpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTAtMDYtMTEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFy
b25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtRdF0gUGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQgZm9yIE5vdGlmaWNhdGlvbnMgVUkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDA1CisK
KyAgICAgICAgQWRkIGFuIGludGVyZmFjZSB0byB0aGUgcGxhdGZvcm0gcGx1Z2luIHRvIGRpc3Bs
YXkgVUkgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIFVJIG5vdGlmaWNh
dGlvbiBpbiB0aGUgZXhhbXBsZSBwbGF0Zm9ybSBwbHVnaW4uIAorICAgICAgICBUaGlzIGludGVy
ZmFjZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGJ1dCBjb3VsZCBiZSB0dXJuZWQgb2ZmIHdpdGgK
KyAgICAgICAgYSBidWlsZCBmbGFnLgorCisgICAgICAgIENoYW5nZWQgdGhlIHdheSBOb3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdCBpcyBkZWxldGVkIGJlY2F1c2UgaXQKKyAgICAgICAgaXMg
YmVpbmcgYWNjZXNzZWQgd2hlbiBHQyBpcyBkZWxldGluZyB0aGUgTm90aWZpY2F0aW9uIG9iamVj
dHMuCisgICAgICAgIEEgZGVsZXRlIHRpbWVyIHdhcyBjcmVhdGVkIHRvIGVuc3VyZSB0aGF0IE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0CisgICAgICAgIGlzIGRlbGV0ZWQgYWZ0ZXIgZmlu
YWwgR0Mgd2FzIGRvbmUuCisKKyAgICAgICAgKiBBcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6
CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uVWk6OlFXZWJOb3RpZmljYXRpb25VaSk6CisgICAg
ICAgIChRV2ViTm90aWZpY2F0aW9uVWk6On5RV2ViTm90aWZpY2F0aW9uVWkpOgorICAgICAgICAo
UVdlYktpdFBsYXRmb3JtUGx1Z2luOjopOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkljb25XcmFwcGVyOjpOb3RpZmljYXRpb25JY29uV3JhcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6Tm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGVsZXRlTWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlbW92ZUNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2xvc2VkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwbGF5
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVn
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlTm90aWZp
Y2F0aW9uVWkpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaDoK
KyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25VaS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uVWlXaWRnZXQ6OldlYk5vdGlmaWNhdGlv
blVpV2lkZ2V0KToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblVpV2lkZ2V0Ojp+V2ViTm90aWZp
Y2F0aW9uVWlXaWRnZXQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uVWlXaWRnZXQ6OnNob3dO
b3RpZmljYXRpb24pOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uVWlXaWRnZXQ6OmV2ZW50KToK
KyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25VaS5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblVpOjpXZWJOb3RpZmljYXRpb25VaSk6Cisg
ICAgICAgIChXZWJOb3RpZmljYXRpb25VaTo6fldlYk5vdGlmaWNhdGlvblVpKToKKyAgICAgICAg
KFdlYk5vdGlmaWNhdGlvblVpOjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBleGFtcGxl
cy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwOgorICAgICAgICAoV2ViUGx1Z2luOjpzdXBw
b3J0c0V4dGVuc2lvbik6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1
Z2luLmg6CisgICAgICAgIChXZWJQbHVnaW46OmNyZWF0ZU5vdGlmaWNhdGlvblVpKToKKyAgICAg
ICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86CisgICAgICAg
ICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAg
ICAgIChRV2ViTm90aWZpY2F0aW9uVWk6OlFXZWJOb3RpZmljYXRpb25VaSk6CisgICAgICAgIChR
V2ViTm90aWZpY2F0aW9uVWk6On5RV2ViTm90aWZpY2F0aW9uVWkpOgorICAgICAgICAoUVdlYktp
dFBsYXRmb3JtUGx1Z2luOjopOgorCiAyMDEwLTA2LTExICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgbm9ib2R5LCBi
dWlsZCBmaXguCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgJKHJldmlz
aW9uIDYxMDIzKQorKysgV2ViS2l0L3F0L0FwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaAkod29y
a2luZyBjb3B5KQpAQCAtNTgsMjAgKzU4LDM1IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIGRpZEhp
ZGUoKTsKIH07CiAKK2NsYXNzIFFXZWJOb3RpZmljYXRpb25VaSA6IHB1YmxpYyBRT2JqZWN0Cit7
CitRX09CSkVDVAorcHVibGljOgorICAgIFFXZWJOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5n
JiwgY29uc3QgUVN0cmluZyYsIGNvbnN0IFFCeXRlQXJyYXkmKSB7fQorICAgIHZpcnR1YWwgflFX
ZWJOb3RpZmljYXRpb25VaSgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNhdGlv
bigpID0gMDsKKyAgICAKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZChj
b25zdCBRU3RyaW5nJik7Cit9OworCiBjbGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW4KIHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5RV2ViS2l0UGxhdGZvcm1QbHVnaW4oKSB7fQogCiAgICAgZW51
bSBFeHRlbnNpb24gewotICAgICAgICBNdWx0aXBsZVNlbGVjdGlvbnMKKyAgICAgICAgTXVsdGlw
bGVTZWxlY3Rpb25zLAorICAgICAgICBOb3RpZmljYXRpb25zCiAgICAgfTsKIAogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBRV2ViU2VsZWN0TWV0aG9kKiBjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFXZWJOb3RpZmljYXRpb25VaSogY3JlYXRlTm90aWZp
Y2F0aW9uVWkoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFFCeXRlQXJyYXkmKSBjb25zdCA9IDA7CiAKIH07CiAKLVFfREVDTEFSRV9JTlRFUkZBQ0Uo
UVdlYktpdFBsYXRmb3JtUGx1Z2luLCAiY29tLm5va2lhLlF0LldlYktpdC5QbGF0Zm9ybVBsdWdp
bi8xLjEiKTsKK1FfREVDTEFSRV9JTlRFUkZBQ0UoUVdlYktpdFBsYXRmb3JtUGx1Z2luLCAiY29t
Lm5va2lhLlF0LldlYktpdC5QbGF0Zm9ybVBsdWdpbi8xLjIiKTsKIAogI2VuZGlmIC8vIFFXRUJL
SVRQTEFURk9STVBMVUdJTl9ICkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDYx
MDIzKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTEgQEAKICNpbmNsdWRlICJE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNs
dWRlICJLVVJMLmgiCisjaW5jbHVkZSAiUXRQbGF0Zm9ybVBsdWdpbi5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSAi
cXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgiCiAjaW5jbHVkZSA8UXRHdWk+CiAKICNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKQEAgLTY2LDcgKzY4LDcgQEAgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6
Ok5vdGlmaWNhdGlvbkljbwogI2lmbmRlZiBRVF9OT19TWVNURU1UUkFZSUNPTgogICAgIG1fbm90
aWZpY2F0aW9uSWNvbiA9IDA7CiAjZW5kaWYKLSAgICBtX2Nsb3NlVGltZXIuc3RhcnRPbmVTaG90
KG5vdGlmaWNhdGlvblRpbWVvdXQpOworICAgIG1fbm90aWZpY2F0aW9uVWkgPSAwOwogfQogCiBO
b3RpZmljYXRpb25JY29uV3JhcHBlcjo6fk5vdGlmaWNhdGlvbkljb25XcmFwcGVyKCkKQEAgLTc4
LDE5ICs4MCw0MSBAQCB2b2lkIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpjbG9zZShUaW1lCiAg
ICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigp
LT5jYW5jZWwodGhpcyk7CiB9CiAKLU5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpIDogbV9jbGllbnRDb3VudCgwKQorTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQ6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KCkKKyAg
ICA6IG1fY2xpZW50Q291bnQoMCkKKyAgICAsIG1fZGVsZXRlVGltZXIodGhpcywgJk5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpkZWxldGVNZSkKIHsKIH0KIAorTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpCit7CisgICAg
d2hpbGUgKCFtX25vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIE5vdGlmaWNhdGlv
bnNRdWV1ZTo6SXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOworICAgICAg
ICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IGl0ZXIua2V5KCk7CisgICAgICAgIGRlbGV0
ZSBtX25vdGlmaWNhdGlvbnMudGFrZShub3RpZmljYXRpb24pOworICAgICAgICBub3RpZmljYXRp
b24tPnVuc2V0UGVuZGluZ0FjdGl2aXR5KG5vdGlmaWNhdGlvbik7CisgICAgfQorfQorCit2b2lk
IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkZWxldGVNZShUaW1lcjxOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdD4qKQoreworICAgIGRlbGV0ZSB0aGlzOworfQorCiB2b2lkIE5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpyZW1vdmVDbGllbnQoKQogewogICAgIG1fY2xp
ZW50Q291bnQtLTsKICAgICBpZiAoIW1fY2xpZW50Q291bnQpIHsKKyAgICAgICAgbV9kZWxldGVU
aW1lci5zdGFydE9uZVNob3Qoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CiAg
ICAgICAgIHNfbm90aWZpY2F0aW9uUHJlc2VudGVyID0gMDsKLSAgICAgICAgZGVsZXRlIHRoaXM7
CiAgICAgfQogfQogCit2b2lkIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpub3RpZmljYXRpb25D
bG9zZWQoY29uc3QgUVN0cmluZyYpCit7CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5jYW5jZWwodGhpcyk7Cit9CisKIGJvb2wgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCiB7CiAgICAgLy8gRklYTUU6IHdvcmtlcnMgYmFzZWQgbm90aWZpY2F0aW9ucyBhcmUgbm90
IHN1cHBvcnRlZCB5ZXQuCkBAIC0xMjMsMTQgKzE0NywxOSBAQCB2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpkaXNwCiAgICAgICAgIG1lc3NhZ2UgPSBub3RpZmljYXRpb24tPmNv
bnRlbnRzKCkuYm9keSgpOwogICAgIH0KIAorICAgIHdyYXBwZXItPm1fbm90aWZpY2F0aW9uVWkg
PSBtX3BsYXRmb3JtUGx1Z2luLmNyZWF0ZU5vdGlmaWNhdGlvblVpKHRpdGxlLCBtZXNzYWdlLCBi
eXRlcyk7CisKKyAgICBpZiAoIXdyYXBwZXItPm1fbm90aWZpY2F0aW9uVWkpIHsKICNpZm5kZWYg
UVRfTk9fU1lTVEVNVFJBWUlDT04KLSAgICBRUGl4bWFwIHBpeG1hcDsKLSAgICBpZiAoYnl0ZXMu
bGVuZ3RoKCkgJiYgcGl4bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKLSAgICAgICAgUUljb24g
aWNvbihwaXhtYXApOwotICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24gPSBuZXcg
UVN5c3RlbVRyYXlJY29uKGljb24pOwotICAgIH0gZWxzZQotICAgICAgICB3cmFwcGVyLT5tX25v
dGlmaWNhdGlvbkljb24gPSBuZXcgUVN5c3RlbVRyYXlJY29uKCk7CisgICAgICAgIHdyYXBwZXIt
Pm1fY2xvc2VUaW1lci5zdGFydE9uZVNob3Qobm90aWZpY2F0aW9uVGltZW91dCk7CisgICAgICAg
IFFQaXhtYXAgcGl4bWFwOworICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoKCkgJiYgcGl4bWFwLmxv
YWRGcm9tRGF0YShieXRlcykpIHsKKyAgICAgICAgICAgIFFJY29uIGljb24ocGl4bWFwKTsKKyAg
ICAgICAgICAgIHdyYXBwZXItPm1fbm90aWZpY2F0aW9uSWNvbiA9IG5ldyBRU3lzdGVtVHJheUlj
b24oaWNvbik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgd3JhcHBlci0+bV9ub3RpZmlj
YXRpb25JY29uID0gbmV3IFFTeXN0ZW1UcmF5SWNvbigpOwogI2VuZGlmCisgICAgfQogCiAgICAg
c2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgImRpc3BsYXkiKTsKIApAQCAtMTM4LDYgKzE2NywxMiBA
QCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwCiAgICAgaWYgKG1fbm90
aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbikgPT0gbV9ub3RpZmljYXRpb25zLmVuZCgpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBpZiAod3JhcHBlci0+bV9ub3RpZmljYXRpb25VaSkgewor
ICAgICAgICB3cmFwcGVyLT5jb25uZWN0KHdyYXBwZXItPm1fbm90aWZpY2F0aW9uVWkuZ2V0KCks
IFNJR05BTChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpKSwgd3JhcHBlciwgU0xP
VChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rp
b24pOworICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvblVpLT5zaG93Tm90aWZpY2F0aW9u
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlD
T04KICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24tPnNob3coKTsKICAgICB3cmFwcGVy
LT5tX25vdGlmaWNhdGlvbkljb24tPnNob3dNZXNzYWdlKG5vdGlmaWNhdGlvbi0+Y29udGVudHMo
KS50aXRsZSgpLCBub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSgpKTsKSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdC5oCShyZXZpc2lvbiA2MTAyMykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwzNiAr
MzQsNDggQEAKIAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIlF0UGxhdGZvcm1QbHVnaW4uaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogCiAjaW5jbHVkZSA8UU11bHRpSGFzaD4KICNpbmNsdWRlIDxRU3lzdGVtVHJh
eUljb24+CiAKLSNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK2NsYXNzIFFXZWJOb3RpZmljYXRp
b25VaTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEtV
Ukw7CiAKLWNsYXNzIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyIHsKK2NsYXNzIE5vdGlmaWNhdGlv
bkljb25XcmFwcGVyIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCiBwdWJsaWM6CiAg
ICAgTm90aWZpY2F0aW9uSWNvbldyYXBwZXIoKTsKICAgICB+Tm90aWZpY2F0aW9uSWNvbldyYXBw
ZXIoKTsKKwogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsb3NlKFRpbWVyPE5vdGlmaWNh
dGlvbkljb25XcmFwcGVyPiopOworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIG5vdGlmaWNh
dGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJik7CisKK3B1YmxpYzoKICNpZm5kZWYgUVRfTk9fU1lT
VEVNVFJBWUlDT04KICAgICBPd25QdHI8UVN5c3RlbVRyYXlJY29uPiBtX25vdGlmaWNhdGlvbklj
b247CiAjZW5kaWYKKworICAgIE93blB0cjxRV2ViTm90aWZpY2F0aW9uVWk+IG1fbm90aWZpY2F0
aW9uVWk7CiAgICAgVGltZXI8Tm90aWZpY2F0aW9uSWNvbldyYXBwZXI+IG1fY2xvc2VUaW1lcjsK
IH07CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKwogdHlwZWRlZiBRSGFzaCA8Tm90aWZp
Y2F0aW9uKiwgTm90aWZpY2F0aW9uSWNvbldyYXBwZXIqPiBOb3RpZmljYXRpb25zUXVldWU7CiAK
IGNsYXNzIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0IDogcHVibGljIE5vdGlmaWNhdGlv
blByZXNlbnRlciB7CiBwdWJsaWM6CiAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQo
KTsKLSAgICB+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKSB7fQorICAgIH5Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdCgpOwogCiAgICAgLyogV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyIGludGVyZmFjZSAqLwogICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlv
biopOwpAQCAtOTAsMTQgKzEwMiwxOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlUmVwbGFj
ZWROb3RpZmljYXRpb25Gcm9tUXVldWUoTm90aWZpY2F0aW9uKik7CiAgICAgdm9pZCBkdW1wUmVw
bGFjZWRJZFRleHQoTm90aWZpY2F0aW9uKik7CiAgICAgdm9pZCBkdW1wU2hvd1RleHQoTm90aWZp
Y2F0aW9uKik7CisgICAgdm9pZCBkZWxldGVNZShUaW1lcjxOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdD4qKTsKIAogICAgIGludCBtX2NsaWVudENvdW50OwogICAgIFFIYXNoPFFTdHJpbmcs
ICBRTGlzdDxSZWZQdHI8Vm9pZENhbGxiYWNrPiA+ID4gbV9wZW5kaW5nUGVybWlzc2lvblJlcXVl
c3RzOwogICAgIE5vdGlmaWNhdGlvbnNRdWV1ZSBtX25vdGlmaWNhdGlvbnM7CiAgICAgUU9iamVj
dCogbV9yZWNlaXZlcjsKKyAgICBRdFBsYXRmb3JtUGx1Z2luIG1fcGxhdGZvcm1QbHVnaW47Cisg
ICAgVGltZXI8Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ+IG1fZGVsZXRlVGltZXI7CiB9
OwogCisjZW5kaWYKKwogfQogCiAjZW5kaWYKLSNlbmRpZgpJbmRleDogV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcAkocmV2aXNpb24gNjEwMjMpCisrKyBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Nyw0ICsxNTcsMTMgQEAgUXRBYnN0cmFjdFdlYlBvcHVwKiBRdFBsYXRmb3JtUGx1
Z2luOjpjcgogICAgIHJldHVybiBuZXcgU2VsZWN0SW5wdXRNZXRob2RXcmFwcGVyKHNlbGVjdG9y
KTsKIH0KIAorCitRV2ViTm90aWZpY2F0aW9uVWkqIFF0UGxhdGZvcm1QbHVnaW46OmNyZWF0ZU5v
dGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBRQnl0ZUFycmF5JiBieXRlcykKK3sKKyAgICBRV2ViS2l0UGxhdGZvcm1QbHVnaW4q
IHAgPSBwbHVnaW4oKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBwLT5jcmVhdGVOb3RpZmljYXRpb25VaSh0aXRsZSwgbWVzc2FnZSwgYnl0ZXMpOworfQorCiB9
CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmgJKHJl
dmlzaW9uIDYxMDIzKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVn
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiBjbGFzcyBRV2ViU2VsZWN0
TWV0aG9kOwogY2xhc3MgUVdlYktpdFBsYXRmb3JtUGx1Z2luOworY2xhc3MgUVdlYk5vdGlmaWNh
dGlvblVpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDYgKzUzLDcgQEAgcHVibGlj
OgogICAgIH5RdFBsYXRmb3JtUGx1Z2luKCk7CiAKICAgICBRdEFic3RyYWN0V2ViUG9wdXAqIGNy
ZWF0ZVNlbGVjdElucHV0TWV0aG9kKCk7CisgICAgUVdlYk5vdGlmaWNhdGlvblVpKiBjcmVhdGVO
b3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgUUJ5dGVBcnJheSYpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9sb2FkZWQ7Cklu
ZGV4OiBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uVWku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJO
b3RpZmljYXRpb25VaS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxh
dGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uVWkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25VaS5o
IgorCitXZWJOb3RpZmljYXRpb25VaVdpZGdldDo6V2ViTm90aWZpY2F0aW9uVWlXaWRnZXQoY29u
c3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFCeXRlQXJy
YXkmIGJ5dGVzKQorICAgIDogUVdpZGdldCgpCisgICAgLCBtX3RpdGxlKHRpdGxlKQorICAgICwg
bV9tZXNzYWdlKG1lc3NhZ2UpCit7CisgICAgUVBpeG1hcCBtYXNrOworICAgIFFQYWludGVyIHBh
aW50ZXIoJm1hc2spOworICAgIHBhaW50ZXIuZmlsbFJlY3QoMCwgMCwgMzAwLCAxMDAsIFF0Ojps
aWdodEdyYXkpOworICAgIFFCaXRtYXAgYml0bWFwKG1hc2spOworICAgIHNldE1hc2soYml0bWFw
KTsKKyAgICBRR3JpZExheW91dCogbGF5b3V0ID0gbmV3IFFHcmlkTGF5b3V0KHRoaXMpOworICAg
IGxheW91dC0+YWRkV2lkZ2V0KG5ldyBRTGFiZWwobV90aXRsZSksIDAsIDAsIDEsIDUpOworICAg
IGludCBtZXNzYWdlUG9zaXRpb24gPSAwOworICAgIGlmIChieXRlcy5sZW5ndGgoKSAmJiBtX3Bp
eG1hcC5sb2FkRnJvbURhdGEoYnl0ZXMpKSB7CisgICAgICAgIFFMYWJlbCogbGFiZWwgPSBuZXcg
UUxhYmVsOworICAgICAgICBsYWJlbC0+c2V0UGl4bWFwKG1fcGl4bWFwKTsKKyAgICAgICAgbGF5
b3V0LT5hZGRXaWRnZXQobGFiZWwsIDEsIDAsIDEsIDEpOworICAgICAgICBtZXNzYWdlUG9zaXRp
b24rKzsKKyAgICB9CisgICAgUUxhYmVsKiBtZXNzYWdlTGFiZWwgPSBuZXcgUUxhYmVsKG1fbWVz
c2FnZSk7CisgICAgbWVzc2FnZUxhYmVsLT5zZXRNYXNrKGJpdG1hcCk7CisgICAgbWVzc2FnZUxh
YmVsLT5zZXRXb3JkV3JhcCh0cnVlKTsKKyAgICBsYXlvdXQtPmFkZFdpZGdldChtZXNzYWdlTGFi
ZWwsIDEsIG1lc3NhZ2VQb3NpdGlvbiwgMSwgNSAtIG1lc3NhZ2VQb3NpdGlvbik7CisgICAgc2V0
TGF5b3V0KGxheW91dCk7CisgICAgc2V0Rml4ZWRTaXplKDMwMCwgMTAwKTsKK30KKworV2ViTm90
aWZpY2F0aW9uVWlXaWRnZXQ6On5XZWJOb3RpZmljYXRpb25VaVdpZGdldCgpCit7Cit9CisKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uVWlXaWRnZXQ6OnNob3dOb3RpZmljYXRpb24oKQoreworICAgIHNo
b3coKTsKK30KKworYm9vbCBXZWJOb3RpZmljYXRpb25VaVdpZGdldDo6ZXZlbnQoUUV2ZW50KiBl
dikKK3sKKyAgICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZSB8
fCBldi0+dHlwZSgpID09IFFFdmVudDo6Q2xvc2UpCisgICAgICAgIGVtaXQgbm90aWZpY2F0aW9u
Q2xvc2VkKCIiKTsKKyAgICByZXR1cm4gUVdpZGdldDo6ZXZlbnQoZXYpOworfQorCkluZGV4OiBX
ZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uVWkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0
aW9uVWkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdp
bi9XZWJOb3RpZmljYXRpb25VaS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKgorICovCisKKyNpZm5kZWYgV2ViTm90aWZpY2F0aW9uVWlfaCAgCisjZGVmaW5lIFdl
Yk5vdGlmaWNhdGlvblVpX2gKKworI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgor
I2luY2x1ZGUgPFF0R3VpPgorCitjbGFzcyBXZWJOb3RpZmljYXRpb25VaVdpZGdldCA6IHB1Ymxp
YyBRV2lkZ2V0Cit7CitRX09CSkVDVAorcHVibGljOgorICAgIFdlYk5vdGlmaWNhdGlvblVpV2lk
Z2V0KGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBR
Qnl0ZUFycmF5Jik7CisgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uVWlXaWRnZXQoKTsKKwor
ICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbigpOworICAgIGJvb2wgZXZlbnQoUUV2ZW50KiBldik7
CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5n
Jik7CisKK3ByaXZhdGU6CisgICAgUVN0cmluZyBtX3RpdGxlOworICAgIFFTdHJpbmcgbV9tZXNz
YWdlOworICAgIFFQaXhtYXAgbV9waXhtYXA7Cit9OworCitjbGFzcyBXZWJOb3RpZmljYXRpb25V
aSA6IHB1YmxpYyBRV2ViTm90aWZpY2F0aW9uVWkKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAg
V2ViTm90aWZpY2F0aW9uVWkoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFFCeXRlQXJyYXkmIGJ5dGVzKSA6IFFXZWJOb3RpZmljYXRpb25VaSh0aXRs
ZSwgbWVzc2FnZSwgYnl0ZXMpCisgICAgeworICAgICAgICBtX3dpZGdldCA9IG5ldyBXZWJOb3Rp
ZmljYXRpb25VaVdpZGdldCh0aXRsZSwgbWVzc2FnZSwgYnl0ZXMpOworICAgICAgICBjb25uZWN0
KG1fd2lkZ2V0LCBTSUdOQUwobm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0IFFTdHJpbmcmKSksIHRo
aXMsIFNJR05BTChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpKSk7CisgICAgfQor
ICAgIHZpcnR1YWwgfldlYk5vdGlmaWNhdGlvblVpKCkgeyBtX3dpZGdldC0+aGlkZSgpOyBkZWxl
dGUgbV93aWRnZXQ7IH0KKworICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbigpIHsgbV93aWRnZXQt
PnNob3dOb3RpZmljYXRpb24oKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBXZWJOb3RpZmljYXRp
b25VaVdpZGdldCogbV93aWRnZXQ7Cit9OworCisjZW5kaWYgLy8gV2ViTm90aWZpY2F0aW9uc1Vp
X2gKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVn
aW4uY3BwCShyZXZpc2lvbiA2MTAyMykKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9XZWJQbHVnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDE1IEBAIE11
bHRpcGxlU2VsZWN0aW9uUG9wdXA6Ok11bHRpcGxlU2VsZWN0aW8KIAogYm9vbCBXZWJQbHVnaW46
OnN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGV4dGVuc2lvbiA9PSBNdWx0aXBsZVNlbGVjdGlvbnM7CisgICAgaWYgKGV4dGVuc2lvbiA9
PSBNdWx0aXBsZVNlbGVjdGlvbnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChleHRl
bnNpb24gPT0gTm90aWZpY2F0aW9ucykKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAg
IHJldHVybiBmYWxzZTsKIH0KIAogUV9FWFBPUlRfUExVR0lOMihxd2Vic2VsZWN0aW0sIFdlYlBs
dWdpbikKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1
Z2luLmgJKHJldmlzaW9uIDYxMDIzKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1
Z2luL1dlYlBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5l
IFdFQlBMVUdJTl9ICiAKICNpbmNsdWRlICJxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCIKKyNpbmNs
dWRlICJXZWJOb3RpZmljYXRpb25VaS5oIgogCiAjaW5jbHVkZSA8UURpYWxvZz4KIApAQCAtODgs
NiArODksNyBAQCBjbGFzcyBXZWJQbHVnaW4gOiBwdWJsaWMgUU9iamVjdCwgcHVibGljCiBwdWJs
aWM6CiAgICAgdmlydHVhbCBRV2ViU2VsZWN0TWV0aG9kKiBjcmVhdGVTZWxlY3RJbnB1dE1ldGhv
ZCgpIGNvbnN0IHsgcmV0dXJuIG5ldyBXZWJQb3B1cCgpOyB9CiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0OworICAgIHZpcnR1YWwg
UVdlYk5vdGlmaWNhdGlvblVpKiBjcmVhdGVOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0
aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJheSYgYnl0ZXMpIGNv
bnN0IHsgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKE5vdGlmaWNhdGlvbnMpKSByZXR1cm4gbmV3IFdl
Yk5vdGlmaWNhdGlvblVpKHRpdGxlLCBtZXNzYWdlLCBieXRlcyk7IHJldHVybiAwOyB9CiB9Owog
CiAKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdp
bi5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3Bs
YXRmb3JtcGx1Z2luLnBybwkocmV2aXNpb24gNjEwMjMpCisrKyBXZWJLaXQvcXQvZXhhbXBsZXMv
cGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvCSh3b3JraW5nIGNvcHkpCkBAIC02LDgg
KzYsMTIgQEAgQ09ORklHICs9IHBsdWdpbgogREVTVERJUiA9ICQkW1FUX0lOU1RBTExfUExVR0lO
U10vd2Via2l0CiAKIFNPVVJDRVMgKz0gXAotICAgIFdlYlBsdWdpbi5jcHAKKyAgICBXZWJQbHVn
aW4uY3BwIFwKKyAgICBXZWJOb3RpZmljYXRpb25VaS5jcHAKIAogSEVBREVSUyArPSBcCiAgICAg
V2ViUGx1Z2luLmggXAotICAgIHF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCisgICAgcXdlYmtpdHBs
YXRmb3JtcGx1Z2luLmggXAorICAgIFdlYk5vdGlmaWNhdGlvblVpLmgKKworIWNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9OT1RJRklDQVRJT05TPS4pOiBERUZJTkVTICs9IEVOQUJMRV9OT1RJRklD
QVRJT05TPTEKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0
cGxhdGZvcm1wbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZv
cm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgJKHJldmlzaW9uIDYxMDIzKQorKysgV2Vi
S2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OCwyMCArNTgsMzUgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgZGlk
SGlkZSgpOwogfTsKIAorY2xhc3MgUVdlYk5vdGlmaWNhdGlvblVpIDogcHVibGljIFFPYmplY3QK
K3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5vdGlmaWNhdGlvblVpKGNvbnN0IFFTdHJp
bmcmLCBjb25zdCBRU3RyaW5nJiwgY29uc3QgUUJ5dGVBcnJheSYpIHt9CisgICAgdmlydHVhbCB+
UVdlYk5vdGlmaWNhdGlvblVpKCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0
aW9uKCkgPSAwOworICAgIAorUV9TSUdOQUxTOgorICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xvc2Vk
KGNvbnN0IFFTdHJpbmcmKTsKK307CisKIGNsYXNzIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbgogewog
cHVibGljOgogICAgIHZpcnR1YWwgflFXZWJLaXRQbGF0Zm9ybVBsdWdpbigpIHt9CiAKICAgICBl
bnVtIEV4dGVuc2lvbiB7Ci0gICAgICAgIE11bHRpcGxlU2VsZWN0aW9ucworICAgICAgICBNdWx0
aXBsZVNlbGVjdGlvbnMsCisgICAgICAgIE5vdGlmaWNhdGlvbnMKICAgICB9OwogCiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNlbGVjdElucHV0TWV0aG9k
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUVdlYk5vdGlmaWNhdGlvblVpKiBjcmVhdGVOb3Rp
ZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgUUJ5dGVBcnJheSYpIGNvbnN0ID0gMDsKIAogfTsKIAotUV9ERUNMQVJFX0lOVEVSRkFD
RShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1
Z2luLzEuMSIpOworUV9ERUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJj
b20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEuMiIpOwogCiAjZW5kaWYgLy8gUVdF
QktJVFBMQVRGT1JNUExVR0lOX0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58510</attachid>
            <date>2010-06-11 14:54:58 -0700</date>
            <delta_ts>2010-06-12 06:59:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>40005.patch</filename>
            <type>text/plain</type>
            <size>22544</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTAzOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMDYtMTEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gUGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQgZm9yIE5vdGlmaWNhdGlvbnMgVUkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDA1CisKKyAgICAg
ICAgVG8gYXZvaWQgcmFjZSBjb25kaXRpb24gd2hlbiBHQyBpcyBydW4gZHVyaW5nIHNodXRkb3du
LAorICAgICAgICBkaXNjb25uZWN0IHRoZSBOb3RpZmljYXRpb24gZnJvbSB0aGUgTm90aWZpY2F0
aW9uUHJlc2VudGVyCisgICAgICAgIHdoZW4gdGhlIHByZXNlbnRlciBpcyBkZWxldGVzIGl0c2Vs
Zi4KKyAgICAgICAgVGhpcyBjYW5ub3QgYmUgdGVzdGVkIGJ5IGEgbGF5b3V0IHRlc3QsIGl0IGhh
cHBlbnMgb25seQorICAgICAgICBpZiBHQyBpcyBydW4gZHVyaW5nIHNodXRkb3duLgorCisgICAg
ICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkZXRhY2hQcmVz
ZW50ZXIpOgorCiAyMDEwLTA2LTExICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDYxMDIzKQorKysgV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcg
KzkwLDggQEAgTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBjYW5jZWwoKTsKICAgICB9Ci0gICAgbV9wcmVzZW50ZXIt
Pm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKKyAgICBpZiAobV9wcmVzZW50ZXIp
CisgICAgICAgIG1fcHJlc2VudGVyLT5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQodGhpcyk7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCkluZGV4OiBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiA2MTAyMykKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEoKSB7IHJldHVybiBt
X2ljb25EYXRhLmdldCgpOyB9CiAgICAgICAgIHZvaWQgcmVsZWFzZUljb25EYXRhKCkgeyBtX2lj
b25EYXRhID0gMDsgfQogCisgICAgICAgIC8vIENhbGxlZCBpZiB0aGUgcHJlc2VudGVyIGlzIGRl
bGV0ZWQgYmVmb3JlIHRoZSBub3RpZmljYXRpb24gaXMgR0MnZAorICAgICAgICB2b2lkIGRldGFj
aFByZXNlbnRlcigpIHsgbV9wcmVzZW50ZXIgPSAwOyB9CisKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVj
ZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOwpAQCAtMTE5LDcgKzEyMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU3RyaW5nIG1fZGlyZWN0aW9uOwogICAgICAgICBTdHJpbmcgbV9yZXBsYWNlSWQ7
CiAKLQogICAgICAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRlIHsKICAgICAgICAgICAgIElkbGUg
PSAwLAogICAgICAgICAgICAgTG9hZGluZyA9IDEsCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMDM4KQorKysg
V2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEw
LTA2LTExICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFBsYXRmb3JtIHBsdWdp
biBzdXBwb3J0IGZvciBOb3RpZmljYXRpb25zIFVJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDAwNQorCisgICAgICAgIEFkZCBhbiBpbnRlcmZhY2Ug
dG8gdGhlIHBsYXRmb3JtIHBsdWdpbiB0byBkaXNwbGF5IFVJIG5vdGlmaWNhdGlvbnMuCisgICAg
ICAgIEltcGxlbWVudGVkIHRoZSBVSSBub3RpZmljYXRpb24gaW4gdGhlIGV4YW1wbGUgcGxhdGZv
cm0gcGx1Z2luLiAKKyAgICAgICAgVGhpcyBpbnRlcmZhY2UgaXMgZW5hYmxlZCBieSBkZWZhdWx0
LCBidXQgY291bGQgYmUgdHVybmVkIG9mZiB3aXRoCisgICAgICAgIGEgYnVpbGQgZmxhZy4KKwor
ICAgICAgICBDaGFuZ2VkIHRoZSB3YXkgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQgaXMg
ZGVsZXRlZCBiZWNhdXNlIGl0CisgICAgICAgIGlzIGJlaW5nIGFjY2Vzc2VkIHdoZW4gR0MgaXMg
ZGVsZXRpbmcgdGhlIE5vdGlmaWNhdGlvbiBvYmplY3RzLgorICAgICAgICBOb3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdCBpcyBkZXRhY2hpbmcgaXRzZWxmIGZyb20gdGhlCisgICAgICAgIE5v
dGlmaWNhdGlvbnMgYmVmb3JlIGl0IGlzIGRlbGV0ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYmtp
dHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uVWk6OlFXZWJOb3Rp
ZmljYXRpb25VaSk6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uVWk6On5RV2ViTm90aWZpY2F0
aW9uVWkpOgorICAgICAgICAoUVdlYktpdFBsYXRmb3JtUGx1Z2luOjopOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpOb3RpZmljYXRpb25JY29uV3JhcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6fk5v
dGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkljb25XcmFwcGVyOjpub3RpZmljYXRpb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRpc3BsYXlOb3RpZmljYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNhbmNlbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6cmVtb3ZlUmVw
bGFjZWROb3RpZmljYXRpb25Gcm9tUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRldGFjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0
UGxhdGZvcm1QbHVnaW46OmNyZWF0ZU5vdGlmaWNhdGlvblVpKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmg6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1w
bHVnaW4vV2ViTm90aWZpY2F0aW9uVWkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYk5vdGlmaWNh
dGlvblVpV2lkZ2V0OjpXZWJOb3RpZmljYXRpb25VaVdpZGdldCk6CisgICAgICAgIChXZWJOb3Rp
ZmljYXRpb25VaVdpZGdldDo6fldlYk5vdGlmaWNhdGlvblVpV2lkZ2V0KToKKyAgICAgICAgKFdl
Yk5vdGlmaWNhdGlvblVpV2lkZ2V0OjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYk5v
dGlmaWNhdGlvblVpV2lkZ2V0OjpldmVudCk6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1w
bHVnaW4vV2ViTm90aWZpY2F0aW9uVWkuaDogQWRkZWQuCisgICAgICAgIChXZWJOb3RpZmljYXRp
b25VaTo6V2ViTm90aWZpY2F0aW9uVWkpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uVWk6On5X
ZWJOb3RpZmljYXRpb25VaSk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25VaTo6c2hvd05vdGlm
aWNhdGlvbik6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmNw
cDoKKyAgICAgICAgKFdlYlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAqIGV4
YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oOgorICAgICAgICAoV2ViUGx1Z2luOjpj
cmVhdGVOb3RpZmljYXRpb25VaSk6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4v
cGxhdGZvcm1wbHVnaW4ucHJvOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3
ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblVpOjpRV2Vi
Tm90aWZpY2F0aW9uVWkpOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblVpOjp+UVdlYk5vdGlm
aWNhdGlvblVpKToKKyAgICAgICAgKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6KToKKwogMjAxMC0w
Ni0xMSAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQv
cXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9B
cGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgJKHJldmlzaW9uIDYxMDIzKQorKysgV2ViS2l0L3F0
L0FwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjAgKzU4
LDM1IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIGRpZEhpZGUoKTsKIH07CiAKK2NsYXNzIFFXZWJO
b3RpZmljYXRpb25VaSA6IHB1YmxpYyBRT2JqZWN0Cit7CitRX09CSkVDVAorcHVibGljOgorICAg
IFFXZWJOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYsIGNvbnN0
IFFCeXRlQXJyYXkmKSB7fQorICAgIHZpcnR1YWwgflFXZWJOb3RpZmljYXRpb25VaSgpIHt9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNhdGlvbigpID0gMDsKKyAgICAKK1FfU0lHTkFM
UzoKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJik7Cit9OworCiBj
bGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW4KIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5RV2Vi
S2l0UGxhdGZvcm1QbHVnaW4oKSB7fQogCiAgICAgZW51bSBFeHRlbnNpb24gewotICAgICAgICBN
dWx0aXBsZVNlbGVjdGlvbnMKKyAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb25zLAorICAgICAgICBO
b3RpZmljYXRpb25zCiAgICAgfTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lv
bihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRV2ViU2VsZWN0
TWV0aG9kKiBjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFFXZWJOb3RpZmljYXRpb25VaSogY3JlYXRlTm90aWZpY2F0aW9uVWkoY29uc3QgUVN0cmluZyYg
dGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFFCeXRlQXJyYXkmKSBjb25zdCA9
IDA7CiAKIH07CiAKLVFfREVDTEFSRV9JTlRFUkZBQ0UoUVdlYktpdFBsYXRmb3JtUGx1Z2luLCAi
Y29tLm5va2lhLlF0LldlYktpdC5QbGF0Zm9ybVBsdWdpbi8xLjEiKTsKK1FfREVDTEFSRV9JTlRF
UkZBQ0UoUVdlYktpdFBsYXRmb3JtUGx1Z2luLCAiY29tLm5va2lhLlF0LldlYktpdC5QbGF0Zm9y
bVBsdWdpbi8xLjIiKTsKIAogI2VuZGlmIC8vIFFXRUJLSVRQTEFURk9STVBMVUdJTl9ICkluZGV4
OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDYxMDIzKQorKysgV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOSArMzYsMTEgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAi
UXRQbGF0Zm9ybVBsdWdpbi5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAKICNpbmNs
dWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgi
CiAjaW5jbHVkZSA8UXRHdWk+CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKQEAgLTY2LDcg
KzY4LDcgQEAgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Ok5vdGlmaWNhdGlvbkljbwogI2lmbmRl
ZiBRVF9OT19TWVNURU1UUkFZSUNPTgogICAgIG1fbm90aWZpY2F0aW9uSWNvbiA9IDA7CiAjZW5k
aWYKLSAgICBtX2Nsb3NlVGltZXIuc3RhcnRPbmVTaG90KG5vdGlmaWNhdGlvblRpbWVvdXQpOwor
ICAgIG1fbm90aWZpY2F0aW9uVWkgPSAwOwogfQogCiBOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6
fk5vdGlmaWNhdGlvbkljb25XcmFwcGVyKCkKQEAgLTgyLDYgKzg0LDE0IEBAIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0OjpOb3RpZmljYXQKIHsKIH0KIAorTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpCit7CisgICAgd2hp
bGUgKCFtX25vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgIE5vdGlmaWNhdGlvbnNR
dWV1ZTo6SXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOworICAgICAgICBk
ZXRhY2hOb3RpZmljYXRpb24oaXRlci5rZXkoKSk7CisgICAgfQorfQorCiB2b2lkIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpyZW1vdmVDbGllbnQoKQogewogICAgIG1fY2xpZW50Q291
bnQtLTsKQEAgLTkxLDYgKzEwMSwxMSBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0OjpyZW1vCiAgICAgfQogfQogCit2b2lkIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpub3Rp
ZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpCit7CisgICAgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5jYW5jZWwodGhpcyk7Cit9CisK
IGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnNob3coTm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24pCiB7CiAgICAgLy8gRklYTUU6IHdvcmtlcnMgYmFzZWQgbm90aWZpY2F0aW9u
cyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCkBAIC0xMjMsMTQgKzEzOCwxOSBAQCB2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwCiAgICAgICAgIG1lc3NhZ2UgPSBub3RpZmlj
YXRpb24tPmNvbnRlbnRzKCkuYm9keSgpOwogICAgIH0KIAorICAgIHdyYXBwZXItPm1fbm90aWZp
Y2F0aW9uVWkgPSBtX3BsYXRmb3JtUGx1Z2luLmNyZWF0ZU5vdGlmaWNhdGlvblVpKHRpdGxlLCBt
ZXNzYWdlLCBieXRlcyk7CisKKyAgICBpZiAoIXdyYXBwZXItPm1fbm90aWZpY2F0aW9uVWkpIHsK
ICNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04KLSAgICBRUGl4bWFwIHBpeG1hcDsKLSAgICBp
ZiAoYnl0ZXMubGVuZ3RoKCkgJiYgcGl4bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKLSAgICAg
ICAgUUljb24gaWNvbihwaXhtYXApOwotICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbklj
b24gPSBuZXcgUVN5c3RlbVRyYXlJY29uKGljb24pOwotICAgIH0gZWxzZQotICAgICAgICB3cmFw
cGVyLT5tX25vdGlmaWNhdGlvbkljb24gPSBuZXcgUVN5c3RlbVRyYXlJY29uKCk7CisgICAgICAg
IHdyYXBwZXItPm1fY2xvc2VUaW1lci5zdGFydE9uZVNob3Qobm90aWZpY2F0aW9uVGltZW91dCk7
CisgICAgICAgIFFQaXhtYXAgcGl4bWFwOworICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoKCkgJiYg
cGl4bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKKyAgICAgICAgICAgIFFJY29uIGljb24ocGl4
bWFwKTsKKyAgICAgICAgICAgIHdyYXBwZXItPm1fbm90aWZpY2F0aW9uSWNvbiA9IG5ldyBRU3lz
dGVtVHJheUljb24oaWNvbik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgd3JhcHBlci0+
bV9ub3RpZmljYXRpb25JY29uID0gbmV3IFFTeXN0ZW1UcmF5SWNvbigpOwogI2VuZGlmCisgICAg
fQogCiAgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgImRpc3BsYXkiKTsKIApAQCAtMTM4LDYg
KzE1OCwxMiBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwCiAgICAg
aWYgKG1fbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbikgPT0gbV9ub3RpZmljYXRpb25z
LmVuZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAod3JhcHBlci0+bV9ub3RpZmljYXRp
b25VaSkgeworICAgICAgICB3cmFwcGVyLT5jb25uZWN0KHdyYXBwZXItPm1fbm90aWZpY2F0aW9u
VWkuZ2V0KCksIFNJR05BTChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpKSwgd3Jh
cHBlciwgU0xPVChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpKSwgUXQ6OlF1ZXVl
ZENvbm5lY3Rpb24pOworICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvblVpLT5zaG93Tm90
aWZpY2F0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZm5kZWYgUVRfTk9fU1lT
VEVNVFJBWUlDT04KICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24tPnNob3coKTsKICAg
ICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24tPnNob3dNZXNzYWdlKG5vdGlmaWNhdGlvbi0+
Y29udGVudHMoKS50aXRsZSgpLCBub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSgpKTsKQEAg
LTE1Niw4ICsxODIsNyBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpjYW5j
CiAgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpJdGVyYXRvciBpdGVyID0gbV9ub3RpZmljYXRpb25z
LmZpbmQobm90aWZpY2F0aW9uKTsKICAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlvbnMuZW5k
KCkpIHsKICAgICAgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmNsb3Nl
RXZlbnQpOwotICAgICAgICBkZWxldGUgbV9ub3RpZmljYXRpb25zLnRha2Uobm90aWZpY2F0aW9u
KTsKLSAgICAgICAgbm90aWZpY2F0aW9uLT51bnNldFBlbmRpbmdBY3Rpdml0eShub3RpZmljYXRp
b24pOworICAgICAgICBkZXRhY2hOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKTsKICAgICB9CiB9
CiAKQEAgLTI1MiwxMSArMjc3LDE3IEBAIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6OnJlbW8KICAgICAgICAgaWYgKGR1bXBOb3RpZmljYXRpb24pCiAgICAgICAgICAgICBkdW1w
UmVwbGFjZWRJZFRleHQob2xkTm90aWZpY2F0aW9uKTsKICAgICAgICAgc2VuZEV2ZW50KG9sZE5v
dGlmaWNhdGlvbiwgZXZlbnROYW1lcygpLmNsb3NlRXZlbnQpOwotICAgICAgICBkZWxldGUgbV9u
b3RpZmljYXRpb25zLnRha2Uob2xkTm90aWZpY2F0aW9uKTsKLSAgICAgICAgb2xkTm90aWZpY2F0
aW9uLT51bnNldFBlbmRpbmdBY3Rpdml0eShvbGROb3RpZmljYXRpb24pOworICAgICAgICBkZXRh
Y2hOb3RpZmljYXRpb24ob2xkTm90aWZpY2F0aW9uKTsKICAgICB9CiB9CiAKK3ZvaWQgTm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRldGFjaE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbikKK3sKKyAgICBkZWxldGUgbV9ub3RpZmljYXRpb25zLnRha2Uobm90aWZp
Y2F0aW9uKTsKKyAgICBub3RpZmljYXRpb24tPmRldGFjaFByZXNlbnRlcigpOworICAgIG5vdGlm
aWNhdGlvbi0+dW5zZXRQZW5kaW5nQWN0aXZpdHkobm90aWZpY2F0aW9uKTsKK30KKwogdm9pZCBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZHVtcFJlcGxhY2VkSWRUZXh0KE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQogewogICAgIGlmIChub3RpZmljYXRpb24pCkluZGV4OiBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQuaAkocmV2aXNpb24gNjEwMjMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMzYg
KzM0LDQ4IEBACiAKICNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJOb3RpZmlj
YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlICJRdFBsYXRmb3JtUGx1Z2luLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKIAogI2luY2x1ZGUgPFFNdWx0aUhhc2g+CiAjaW5jbHVkZSA8UVN5c3RlbVRy
YXlJY29uPgogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitjbGFzcyBRV2ViTm90aWZpY2F0
aW9uVWk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBL
VVJMOwogCi1jbGFzcyBOb3RpZmljYXRpb25JY29uV3JhcHBlciB7CitjbGFzcyBOb3RpZmljYXRp
b25JY29uV3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAogcHVibGljOgog
ICAgIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyKCk7CiAgICAgfk5vdGlmaWNhdGlvbkljb25XcmFw
cGVyKCk7CisKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbG9zZShUaW1lcjxOb3RpZmlj
YXRpb25JY29uV3JhcHBlcj4qKTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBub3RpZmlj
YXRpb25DbG9zZWQoY29uc3QgUVN0cmluZyYpOworCitwdWJsaWM6CiAjaWZuZGVmIFFUX05PX1NZ
U1RFTVRSQVlJQ09OCiAgICAgT3duUHRyPFFTeXN0ZW1UcmF5SWNvbj4gbV9ub3RpZmljYXRpb25J
Y29uOwogI2VuZGlmCisKKyAgICBPd25QdHI8UVdlYk5vdGlmaWNhdGlvblVpPiBtX25vdGlmaWNh
dGlvblVpOwogICAgIFRpbWVyPE5vdGlmaWNhdGlvbkljb25XcmFwcGVyPiBtX2Nsb3NlVGltZXI7
CiB9OwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKIHR5cGVkZWYgUUhhc2ggPE5vdGlm
aWNhdGlvbiosIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyKj4gTm90aWZpY2F0aW9uc1F1ZXVlOwog
CiBjbGFzcyBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCA6IHB1YmxpYyBOb3RpZmljYXRp
b25QcmVzZW50ZXIgewogcHVibGljOgogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0
KCk7Ci0gICAgfk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KCkge30KKyAgICB+Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKTsKIAogICAgIC8qIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlciBpbnRlcmZhY2UgKi8KICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRp
b24qKTsKQEAgLTg4LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kRXZlbnQoTm90
aWZpY2F0aW9uKiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwogICAgIHZvaWQgZGlz
cGxheU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qLCBjb25zdCBRQnl0ZUFycmF5Jik7CiAgICAg
dm9pZCByZW1vdmVSZXBsYWNlZE5vdGlmaWNhdGlvbkZyb21RdWV1ZShOb3RpZmljYXRpb24qKTsK
KyAgICB2b2lkIGRldGFjaE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qKTsKICAgICB2b2lkIGR1
bXBSZXBsYWNlZElkVGV4dChOb3RpZmljYXRpb24qKTsKICAgICB2b2lkIGR1bXBTaG93VGV4dChO
b3RpZmljYXRpb24qKTsKIApAQCAtOTUsOSArMTA4LDExIEBAIHByaXZhdGU6CiAgICAgUUhhc2g8
UVN0cmluZywgIFFMaXN0PFJlZlB0cjxWb2lkQ2FsbGJhY2s+ID4gPiBtX3BlbmRpbmdQZXJtaXNz
aW9uUmVxdWVzdHM7CiAgICAgTm90aWZpY2F0aW9uc1F1ZXVlIG1fbm90aWZpY2F0aW9uczsKICAg
ICBRT2JqZWN0KiBtX3JlY2VpdmVyOworICAgIFF0UGxhdGZvcm1QbHVnaW4gbV9wbGF0Zm9ybVBs
dWdpbjsKIH07CiAKKyNlbmRpZgorCiB9CiAKICNlbmRpZgotI2VuZGlmCkluZGV4OiBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCShyZXZpc2lvbiA2MTAy
MykKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU3LDQgKzE1NywxMyBAQCBRdEFic3RyYWN0V2ViUG9wdXAqIFF0UGxh
dGZvcm1QbHVnaW46OmNyCiAgICAgcmV0dXJuIG5ldyBTZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXIo
c2VsZWN0b3IpOwogfQogCisKK1FXZWJOb3RpZmljYXRpb25VaSogUXRQbGF0Zm9ybVBsdWdpbjo6
Y3JlYXRlTm90aWZpY2F0aW9uVWkoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFFCeXRlQXJyYXkmIGJ5dGVzKQoreworICAgIFFXZWJLaXRQbGF0Zm9y
bVBsdWdpbiogcCA9IHBsdWdpbigpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIHAtPmNyZWF0ZU5vdGlmaWNhdGlvblVpKHRpdGxlLCBtZXNzYWdlLCBieXRlcyk7
Cit9CisKIH0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2lu
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVn
aW4uaAkocmV2aXNpb24gNjEwMjMpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0
Zm9ybVBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKIGNsYXNzIFFX
ZWJTZWxlY3RNZXRob2Q7CiBjbGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW47CitjbGFzcyBRV2Vi
Tm90aWZpY2F0aW9uVWk7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNiArNTMsNyBA
QCBwdWJsaWM6CiAgICAgflF0UGxhdGZvcm1QbHVnaW4oKTsKIAogICAgIFF0QWJzdHJhY3RXZWJQ
b3B1cCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKTsKKyAgICBRV2ViTm90aWZpY2F0aW9uVWkq
IGNyZWF0ZU5vdGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBRQnl0ZUFycmF5Jik7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2xv
YWRlZDsKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmlj
YXRpb25VaS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1
Z2luL1dlYk5vdGlmaWNhdGlvblVpLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC9leGFt
cGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25VaS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgIldlYk5vdGlmaWNh
dGlvblVpLmgiCisKK1dlYk5vdGlmaWNhdGlvblVpV2lkZ2V0OjpXZWJOb3RpZmljYXRpb25VaVdp
ZGdldChjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
UUJ5dGVBcnJheSYgYnl0ZXMpCisgICAgOiBRV2lkZ2V0KCkKKyAgICAsIG1fdGl0bGUodGl0bGUp
CisgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKK3sKKyAgICBRUGl4bWFwIG1hc2s7CisgICAgUVBh
aW50ZXIgcGFpbnRlcigmbWFzayk7CisgICAgcGFpbnRlci5maWxsUmVjdCgwLCAwLCAzMDAsIDEw
MCwgUXQ6OmxpZ2h0R3JheSk7CisgICAgUUJpdG1hcCBiaXRtYXAobWFzayk7CisgICAgc2V0TWFz
ayhiaXRtYXApOworICAgIFFHcmlkTGF5b3V0KiBsYXlvdXQgPSBuZXcgUUdyaWRMYXlvdXQodGhp
cyk7CisgICAgbGF5b3V0LT5hZGRXaWRnZXQobmV3IFFMYWJlbChtX3RpdGxlKSwgMCwgMCwgMSwg
NSk7CisgICAgaW50IG1lc3NhZ2VQb3NpdGlvbiA9IDA7CisgICAgaWYgKGJ5dGVzLmxlbmd0aCgp
ICYmIG1fcGl4bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKKyAgICAgICAgUUxhYmVsKiBsYWJl
bCA9IG5ldyBRTGFiZWw7CisgICAgICAgIGxhYmVsLT5zZXRQaXhtYXAobV9waXhtYXApOworICAg
ICAgICBsYXlvdXQtPmFkZFdpZGdldChsYWJlbCwgMSwgMCwgMSwgMSk7CisgICAgICAgIG1lc3Nh
Z2VQb3NpdGlvbisrOworICAgIH0KKyAgICBRTGFiZWwqIG1lc3NhZ2VMYWJlbCA9IG5ldyBRTGFi
ZWwobV9tZXNzYWdlKTsKKyAgICBtZXNzYWdlTGFiZWwtPnNldE1hc2soYml0bWFwKTsKKyAgICBt
ZXNzYWdlTGFiZWwtPnNldFdvcmRXcmFwKHRydWUpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KG1l
c3NhZ2VMYWJlbCwgMSwgbWVzc2FnZVBvc2l0aW9uLCAxLCA1IC0gbWVzc2FnZVBvc2l0aW9uKTsK
KyAgICBzZXRMYXlvdXQobGF5b3V0KTsKKyAgICBzZXRGaXhlZFNpemUoMzAwLCAxMDApOworfQor
CitXZWJOb3RpZmljYXRpb25VaVdpZGdldDo6fldlYk5vdGlmaWNhdGlvblVpV2lkZ2V0KCkKK3sK
K30KKwordm9pZCBXZWJOb3RpZmljYXRpb25VaVdpZGdldDo6c2hvd05vdGlmaWNhdGlvbigpCit7
CisgICAgc2hvdygpOworfQorCitib29sIFdlYk5vdGlmaWNhdGlvblVpV2lkZ2V0OjpldmVudChR
RXZlbnQqIGV2KQoreworICAgIGlmIChldi0+dHlwZSgpID09IFFFdmVudDo6TW91c2VCdXR0b25S
ZWxlYXNlIHx8IGV2LT50eXBlKCkgPT0gUUV2ZW50OjpDbG9zZSkKKyAgICAgICAgZW1pdCBub3Rp
ZmljYXRpb25DbG9zZWQoIiIpOworICAgIHJldHVybiBRV2lkZ2V0OjpldmVudChldik7Cit9CisK
SW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25V
aS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJO
b3RpZmljYXRpb25VaS5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRm
b3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlvblVpLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBXZWJOb3RpZmljYXRpb25VaV9oICAKKyNk
ZWZpbmUgV2ViTm90aWZpY2F0aW9uVWlfaAorCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3JtcGx1
Z2luLmgiCisjaW5jbHVkZSA8UXRHdWk+CisKK2NsYXNzIFdlYk5vdGlmaWNhdGlvblVpV2lkZ2V0
IDogcHVibGljIFFXaWRnZXQKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViTm90aWZpY2F0
aW9uVWlXaWRnZXQoY29uc3QgUVN0cmluZyYgdGl0bGUsIGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFFCeXRlQXJyYXkmKTsKKyAgICB2aXJ0dWFsIH5XZWJOb3RpZmljYXRpb25VaVdpZGdl
dCgpOworCisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCk7CisgICAgYm9vbCBldmVudChRRXZl
bnQqIGV2KTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xvc2VkKGNvbnN0
IFFTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBRU3RyaW5nIG1fdGl0bGU7CisgICAgUVN0cmlu
ZyBtX21lc3NhZ2U7CisgICAgUVBpeG1hcCBtX3BpeG1hcDsKK307CisKK2NsYXNzIFdlYk5vdGlm
aWNhdGlvblVpIDogcHVibGljIFFXZWJOb3RpZmljYXRpb25VaQoreworUV9PQkpFQ1QKK3B1Ymxp
YzoKKyAgICBXZWJOb3RpZmljYXRpb25VaShjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0
cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJheSYgYnl0ZXMpIDogUVdlYk5vdGlmaWNhdGlv
blVpKHRpdGxlLCBtZXNzYWdlLCBieXRlcykKKyAgICB7CisgICAgICAgIG1fd2lkZ2V0ID0gbmV3
IFdlYk5vdGlmaWNhdGlvblVpV2lkZ2V0KHRpdGxlLCBtZXNzYWdlLCBieXRlcyk7CisgICAgICAg
IGNvbm5lY3QobV93aWRnZXQsIFNJR05BTChub3RpZmljYXRpb25DbG9zZWQoY29uc3QgUVN0cmlu
ZyYpKSwgdGhpcywgU0lHTkFMKG5vdGlmaWNhdGlvbkNsb3NlZChjb25zdCBRU3RyaW5nJikpKTsK
KyAgICB9CisgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uVWkoKSB7IG1fd2lkZ2V0LT5oaWRl
KCk7IGRlbGV0ZSBtX3dpZGdldDsgfQorCisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCkgeyBt
X3dpZGdldC0+c2hvd05vdGlmaWNhdGlvbigpOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYk5v
dGlmaWNhdGlvblVpV2lkZ2V0KiBtX3dpZGdldDsKK307CisKKyNlbmRpZiAvLyBXZWJOb3RpZmlj
YXRpb25zVWlfaApJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBs
dWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L1dlYlBsdWdpbi5jcHAJKHJldmlzaW9uIDYxMDIzKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3Bs
YXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAs
MTUgQEAgTXVsdGlwbGVTZWxlY3Rpb25Qb3B1cDo6TXVsdGlwbGVTZWxlY3RpbwogCiBib29sIFdl
YlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QKIHsK
LSAgICByZXR1cm4gZXh0ZW5zaW9uID09IE11bHRpcGxlU2VsZWN0aW9uczsKKyAgICBpZiAoZXh0
ZW5zaW9uID09IE11bHRpcGxlU2VsZWN0aW9ucykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKGV4dGVuc2lvbiA9PSBOb3RpZmljYXRpb25zKQorI2lmIEVOQUJMRV9OT1RJRklDQVRJT05T
CisgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBRX0VYUE9SVF9QTFVHSU4yKHF3ZWJzZWxlY3Rp
bSwgV2ViUGx1Z2luKQpJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dl
YlBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdp
bi9XZWJQbHVnaW4uaAkocmV2aXNpb24gNjEwMjMpCisrKyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxh
dGZvcm1wbHVnaW4vV2ViUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAK
ICNkZWZpbmUgV0VCUExVR0lOX0gKIAogI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5o
IgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblVpLmgiCiAKICNpbmNsdWRlIDxRRGlhbG9nPgog
CkBAIC04OCw2ICs4OSw3IEBAIGNsYXNzIFdlYlBsdWdpbiA6IHB1YmxpYyBRT2JqZWN0LCBwdWJs
aWMKIHB1YmxpYzoKICAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNlbGVjdElu
cHV0TWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbmV3IFdlYlBvcHVwKCk7IH0KICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3Q7CisgICAg
dmlydHVhbCBRV2ViTm90aWZpY2F0aW9uVWkqIGNyZWF0ZU5vdGlmaWNhdGlvblVpKGNvbnN0IFFT
dHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRQnl0ZUFycmF5JiBi
eXRlcykgY29uc3QgeyBpZiAoc3VwcG9ydHNFeHRlbnNpb24oTm90aWZpY2F0aW9ucykpIHJldHVy
biBuZXcgV2ViTm90aWZpY2F0aW9uVWkodGl0bGUsIG1lc3NhZ2UsIGJ5dGVzKTsgcmV0dXJuIDA7
IH0KIH07CiAKIApJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3BsYXRm
b3JtcGx1Z2luLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1w
bHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvCShyZXZpc2lvbiA2MTAyMykKKysrIFdlYktpdC9xdC9l
eGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTYsOCArNiwxMiBAQCBDT05GSUcgKz0gcGx1Z2luCiBERVNURElSID0gJCRbUVRfSU5TVEFM
TF9QTFVHSU5TXS93ZWJraXQKIAogU09VUkNFUyArPSBcCi0gICAgV2ViUGx1Z2luLmNwcAorICAg
IFdlYlBsdWdpbi5jcHAgXAorICAgIFdlYk5vdGlmaWNhdGlvblVpLmNwcAogCiBIRUFERVJTICs9
IFwKICAgICBXZWJQbHVnaW4uaCBcCi0gICAgcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKKyAgICBx
d2Via2l0cGxhdGZvcm1wbHVnaW4uaCBcCisgICAgV2ViTm90aWZpY2F0aW9uVWkuaAorCishY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX05PVElGSUNBVElPTlM9Lik6IERFRklORVMgKz0gRU5BQkxF
X05PVElGSUNBVElPTlM9MQpJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxl
cy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaAkocmV2aXNpb24gNjEwMjMp
CisrKyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1
Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDIwICs1OCwzNSBAQCBRX1NJR05BTFM6CiAgICAg
dm9pZCBkaWRIaWRlKCk7CiB9OwogCitjbGFzcyBRV2ViTm90aWZpY2F0aW9uVWkgOiBwdWJsaWMg
UU9iamVjdAoreworUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2ViTm90aWZpY2F0aW9uVWkoY29u
c3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRQnl0ZUFycmF5Jikge30KKyAgICB2
aXJ0dWFsIH5RV2ViTm90aWZpY2F0aW9uVWkoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIHNob3dO
b3RpZmljYXRpb24oKSA9IDA7CisgICAgCitRX1NJR05BTFM6CisgICAgdm9pZCBub3RpZmljYXRp
b25DbG9zZWQoY29uc3QgUVN0cmluZyYpOworfTsKKwogY2xhc3MgUVdlYktpdFBsYXRmb3JtUGx1
Z2luCiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UVdlYktpdFBsYXRmb3JtUGx1Z2luKCkge30K
IAogICAgIGVudW0gRXh0ZW5zaW9uIHsKLSAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb25zCisgICAg
ICAgIE11bHRpcGxlU2VsZWN0aW9ucywKKyAgICAgICAgTm90aWZpY2F0aW9ucwogICAgIH07CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgUVdlYlNlbGVjdE1ldGhvZCogY3JlYXRlU2VsZWN0SW5w
dXRNZXRob2QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRV2ViTm90aWZpY2F0aW9uVWkqIGNy
ZWF0ZU5vdGlmaWNhdGlvblVpKGNvbnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBRQnl0ZUFycmF5JikgY29uc3QgPSAwOwogCiB9OwogCi1RX0RFQ0xBUkVf
SU5URVJGQUNFKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiwgImNvbS5ub2tpYS5RdC5XZWJLaXQuUGxh
dGZvcm1QbHVnaW4vMS4xIik7CitRX0RFQ0xBUkVfSU5URVJGQUNFKFFXZWJLaXRQbGF0Zm9ybVBs
dWdpbiwgImNvbS5ub2tpYS5RdC5XZWJLaXQuUGxhdGZvcm1QbHVnaW4vMS4yIik7CiAKICNlbmRp
ZiAvLyBRV0VCS0lUUExBVEZPUk1QTFVHSU5fSAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58550</attachid>
            <date>2010-06-12 06:59:14 -0700</date>
            <delta_ts>2010-06-13 06:20:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>40005.patch</filename>
            <type>text/plain</type>
            <size>23094</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTA2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMTIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gUGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQgZm9yIE5vdGlmaWNhdGlvbnMgVUkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDA1CisKKyAgICAg
ICAgVG8gYXZvaWQgcmFjZSBjb25kaXRpb24gd2hlbiBHQyBpcyBydW4gZHVyaW5nIHNodXRkb3du
LAorICAgICAgICBkaXNjb25uZWN0IHRoZSBOb3RpZmljYXRpb24gZnJvbSB0aGUgTm90aWZpY2F0
aW9uUHJlc2VudGVyCisgICAgICAgIHdoZW4gdGhlIHByZXNlbnRlciBkZWxldGVzIGl0c2VsZi4K
KyAgICAgICAgVGhpcyBjYW5ub3QgYmUgdGVzdGVkIGJ5IGEgbGF5b3V0IHRlc3QsIHRoZSByYWNl
IGNvbmRpdGlvbiBoYXBwZW5zIG9ubHkKKyAgICAgICAgaWYgR0MgaXMgcnVuIGR1cmluZyBzaHV0
ZG93bi4gSXQgY2FuIGJlIHRlc3RlZCBtYW51YWxseSBieSBsb2FkaW5nCisgICAgICAgIG1hbnVh
bGx5IGFueSBub3RpZmljYXRpb24gdGVzdCBhbmQgY2xvc2luZyB0aGUgYnJvd3Nlci4KKworICAg
ICAgICAqIG5vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbik6CisgICAgICAgICogbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbjo6ZGV0YWNoUHJl
c2VudGVyKToKKwogMjAxMC0wNi0xMyAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KSW5kZXg6IFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3
ICs5MCw4IEBAIE5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FuY2VsKCk7CiAgICAgfQotICAgIG1fcHJlc2VudGVy
LT5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgaWYgKG1fcHJlc2VudGVy
KQorICAgICAgICBtX3ByZXNlbnRlci0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKHRoaXMp
OwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpIApJbmRleDogV2ViQ29yZS9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaAkocmV2aXNpb24gNjEwMzApCisrKyBXZWJDb3JlL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBTaGFyZWRCdWZmZXIqIGljb25EYXRhKCkgeyByZXR1cm4g
bV9pY29uRGF0YS5nZXQoKTsgfQogICAgICAgICB2b2lkIHJlbGVhc2VJY29uRGF0YSgpIHsgbV9p
Y29uRGF0YSA9IDA7IH0KIAorICAgICAgICAvLyBDYWxsZWQgaWYgdGhlIHByZXNlbnRlciBpcyBk
ZWxldGVkIGJlZm9yZSB0aGUgbm90aWZpY2F0aW9uIGlzIEdDJ2QKKyAgICAgICAgdm9pZCBkZXRh
Y2hQcmVzZW50ZXIoKSB7IG1fcHJlc2VudGVyID0gMDsgfQorCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aFJl
Y2VpdmVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKTsKQEAgLTExOSw3ICsxMjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFN0cmluZyBtX2RpcmVjdGlvbjsKICAgICAgICAgU3RyaW5nIG1fcmVwbGFjZUlk
OwogCi0KICAgICAgICAgZW51bSBOb3RpZmljYXRpb25TdGF0ZSB7CiAgICAgICAgICAgICBJZGxl
ID0gMCwKICAgICAgICAgICAgIExvYWRpbmcgPSAxLApJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTA2MikKKysr
IFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAx
MC0wNi0xMiAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBQbGF0Zm9ybSBwbHVn
aW4gc3VwcG9ydCBmb3IgTm90aWZpY2F0aW9ucyBVSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwMDUKKworICAgICAgICBBZGQgYW4gaW50ZXJmYWNl
IHRvIHRoZSBwbGF0Zm9ybSBwbHVnaW4gdG8gZGlzcGxheSBub3RpZmljYXRpb25zLgorICAgICAg
ICBJbXBsZW1lbnRlZCB0aGUgbm90aWZpY2F0aW9uIGluIHRoZSBleGFtcGxlIHBsYXRmb3JtIHBs
dWdpbi4gCisgICAgICAgIFRoaXMgaW50ZXJmYWNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0
IGNvdWxkIGJlIHR1cm5lZCBvZmYgd2l0aAorICAgICAgICBhIGJ1aWxkIGZsYWcuIFRoZSBwbGF0
Zm9ybSBwbHVnaW4gc2hvdWxkIGNvbnRyb2wgaXRzIG93biBsaWZlY3ljbGUsCisgICAgICAgIHNv
IG5vdyB0aGUgY2xvc2UgdGltZXIgYXBwbGllcyBvbmx5IHdoZW4gdXNpbmcgdGhlIFFTeXN0ZW1U
cmF5SWNvbi4KKyAgICAgICAgVGhhdCdzIGJlY2F1c2UgUVN5c3RlbVRyYXlJY29uIGRvZXMgbm90
IGluZm9ybSBpdHMgY2FsbGVyIHdoZW4gaXQKKyAgICAgICAgaXMgY2xvc2VkLgorCisgICAgICAg
IENoYW5nZWQgdGhlIHdheSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCBpcyBkZWxldGVk
IGJlY2F1c2UgaXQKKyAgICAgICAgaXMgYmVpbmcgYWNjZXNzZWQgd2hlbiBHQyBpcyBkZWxldGlu
ZyB0aGUgTm90aWZpY2F0aW9uIG9iamVjdHMuCisgICAgICAgIE5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0IGlzIG5vdyBkZXRhY2hpbmcgaXRzZWxmIGZyb20gdGhlCisgICAgICAgIE5vdGlm
aWNhdGlvbnMgYmVmb3JlIGl0IGlzIGRlbGV0ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYmtpdHBs
YXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpRV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFFXZWJOb3RpZmljYXRpb25QcmVzZW50
ZXI6On5RV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFFXZWJLaXRQbGF0Zm9y
bVBsdWdpbjo6KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3JhcHBl
cjo6Tm90aWZpY2F0aW9uSWNvbldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQ6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2xv
c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpk
aXNwbGF5Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0OjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6OnJlbW92ZVJlcGxhY2VkTm90aWZpY2F0aW9uRnJvbVF1ZXVlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkZXRhY2hOb3Rp
ZmljYXRpb24pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpRdFBsYXRmb3JtUGx1Z2luOjpjcmVhdGVOb3RpZmljYXRp
b25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4u
aDoKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVz
ZW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbldpZGdldDo6V2ViTm90
aWZpY2F0aW9uV2lkZ2V0KToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbldpZGdldDo6fldlYk5v
dGlmaWNhdGlvbldpZGdldCk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25XaWRnZXQ6OnNob3dO
b3RpZmljYXRpb24pOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uV2lkZ2V0OjpldmVudCk6Cisg
ICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2VudGVy
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjp+V2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cjo6c2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4v
V2ViUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24pOgor
ICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oOgorICAgICAgICAo
V2ViUGx1Z2luOjpjcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIGV4YW1w
bGVzL3BsYXRmb3JtcGx1Z2luL3BsYXRmb3JtcGx1Z2luLnBybzoKKyAgICAgICAgKiBleGFtcGxl
cy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKFFXZWJO
b3RpZmljYXRpb25QcmVzZW50ZXI6OlFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAg
ICAoUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6flFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIp
OgorICAgICAgICAoUVdlYktpdFBsYXRmb3JtUGx1Z2luOjopOgorCiAyMDEwLTA2LTEzICBSb2Jl
cnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViS2l0L3F0L0FwaS9xd2Via2l0cGxhdGZvcm1wbHVn
aW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5o
CShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2lu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDIwICs1OCwzNSBAQCBRX1NJR05BTFM6CiAgICAgdm9p
ZCBkaWRIaWRlKCk7CiB9OwogCitjbGFzcyBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIDogcHVi
bGljIFFPYmplY3QKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5vdGlmaWNhdGlvblBy
ZXNlbnRlcihjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYsIGNvbnN0IFFCeXRlQXJyYXkm
KSB7fQorICAgIHZpcnR1YWwgflFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIoKSB7fQorCisgICAg
dmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oKSA9IDA7CisgICAgCitRX1NJR05BTFM6Cisg
ICAgdm9pZCBub3RpZmljYXRpb25DbG9zZWQoKTsKK307CisKIGNsYXNzIFFXZWJLaXRQbGF0Zm9y
bVBsdWdpbgogewogcHVibGljOgogICAgIHZpcnR1YWwgflFXZWJLaXRQbGF0Zm9ybVBsdWdpbigp
IHt9CiAKICAgICBlbnVtIEV4dGVuc2lvbiB7Ci0gICAgICAgIE11bHRpcGxlU2VsZWN0aW9ucwor
ICAgICAgICBNdWx0aXBsZVNlbGVjdGlvbnMsCisgICAgICAgIE5vdGlmaWNhdGlvbnMKICAgICB9
OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXh0ZW5zaW9uKEV4dGVuc2lvbiBleHRlbnNp
b24pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFXZWJTZWxlY3RNZXRob2QqIGNyZWF0ZVNlbGVj
dElucHV0TWV0aG9kKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUVdlYk5vdGlmaWNhdGlvblBy
ZXNlbnRlciogY3JlYXRlTm90aWZpY2F0aW9uUHJlc2VudGVyKGNvbnN0IFFTdHJpbmcmIHRpdGxl
LCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRQnl0ZUFycmF5JikgY29uc3QgPSAwOwog
CiB9OwogCi1RX0RFQ0xBUkVfSU5URVJGQUNFKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiwgImNvbS5u
b2tpYS5RdC5XZWJLaXQuUGxhdGZvcm1QbHVnaW4vMS4xIik7CitRX0RFQ0xBUkVfSU5URVJGQUNF
KFFXZWJLaXRQbGF0Zm9ybVBsdWdpbiwgImNvbS5ub2tpYS5RdC5XZWJLaXQuUGxhdGZvcm1QbHVn
aW4vMS4yIik7CiAKICNlbmRpZiAvLyBRV0VCS0lUUExBVEZPUk1QTFVHSU5fSApJbmRleDogV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDkgKzM2LDExIEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlF0UGxh
dGZvcm1QbHVnaW4uaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogCiAjaW5jbHVkZSAi
cXdlYmtpdGdsb2JhbC5oIgorI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgogI2lu
Y2x1ZGUgPFF0R3VpPgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCkBAIC02Niw3ICs2OCw3
IEBAIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpOb3RpZmljYXRpb25JY28KICNpZm5kZWYgUVRf
Tk9fU1lTVEVNVFJBWUlDT04KICAgICBtX25vdGlmaWNhdGlvbkljb24gPSAwOwogI2VuZGlmCi0g
ICAgbV9jbG9zZVRpbWVyLnN0YXJ0T25lU2hvdChub3RpZmljYXRpb25UaW1lb3V0KTsKKyAgICBt
X3ByZXNlbnRlciA9IDA7CiB9CiAKIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjp+Tm90aWZpY2F0
aW9uSWNvbldyYXBwZXIoKQpAQCAtODIsNiArODQsMTQgQEAgTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQ6Ok5vdGlmaWNhdAogewogfQogCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KCkKK3sKKyAgICB3aGlsZSAoIW1fbm90
aWZpY2F0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpJdGVy
YXRvciBpdGVyID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCk7CisgICAgICAgIGRldGFjaE5vdGlm
aWNhdGlvbihpdGVyLmtleSgpKTsKKyAgICB9Cit9CisKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6OnJlbW92ZUNsaWVudCgpCiB7CiAgICAgbV9jbGllbnRDb3VudC0tOwpAQCAt
OTEsNiArMTAxLDExIEBAIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlbW8K
ICAgICB9CiB9CiAKK3ZvaWQgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Om5vdGlmaWNhdGlvbkNs
b3NlZCgpCit7CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlv
blByZXNlbnRlcigpLT5jYW5jZWwodGhpcyk7Cit9CisKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2Vu
dGVyQ2xpZW50UXQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7CiAgICAgLy8g
RklYTUU6IHdvcmtlcnMgYmFzZWQgbm90aWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQu
CkBAIC0xMjMsMTQgKzEzOCwxOSBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0
OjpkaXNwCiAgICAgICAgIG1lc3NhZ2UgPSBub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSgp
OwogICAgIH0KIAorICAgIHdyYXBwZXItPm1fcHJlc2VudGVyID0gbV9wbGF0Zm9ybVBsdWdpbi5j
cmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIodGl0bGUsIG1lc3NhZ2UsIGJ5dGVzKTsKKworICAg
IGlmICghd3JhcHBlci0+bV9wcmVzZW50ZXIpIHsKICNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlD
T04KLSAgICBRUGl4bWFwIHBpeG1hcDsKLSAgICBpZiAoYnl0ZXMubGVuZ3RoKCkgJiYgcGl4bWFw
LmxvYWRGcm9tRGF0YShieXRlcykpIHsKLSAgICAgICAgUUljb24gaWNvbihwaXhtYXApOwotICAg
ICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24gPSBuZXcgUVN5c3RlbVRyYXlJY29uKGlj
b24pOwotICAgIH0gZWxzZQotICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24gPSBu
ZXcgUVN5c3RlbVRyYXlJY29uKCk7CisgICAgICAgIHdyYXBwZXItPm1fY2xvc2VUaW1lci5zdGFy
dE9uZVNob3Qobm90aWZpY2F0aW9uVGltZW91dCk7CisgICAgICAgIFFQaXhtYXAgcGl4bWFwOwor
ICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoKCkgJiYgcGl4bWFwLmxvYWRGcm9tRGF0YShieXRlcykp
IHsKKyAgICAgICAgICAgIFFJY29uIGljb24ocGl4bWFwKTsKKyAgICAgICAgICAgIHdyYXBwZXIt
Pm1fbm90aWZpY2F0aW9uSWNvbiA9IG5ldyBRU3lzdGVtVHJheUljb24oaWNvbik7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25JY29uID0gbmV3IFFT
eXN0ZW1UcmF5SWNvbigpOwogI2VuZGlmCisgICAgfQogCiAgICAgc2VuZEV2ZW50KG5vdGlmaWNh
dGlvbiwgImRpc3BsYXkiKTsKIApAQCAtMTM4LDYgKzE1OCwxMiBAQCB2b2lkIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0OjpkaXNwCiAgICAgaWYgKG1fbm90aWZpY2F0aW9ucy5maW5kKG5v
dGlmaWNhdGlvbikgPT0gbV9ub3RpZmljYXRpb25zLmVuZCgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBpZiAod3JhcHBlci0+bV9wcmVzZW50ZXIpIHsKKyAgICAgICAgd3JhcHBlci0+Y29ubmVj
dCh3cmFwcGVyLT5tX3ByZXNlbnRlci5nZXQoKSwgU0lHTkFMKG5vdGlmaWNhdGlvbkNsb3NlZCgp
KSwgd3JhcHBlciwgU0xPVChub3RpZmljYXRpb25DbG9zZWQoKSksIFF0OjpRdWV1ZWRDb25uZWN0
aW9uKTsKKyAgICAgICAgd3JhcHBlci0+bV9wcmVzZW50ZXItPnNob3dOb3RpZmljYXRpb24oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmbmRlZiBRVF9OT19TWVNURU1UUkFZSUNPTgog
ICAgIHdyYXBwZXItPm1fbm90aWZpY2F0aW9uSWNvbi0+c2hvdygpOwogICAgIHdyYXBwZXItPm1f
bm90aWZpY2F0aW9uSWNvbi0+c2hvd01lc3NhZ2Uobm90aWZpY2F0aW9uLT5jb250ZW50cygpLnRp
dGxlKCksIG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5KCkpOwpAQCAtMTU2LDggKzE4Miw3
IEBAIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmNhbmMKICAgICBOb3RpZmlj
YXRpb25zUXVldWU6Okl0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuZmluZChub3RpZmlj
YXRpb24pOwogICAgIGlmIChpdGVyICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkgewogICAgICAg
ICBzZW5kRXZlbnQobm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuY2xvc2VFdmVudCk7Ci0gICAg
ICAgIGRlbGV0ZSBtX25vdGlmaWNhdGlvbnMudGFrZShub3RpZmljYXRpb24pOwotICAgICAgICBu
b3RpZmljYXRpb24tPnVuc2V0UGVuZGluZ0FjdGl2aXR5KG5vdGlmaWNhdGlvbik7CisgICAgICAg
IGRldGFjaE5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pOwogICAgIH0KIH0KIApAQCAtMjUyLDEx
ICsyNzcsMTcgQEAgdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6cmVtbwogICAg
ICAgICBpZiAoZHVtcE5vdGlmaWNhdGlvbikKICAgICAgICAgICAgIGR1bXBSZXBsYWNlZElkVGV4
dChvbGROb3RpZmljYXRpb24pOwogICAgICAgICBzZW5kRXZlbnQob2xkTm90aWZpY2F0aW9uLCBl
dmVudE5hbWVzKCkuY2xvc2VFdmVudCk7Ci0gICAgICAgIGRlbGV0ZSBtX25vdGlmaWNhdGlvbnMu
dGFrZShvbGROb3RpZmljYXRpb24pOwotICAgICAgICBvbGROb3RpZmljYXRpb24tPnVuc2V0UGVu
ZGluZ0FjdGl2aXR5KG9sZE5vdGlmaWNhdGlvbik7CisgICAgICAgIGRldGFjaE5vdGlmaWNhdGlv
bihvbGROb3RpZmljYXRpb24pOwogICAgIH0KIH0KIAordm9pZCBOb3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdDo6ZGV0YWNoTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
KQoreworICAgIGRlbGV0ZSBtX25vdGlmaWNhdGlvbnMudGFrZShub3RpZmljYXRpb24pOworICAg
IG5vdGlmaWNhdGlvbi0+ZGV0YWNoUHJlc2VudGVyKCk7CisgICAgbm90aWZpY2F0aW9uLT51bnNl
dFBlbmRpbmdBY3Rpdml0eShub3RpZmljYXRpb24pOworfQorCiB2b2lkIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpkdW1wUmVwbGFjZWRJZFRleHQoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiB7CiAgICAgaWYgKG5vdGlmaWNhdGlvbikKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCShy
ZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwzNiArMzQsNDggQEAKIAog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRl
ci5oIgorI2luY2x1ZGUgIlF0UGxhdGZvcm1QbHVnaW4uaCIKICNpbmNsdWRlICJUaW1lci5oIgog
CiAjaW5jbHVkZSA8UU11bHRpSGFzaD4KICNpbmNsdWRlIDxRU3lzdGVtVHJheUljb24+CiAKLSNp
ZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKK2NsYXNzIFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBLVVJMOwog
Ci1jbGFzcyBOb3RpZmljYXRpb25JY29uV3JhcHBlciB7CitjbGFzcyBOb3RpZmljYXRpb25JY29u
V3JhcHBlciA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAogcHVibGljOgogICAgIE5v
dGlmaWNhdGlvbkljb25XcmFwcGVyKCk7CiAgICAgfk5vdGlmaWNhdGlvbkljb25XcmFwcGVyKCk7
CisKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbG9zZShUaW1lcjxOb3RpZmljYXRpb25J
Y29uV3JhcHBlcj4qKTsKKworcHVibGljIFFfU0xPVFM6CisgICAgdm9pZCBub3RpZmljYXRpb25D
bG9zZWQoKTsKKworcHVibGljOgogI2lmbmRlZiBRVF9OT19TWVNURU1UUkFZSUNPTgogICAgIE93
blB0cjxRU3lzdGVtVHJheUljb24+IG1fbm90aWZpY2F0aW9uSWNvbjsKICNlbmRpZgorCisgICAg
T3duUHRyPFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI+IG1fcHJlc2VudGVyOwogICAgIFRpbWVy
PE5vdGlmaWNhdGlvbkljb25XcmFwcGVyPiBtX2Nsb3NlVGltZXI7CiB9OwogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCisKIHR5cGVkZWYgUUhhc2ggPE5vdGlmaWNhdGlvbiosIE5vdGlmaWNh
dGlvbkljb25XcmFwcGVyKj4gTm90aWZpY2F0aW9uc1F1ZXVlOwogCiBjbGFzcyBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdCA6IHB1YmxpYyBOb3RpZmljYXRpb25QcmVzZW50ZXIgewogcHVi
bGljOgogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KCk7Ci0gICAgfk5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0KCkge30KKyAgICB+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQoKTsKIAogICAgIC8qIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciBpbnRlcmZh
Y2UgKi8KICAgICB2aXJ0dWFsIGJvb2wgc2hvdyhOb3RpZmljYXRpb24qKTsKQEAgLTg4LDYgKzEw
MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kRXZlbnQoTm90aWZpY2F0aW9uKiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwogICAgIHZvaWQgZGlzcGxheU5vdGlmaWNhdGlvbihO
b3RpZmljYXRpb24qLCBjb25zdCBRQnl0ZUFycmF5Jik7CiAgICAgdm9pZCByZW1vdmVSZXBsYWNl
ZE5vdGlmaWNhdGlvbkZyb21RdWV1ZShOb3RpZmljYXRpb24qKTsKKyAgICB2b2lkIGRldGFjaE5v
dGlmaWNhdGlvbihOb3RpZmljYXRpb24qKTsKICAgICB2b2lkIGR1bXBSZXBsYWNlZElkVGV4dChO
b3RpZmljYXRpb24qKTsKICAgICB2b2lkIGR1bXBTaG93VGV4dChOb3RpZmljYXRpb24qKTsKIApA
QCAtOTUsOSArMTA4LDExIEBAIHByaXZhdGU6CiAgICAgUUhhc2g8UVN0cmluZywgIFFMaXN0PFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+ID4gPiBtX3BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHM7CiAgICAg
Tm90aWZpY2F0aW9uc1F1ZXVlIG1fbm90aWZpY2F0aW9uczsKICAgICBRT2JqZWN0KiBtX3JlY2Vp
dmVyOworICAgIFF0UGxhdGZvcm1QbHVnaW4gbV9wbGF0Zm9ybVBsdWdpbjsKIH07CiAKKyNlbmRp
ZgorCiB9CiAKICNlbmRpZgotI2VuZGlmCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UXRQbGF0Zm9ybVBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3
LDQgKzE1NywxMyBAQCBRdEFic3RyYWN0V2ViUG9wdXAqIFF0UGxhdGZvcm1QbHVnaW46OmNyCiAg
ICAgcmV0dXJuIG5ldyBTZWxlY3RJbnB1dE1ldGhvZFdyYXBwZXIoc2VsZWN0b3IpOwogfQogCisK
K1FXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIFF0UGxhdGZvcm1QbHVnaW46OmNyZWF0ZU5vdGlm
aWNhdGlvblByZXNlbnRlcihjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSwgY29uc3QgUUJ5dGVBcnJheSYgYnl0ZXMpCit7CisgICAgUVdlYktpdFBsYXRmb3JtUGx1
Z2luKiBwID0gcGx1Z2luKCk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gcC0+Y3JlYXRlTm90aWZpY2F0aW9uUHJlc2VudGVyKHRpdGxlLCBtZXNzYWdlLCBieXRl
cyk7Cit9CisKIH0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1
Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1Q
bHVnaW4uaAkocmV2aXNpb24gNjEwMzApCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQ
bGF0Zm9ybVBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKIGNsYXNz
IFFXZWJTZWxlY3RNZXRob2Q7CiBjbGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW47CitjbGFzcyBR
V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUy
LDYgKzUzLDcgQEAgcHVibGljOgogICAgIH5RdFBsYXRmb3JtUGx1Z2luKCk7CiAKICAgICBRdEFi
c3RyYWN0V2ViUG9wdXAqIGNyZWF0ZVNlbGVjdElucHV0TWV0aG9kKCk7CisgICAgUVdlYk5vdGlm
aWNhdGlvblByZXNlbnRlciogY3JlYXRlTm90aWZpY2F0aW9uUHJlc2VudGVyKGNvbnN0IFFTdHJp
bmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRQnl0ZUFycmF5Jik7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRlZDsKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9w
bGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50
ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L1dlYk5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRl
ci5oIgorCitXZWJOb3RpZmljYXRpb25XaWRnZXQ6OldlYk5vdGlmaWNhdGlvbldpZGdldChjb25z
dCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJh
eSYgYnl0ZXMpCisgICAgOiBRV2lkZ2V0KCkKKyAgICAsIG1fdGl0bGUodGl0bGUpCisgICAgLCBt
X21lc3NhZ2UobWVzc2FnZSkKK3sKKyAgICBRUGl4bWFwIG1hc2s7CisgICAgUVBhaW50ZXIgcGFp
bnRlcigmbWFzayk7CisgICAgcGFpbnRlci5maWxsUmVjdCgwLCAwLCAzMDAsIDEwMCwgUXQ6Omxp
Z2h0R3JheSk7CisgICAgUUJpdG1hcCBiaXRtYXAobWFzayk7CisgICAgc2V0TWFzayhiaXRtYXAp
OworICAgIFFHcmlkTGF5b3V0KiBsYXlvdXQgPSBuZXcgUUdyaWRMYXlvdXQodGhpcyk7CisgICAg
bGF5b3V0LT5hZGRXaWRnZXQobmV3IFFMYWJlbChtX3RpdGxlKSwgMCwgMCwgMSwgNSk7CisgICAg
aW50IG1lc3NhZ2VQb3NpdGlvbiA9IDA7CisgICAgaWYgKGJ5dGVzLmxlbmd0aCgpICYmIG1fcGl4
bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKKyAgICAgICAgUUxhYmVsKiBsYWJlbCA9IG5ldyBR
TGFiZWw7CisgICAgICAgIGxhYmVsLT5zZXRQaXhtYXAobV9waXhtYXApOworICAgICAgICBsYXlv
dXQtPmFkZFdpZGdldChsYWJlbCwgMSwgMCwgMSwgMSk7CisgICAgICAgIG1lc3NhZ2VQb3NpdGlv
bisrOworICAgIH0KKyAgICBRTGFiZWwqIG1lc3NhZ2VMYWJlbCA9IG5ldyBRTGFiZWwobV9tZXNz
YWdlKTsKKyAgICBtZXNzYWdlTGFiZWwtPnNldE1hc2soYml0bWFwKTsKKyAgICBtZXNzYWdlTGFi
ZWwtPnNldFdvcmRXcmFwKHRydWUpOworICAgIGxheW91dC0+YWRkV2lkZ2V0KG1lc3NhZ2VMYWJl
bCwgMSwgbWVzc2FnZVBvc2l0aW9uLCAxLCA1IC0gbWVzc2FnZVBvc2l0aW9uKTsKKyAgICBzZXRM
YXlvdXQobGF5b3V0KTsKKyAgICBzZXRGaXhlZFNpemUoMzAwLCAxMDApOworfQorCitXZWJOb3Rp
ZmljYXRpb25XaWRnZXQ6On5XZWJOb3RpZmljYXRpb25XaWRnZXQoKQoreworfQorCit2b2lkIFdl
Yk5vdGlmaWNhdGlvbldpZGdldDo6c2hvd05vdGlmaWNhdGlvbigpCit7CisgICAgc2hvdygpOwor
fQorCitib29sIFdlYk5vdGlmaWNhdGlvbldpZGdldDo6ZXZlbnQoUUV2ZW50KiBldikKK3sKKyAg
ICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZSB8fCBldi0+dHlw
ZSgpID09IFFFdmVudDo6Q2xvc2UpIHsKKyAgICAgICAgZW1pdCBub3RpZmljYXRpb25DbG9zZWQo
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBRV2lkZ2V0OjpldmVu
dChldik7Cit9CisKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJO
b3RpZmljYXRpb25QcmVzZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMv
cGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgJKHJldmlzaW9uIDApCisr
KyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2lmbmRlZiBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXJfaCAgCisjZGVmaW5lIFdlYk5vdGlmaWNh
dGlvblByZXNlbnRlcl9oCisKKyNpbmNsdWRlICJxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCIKKyNp
bmNsdWRlIDxRdEd1aT4KKworY2xhc3MgV2ViTm90aWZpY2F0aW9uV2lkZ2V0IDogcHVibGljIFFX
aWRnZXQKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViTm90aWZpY2F0aW9uV2lkZ2V0KGNv
bnN0IFFTdHJpbmcmIHRpdGxlLCBjb25zdCBRU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBRQnl0ZUFy
cmF5Jik7CisgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uV2lkZ2V0KCk7CisKKyAgICB2b2lk
IHNob3dOb3RpZmljYXRpb24oKTsKKyAgICBib29sIGV2ZW50KFFFdmVudCogZXYpOworCitRX1NJ
R05BTFM6CisgICAgdm9pZCBub3RpZmljYXRpb25DbG9zZWQoKTsKKworcHJpdmF0ZToKKyAgICBR
U3RyaW5nIG1fdGl0bGU7CisgICAgUVN0cmluZyBtX21lc3NhZ2U7CisgICAgUVBpeG1hcCBtX3Bp
eG1hcDsKK307CisKK2NsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciA6IHB1YmxpYyBRV2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyCit7CitRX09CSkVDVAorcHVibGljOgorICAgIFdlYk5vdGlm
aWNhdGlvblByZXNlbnRlcihjb25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSwgY29uc3QgUUJ5dGVBcnJheSYgYnl0ZXMpIDogUVdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cih0aXRsZSwgbWVzc2FnZSwgYnl0ZXMpCisgICAgeworICAgICAgICBtX3dpZGdldCA9IG5ldyBX
ZWJOb3RpZmljYXRpb25XaWRnZXQodGl0bGUsIG1lc3NhZ2UsIGJ5dGVzKTsKKyAgICAgICAgY29u
bmVjdChtX3dpZGdldCwgU0lHTkFMKG5vdGlmaWNhdGlvbkNsb3NlZCgpKSwgdGhpcywgU0lHTkFM
KG5vdGlmaWNhdGlvbkNsb3NlZCgpKSk7CisgICAgfQorICAgIHZpcnR1YWwgfldlYk5vdGlmaWNh
dGlvblByZXNlbnRlcigpIHsgbV93aWRnZXQtPmNsb3NlKCk7IGRlbGV0ZSBtX3dpZGdldDsgfQor
CisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCkgeyBtX3dpZGdldC0+c2hvd05vdGlmaWNhdGlv
bigpOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYk5vdGlmaWNhdGlvbldpZGdldCogbV93aWRn
ZXQ7Cit9OworCisjZW5kaWYgLy8gV2ViTm90aWZpY2F0aW9uc1VpX2gKSW5kZXg6IFdlYktpdC9x
dC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwCShyZXZpc2lvbiA2
MTAzMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTAsNyArMjEwLDE1IEBAIE11bHRpcGxlU2VsZWN0aW9uUG9w
dXA6Ok11bHRpcGxlU2VsZWN0aW8KIAogYm9vbCBXZWJQbHVnaW46OnN1cHBvcnRzRXh0ZW5zaW9u
KEV4dGVuc2lvbiBleHRlbnNpb24pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbiA9PSBN
dWx0aXBsZVNlbGVjdGlvbnM7CisgICAgaWYgKGV4dGVuc2lvbiA9PSBNdWx0aXBsZVNlbGVjdGlv
bnMpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGlmIChleHRlbnNpb24gPT0gTm90aWZpY2F0
aW9ucykKKyNpZiBFTkFCTEVfTk9USUZJQ0FUSU9OUworICAgICAgICByZXR1cm4gdHJ1ZTsKKyNl
bHNlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVybiBmYWxzZTsKIH0K
IAogUV9FWFBPUlRfUExVR0lOMihxd2Vic2VsZWN0aW0sIFdlYlBsdWdpbikKSW5kZXg6IFdlYktp
dC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmgJKHJldmlzaW9uIDYx
MDMwKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5lIFdFQlBMVUdJTl9ICiAKICNp
bmNsdWRlICJxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIuaCIKIAogI2luY2x1ZGUgPFFEaWFsb2c+CiAKQEAgLTg4LDYgKzg5LDcgQEAg
Y2xhc3MgV2ViUGx1Z2luIDogcHVibGljIFFPYmplY3QsIHB1YmxpYwogcHVibGljOgogICAgIHZp
cnR1YWwgUVdlYlNlbGVjdE1ldGhvZCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKSBjb25zdCB7
IHJldHVybiBuZXcgV2ViUG9wdXAoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVu
c2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdDsKKyAgICB2aXJ0dWFsIFFXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXIqIGNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcihjb25zdCBRU3RyaW5n
JiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVBcnJheSYgYnl0ZXMp
IGNvbnN0IHsgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKE5vdGlmaWNhdGlvbnMpKSByZXR1cm4gbmV3
IFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcih0aXRsZSwgbWVzc2FnZSwgYnl0ZXMpOyByZXR1cm4g
MDsgfQogfTsKIAogCkluZGV4OiBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxh
dGZvcm1wbHVnaW4ucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9y
bXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm8JKHJldmlzaW9uIDYxMDMwKQorKysgV2ViS2l0L3F0
L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3BsYXRmb3JtcGx1Z2luLnBybwkod29ya2luZyBjb3B5
KQpAQCAtNiw4ICs2LDEyIEBAIENPTkZJRyArPSBwbHVnaW4KIERFU1RESVIgPSAkJFtRVF9JTlNU
QUxMX1BMVUdJTlNdL3dlYmtpdAogCiBTT1VSQ0VTICs9IFwKLSAgICBXZWJQbHVnaW4uY3BwCisg
ICAgV2ViUGx1Z2luLmNwcCBcCisgICAgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAogCiBI
RUFERVJTICs9IFwKICAgICBXZWJQbHVnaW4uaCBcCi0gICAgcXdlYmtpdHBsYXRmb3JtcGx1Z2lu
LmgKKyAgICBxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCBcCisgICAgV2ViTm90aWZpY2F0aW9uUHJl
c2VudGVyLmgKKworIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9OT1RJRklDQVRJT05TPS4pOiBE
RUZJTkVTICs9IEVOQUJMRV9OT1RJRklDQVRJT05TPTEKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxl
cy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgJ
KHJldmlzaW9uIDYxMDMwKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3
ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwyMCArNTgsMzUgQEAg
UV9TSUdOQUxTOgogICAgIHZvaWQgZGlkSGlkZSgpOwogfTsKIAorY2xhc3MgUVdlYk5vdGlmaWNh
dGlvblByZXNlbnRlciA6IHB1YmxpYyBRT2JqZWN0Cit7CitRX09CSkVDVAorcHVibGljOgorICAg
IFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIoY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcm
LCBjb25zdCBRQnl0ZUFycmF5Jikge30KKyAgICB2aXJ0dWFsIH5RV2ViTm90aWZpY2F0aW9uUHJl
c2VudGVyKCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKCkgPSAwOwor
ICAgIAorUV9TSUdOQUxTOgorICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xvc2VkKCk7Cit9OworCiBj
bGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW4KIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5RV2Vi
S2l0UGxhdGZvcm1QbHVnaW4oKSB7fQogCiAgICAgZW51bSBFeHRlbnNpb24gewotICAgICAgICBN
dWx0aXBsZVNlbGVjdGlvbnMKKyAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb25zLAorICAgICAgICBO
b3RpZmljYXRpb25zCiAgICAgfTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lv
bihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRV2ViU2VsZWN0
TWV0aG9kKiBjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIGNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcihj
b25zdCBRU3RyaW5nJiB0aXRsZSwgY29uc3QgUVN0cmluZyYgbWVzc2FnZSwgY29uc3QgUUJ5dGVB
cnJheSYpIGNvbnN0ID0gMDsKIAogfTsKIAotUV9ERUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxh
dGZvcm1QbHVnaW4sICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEuMSIpOwor
UV9ERUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9raWEuUXQu
V2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEuMiIpOwogCiAjZW5kaWYgLy8gUVdFQktJVFBMQVRGT1JN
UExVR0lOX0gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58592</attachid>
            <date>2010-06-13 06:20:52 -0700</date>
            <delta_ts>2010-06-13 10:56:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>40005.patch</filename>
            <type>text/plain</type>
            <size>25389</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTA4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMTMgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gUGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQgZm9yIE5vdGlmaWNhdGlvbnMgVUkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDA1CisKKyAgICAg
ICAgVG8gYXZvaWQgcmFjZSBjb25kaXRpb24gd2hlbiBHQyBpcyBydW4gZHVyaW5nIHNodXRkb3du
LAorICAgICAgICBkaXNjb25uZWN0IHRoZSBOb3RpZmljYXRpb24gZnJvbSB0aGUgTm90aWZpY2F0
aW9uUHJlc2VudGVyCisgICAgICAgIHdoZW4gdGhlIHByZXNlbnRlciBkZWxldGVzIGl0c2VsZi4K
KyAgICAgICAgVGhpcyBjYW5ub3QgYmUgdGVzdGVkIGJ5IGEgbGF5b3V0IHRlc3QsIHRoZSByYWNl
IGNvbmRpdGlvbiBoYXBwZW5zIG9ubHkKKyAgICAgICAgd2hlbiBHQyBpcyBydW4gZHVyaW5nIHNo
dXRkb3duLiBJdCBjYW4gYmUgdGVzdGVkIG1hbnVhbGx5IGJ5IGxvYWRpbmcKKyAgICAgICAgbWFu
dWFsbHkgYW55IG5vdGlmaWNhdGlvbiB0ZXN0IGFuZCBjbG9zaW5nIHRoZSBicm93c2VyLgorCisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkZXRhY2hQ
cmVzZW50ZXIpOgorCiAyMDEwLTA2LTEzICBOb2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFs
QG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCShyZXZpc2lvbiA2MTAzMCkKKysrIFdl
YkNvcmUvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
MCw3ICs5MCw4IEBAIE5vdGlmaWNhdGlvbjo6fk5vdGlmaWNhdGlvbigpIAogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgY2FuY2VsKCk7CiAgICAgfQotICAgIG1fcHJlc2Vu
dGVyLT5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQodGhpcyk7CisgICAgaWYgKG1fcHJlc2Vu
dGVyKQorICAgICAgICBtX3ByZXNlbnRlci0+bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKHRo
aXMpOwogfQogCiB2b2lkIE5vdGlmaWNhdGlvbjo6c2hvdygpIApJbmRleDogV2ViQ29yZS9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb24uaAkocmV2aXNpb24gNjEwMzApCisrKyBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTaGFyZWRCdWZmZXIqIGljb25EYXRhKCkgeyByZXR1
cm4gbV9pY29uRGF0YS5nZXQoKTsgfQogICAgICAgICB2b2lkIHJlbGVhc2VJY29uRGF0YSgpIHsg
bV9pY29uRGF0YSA9IDA7IH0KIAorICAgICAgICAvLyBDYWxsZWQgaWYgdGhlIHByZXNlbnRlciBp
cyBkZWxldGVkIGJlZm9yZSB0aGUgbm90aWZpY2F0aW9uIGlzIEdDJ2QKKyAgICAgICAgdm9pZCBk
ZXRhY2hQcmVzZW50ZXIoKSB7IG1fcHJlc2VudGVyID0gMDsgfQorCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aFJlY2VpdmVkKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyKTsKQEAgLTExOSw3ICsxMjIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIFN0cmluZyBtX2RpcmVjdGlvbjsKICAgICAgICAgU3RyaW5nIG1fcmVwbGFj
ZUlkOwogCi0KICAgICAgICAgZW51bSBOb3RpZmljYXRpb25TdGF0ZSB7CiAgICAgICAgICAgICBJ
ZGxlID0gMCwKICAgICAgICAgICAgIExvYWRpbmcgPSAxLApJbmRleDogV2ViS2l0L3F0L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTA4OCkK
KysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2MiBAQAor
MjAxMC0wNi0xMyAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBQbGF0Zm9ybSBw
bHVnaW4gc3VwcG9ydCBmb3IgTm90aWZpY2F0aW9ucyBVSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwMDUKKworICAgICAgICBBZGQgYW4gaW50ZXJm
YWNlIHRvIHRoZSBwbGF0Zm9ybSBwbHVnaW4gdG8gZGlzcGxheSBub3RpZmljYXRpb25zLgorICAg
ICAgICBJbXBsZW1lbnRlZCB0aGUgbm90aWZpY2F0aW9uIGluIHRoZSBleGFtcGxlIHBsYXRmb3Jt
IHBsdWdpbi4gCisgICAgICAgIFRoaXMgaW50ZXJmYWNlIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwg
YnV0IGNvdWxkIGJlIHR1cm5lZCBvZmYgd2l0aAorICAgICAgICBhIGJ1aWxkIGZsYWcuIFRoZSBw
bGF0Zm9ybSBwbHVnaW4gc2hvdWxkIGNvbnRyb2wgaXRzIG93biBsaWZlY3ljbGUsCisgICAgICAg
IHNvIG5vdyB0aGUgY2xvc2UgdGltZXIgYXBwbGllcyBvbmx5IHdoZW4gdXNpbmcgdGhlIFFTeXN0
ZW1UcmF5SWNvbi4KKyAgICAgICAgVGhhdCdzIGJlY2F1c2UgUVN5c3RlbVRyYXlJY29uIGRvZXMg
bm90IGluZm9ybSBpdHMgY2FsbGVyIHdoZW4gaXQKKyAgICAgICAgaXMgY2xvc2VkLgorCisgICAg
ICAgIENoYW5nZWQgdGhlIHdheSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCBpcyBkZWxl
dGVkIGJlY2F1c2UgaXQKKyAgICAgICAgaXMgYmVpbmcgYWNjZXNzZWQgd2hlbiBHQyBpcyBkZWxl
dGluZyB0aGUgTm90aWZpY2F0aW9uIG9iamVjdHMuCisgICAgICAgIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0IGlzIG5vdyBkZXRhY2hpbmcgaXRzZWxmIGZyb20gdGhlCisgICAgICAgIE5v
dGlmaWNhdGlvbnMgYmVmb3JlIGl0IGlzIGRlbGV0ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYmtp
dHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpR
V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFFXZWJOb3RpZmljYXRpb25QcmVz
ZW50ZXI6On5RV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFFXZWJLaXRQbGF0
Zm9ybVBsdWdpbjo6KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25JY29uV3Jh
cHBlcjo6Tm90aWZpY2F0aW9uSWNvbldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uSWNvbldyYXBwZXI6OnRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlv
bkljb25XcmFwcGVyOjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbklj
b25XcmFwcGVyOjppY29uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXJDbGllbnRRdDo6fk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjpub3RpZmljYXRpb25DbG9zZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmRpc3BsYXlO
b3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdDo6bm90aWZpY2F0aW9uRm9yV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6cmVtb3ZlUmVwbGFjZWROb3RpZmljYXRpb25Gcm9t
UXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6
OmRldGFjaE5vdGlmaWNhdGlvbik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0
aW9uUHJlc2VudGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFBsYXRm
b3JtUGx1Z2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlF0UGxhdGZvcm1QbHVnaW46OmNyZWF0
ZU5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUXRQbGF0
Zm9ybVBsdWdpbi5oOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlm
aWNhdGlvblByZXNlbnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uV2lk
Z2V0OjpXZWJOb3RpZmljYXRpb25XaWRnZXQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uV2lk
Z2V0Ojp+V2ViTm90aWZpY2F0aW9uV2lkZ2V0KToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbldp
ZGdldDo6c2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25XaWRnZXQ6
OmV2ZW50KToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6
OldlYk5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25QcmVz
ZW50ZXI6On5XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyOjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0
Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwOgorICAgICAgICAoV2ViUGx1Z2luOjpzdXBwb3J0c0V4
dGVuc2lvbik6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmg6
CisgICAgICAgIChXZWJQbHVnaW46OmNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAg
ICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvOgorICAgICAg
ICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oOgorICAg
ICAgICAoUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6UVdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cik6CisgICAgICAgIChRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjp+UVdlYk5vdGlmaWNhdGlv
blByZXNlbnRlcik6CisgICAgICAgIChRV2ViS2l0UGxhdGZvcm1QbHVnaW46Oik6CisKIDIwMTAt
MDYtMTIgIERhd2l0IEFsZW1heWVodSAgPGFkYXdpdEBrZGUub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViS2l0L3F0L0FwaS9x
d2Via2l0cGxhdGZvcm1wbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJr
aXRwbGF0Zm9ybXBsdWdpbi5oCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9BcGkvcXdl
YmtpdHBsYXRmb3JtcGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDIwICs1OCw0MyBAQCBR
X1NJR05BTFM6CiAgICAgdm9pZCBkaWRIaWRlKCk7CiB9OwogCitjbGFzcyBRV2ViTm90aWZpY2F0
aW9uRGF0YQoreworcHVibGljOgorICAgIHZpcnR1YWwgY29uc3QgUVN0cmluZyB0aXRsZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFFTdHJpbmcgbWVzc2FnZSgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGNvbnN0IFFCeXRlQXJyYXkgaWNvbkRhdGEoKSBjb25zdCA9IDA7Cit9Owor
CitjbGFzcyBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyIDogcHVibGljIFFPYmplY3QKK3sKK1Ff
T0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcigpIHt9CisgICAg
dmlydHVhbCB+UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcigpIHt9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBRV2ViTm90aWZpY2F0aW9uRGF0YSopID0gMDsKKyAg
ICAKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZCgpOworfTsKKwogY2xh
c3MgUVdlYktpdFBsYXRmb3JtUGx1Z2luCiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UVdlYktp
dFBsYXRmb3JtUGx1Z2luKCkge30KIAogICAgIGVudW0gRXh0ZW5zaW9uIHsKLSAgICAgICAgTXVs
dGlwbGVTZWxlY3Rpb25zCisgICAgICAgIE11bHRpcGxlU2VsZWN0aW9ucywKKyAgICAgICAgTm90
aWZpY2F0aW9ucwogICAgIH07CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24o
RXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUVdlYlNlbGVjdE1l
dGhvZCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBR
V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBjcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIoKSBj
b25zdCA9IDA7CiAKIH07CiAKLVFfREVDTEFSRV9JTlRFUkZBQ0UoUVdlYktpdFBsYXRmb3JtUGx1
Z2luLCAiY29tLm5va2lhLlF0LldlYktpdC5QbGF0Zm9ybVBsdWdpbi8xLjEiKTsKK1FfREVDTEFS
RV9JTlRFUkZBQ0UoUVdlYktpdFBsYXRmb3JtUGx1Z2luLCAiY29tLm5va2lhLlF0LldlYktpdC5Q
bGF0Zm9ybVBsdWdpbi8xLjIiKTsKIAogI2VuZGlmIC8vIFFXRUJLSVRQTEFURk9STVBMVUdJTl9I
CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xp
ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmlj
YXRpb25QcmVzZW50ZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDYxMDMwKQorKysgV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNs
dWRlICJRdFBsYXRmb3JtUGx1Z2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAog
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKQEAgLTY2LDcgKzY3LDcgQEAgTm90aWZpY2F0aW9u
SWNvbldyYXBwZXI6Ok5vdGlmaWNhdGlvbkljbwogI2lmbmRlZiBRVF9OT19TWVNURU1UUkFZSUNP
TgogICAgIG1fbm90aWZpY2F0aW9uSWNvbiA9IDA7CiAjZW5kaWYKLSAgICBtX2Nsb3NlVGltZXIu
c3RhcnRPbmVTaG90KG5vdGlmaWNhdGlvblRpbWVvdXQpOworICAgIG1fcHJlc2VudGVyID0gMDsK
IH0KIAogTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6On5Ob3RpZmljYXRpb25JY29uV3JhcHBlcigp
CkBAIC03OCwxMCArNzksNDYgQEAgdm9pZCBOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6Y2xvc2Uo
VGltZQogICAgIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVz
ZW50ZXIoKS0+Y2FuY2VsKHRoaXMpOwogfQogCisKK2NvbnN0IFFTdHJpbmcgTm90aWZpY2F0aW9u
SWNvbldyYXBwZXI6OnRpdGxlKCkgY29uc3QKK3sKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNh
dGlvbiA9IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50
ZXIoKS0+bm90aWZpY2F0aW9uRm9yV3JhcHBlcih0aGlzKTsKKyAgICBpZiAobm90aWZpY2F0aW9u
KQorICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uLT5jb250ZW50cygpLnRpdGxlKCk7CisgICAg
cmV0dXJuIFFTdHJpbmcoKTsKK30KKworY29uc3QgUVN0cmluZyBOb3RpZmljYXRpb25JY29uV3Jh
cHBlcjo6bWVzc2FnZSgpIGNvbnN0Cit7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24g
PSBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkt
Pm5vdGlmaWNhdGlvbkZvcldyYXBwZXIodGhpcyk7CisgICAgaWYgKG5vdGlmaWNhdGlvbikKKyAg
ICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS5ib2R5KCk7CisgICAgcmV0dXJu
IFFTdHJpbmcoKTsKK30KKworY29uc3QgUUJ5dGVBcnJheSBOb3RpZmljYXRpb25JY29uV3JhcHBl
cjo6aWNvbkRhdGEoKSBjb25zdAoreworICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0g
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5u
b3RpZmljYXRpb25Gb3JXcmFwcGVyKHRoaXMpOworICAgIFFCeXRlQXJyYXkgaWNvbkRhdGE7Cisg
ICAgaWYgKG5vdGlmaWNhdGlvbikgeworICAgICAgICBpZiAobm90aWZpY2F0aW9uLT5pY29uRGF0
YSgpKQorICAgICAgICAgICAgaWNvbkRhdGEgPSBRQnl0ZUFycmF5Ojpmcm9tUmF3RGF0YShub3Rp
ZmljYXRpb24tPmljb25EYXRhKCktPmRhdGEoKSwgbm90aWZpY2F0aW9uLT5pY29uRGF0YSgpLT5z
aXplKCkpOworICAgIH0KKyAgICByZXR1cm4gaWNvbkRhdGE7Cit9CisKIE5vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0OjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpIDogbV9jbGll
bnRDb3VudCgwKQogewogfQogCitOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6fk5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0KCkKK3sKKyAgICB3aGlsZSAoIW1fbm90aWZpY2F0aW9u
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpJdGVyYXRvciBpdGVy
ID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCk7CisgICAgICAgIGRldGFjaE5vdGlmaWNhdGlvbihp
dGVyLmtleSgpKTsKKyAgICB9Cit9CisKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6OnJlbW92ZUNsaWVudCgpCiB7CiAgICAgbV9jbGllbnRDb3VudC0tOwpAQCAtOTEsNiArMTI4
LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OnJlbW8KICAgICB9CiB9
CiAKK3ZvaWQgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Om5vdGlmaWNhdGlvbkNsb3NlZCgpCit7
CisgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRl
cigpLT5jYW5jZWwodGhpcyk7Cit9CisKIGJvb2wgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7CiAgICAgLy8gRklYTUU6IHdv
cmtlcnMgYmFzZWQgbm90aWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCkBAIC0xMjMs
MTQgKzE2NSwxOSBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwCiAg
ICAgICAgIG1lc3NhZ2UgPSBub3RpZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSgpOwogICAgIH0K
IAorICAgIHdyYXBwZXItPm1fcHJlc2VudGVyID0gbV9wbGF0Zm9ybVBsdWdpbi5jcmVhdGVOb3Rp
ZmljYXRpb25QcmVzZW50ZXIoKTsKKworICAgIGlmICghd3JhcHBlci0+bV9wcmVzZW50ZXIpIHsK
ICNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04KLSAgICBRUGl4bWFwIHBpeG1hcDsKLSAgICBp
ZiAoYnl0ZXMubGVuZ3RoKCkgJiYgcGl4bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKLSAgICAg
ICAgUUljb24gaWNvbihwaXhtYXApOwotICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbklj
b24gPSBuZXcgUVN5c3RlbVRyYXlJY29uKGljb24pOwotICAgIH0gZWxzZQotICAgICAgICB3cmFw
cGVyLT5tX25vdGlmaWNhdGlvbkljb24gPSBuZXcgUVN5c3RlbVRyYXlJY29uKCk7CisgICAgICAg
IHdyYXBwZXItPm1fY2xvc2VUaW1lci5zdGFydE9uZVNob3Qobm90aWZpY2F0aW9uVGltZW91dCk7
CisgICAgICAgIFFQaXhtYXAgcGl4bWFwOworICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoKCkgJiYg
cGl4bWFwLmxvYWRGcm9tRGF0YShieXRlcykpIHsKKyAgICAgICAgICAgIFFJY29uIGljb24ocGl4
bWFwKTsKKyAgICAgICAgICAgIHdyYXBwZXItPm1fbm90aWZpY2F0aW9uSWNvbiA9IG5ldyBRU3lz
dGVtVHJheUljb24oaWNvbik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgd3JhcHBlci0+
bV9ub3RpZmljYXRpb25JY29uID0gbmV3IFFTeXN0ZW1UcmF5SWNvbigpOwogI2VuZGlmCisgICAg
fQogCiAgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwgImRpc3BsYXkiKTsKIApAQCAtMTM4LDYg
KzE4NSwxMiBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkaXNwCiAgICAg
aWYgKG1fbm90aWZpY2F0aW9ucy5maW5kKG5vdGlmaWNhdGlvbikgPT0gbV9ub3RpZmljYXRpb25z
LmVuZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAod3JhcHBlci0+bV9wcmVzZW50ZXIp
IHsKKyAgICAgICAgd3JhcHBlci0+Y29ubmVjdCh3cmFwcGVyLT5tX3ByZXNlbnRlci5nZXQoKSwg
U0lHTkFMKG5vdGlmaWNhdGlvbkNsb3NlZCgpKSwgd3JhcHBlciwgU0xPVChub3RpZmljYXRpb25D
bG9zZWQoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICAgICAgd3JhcHBlci0+bV9wcmVz
ZW50ZXItPnNob3dOb3RpZmljYXRpb24od3JhcHBlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04KICAgICB3cmFwcGVyLT5tX25vdGlmaWNh
dGlvbkljb24tPnNob3coKTsKICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24tPnNob3dN
ZXNzYWdlKG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS50aXRsZSgpLCBub3RpZmljYXRpb24tPmNv
bnRlbnRzKCkuYm9keSgpKTsKQEAgLTE1NiwxOSArMjA5LDI2IEBAIHZvaWQgTm90aWZpY2F0aW9u
UHJlc2VudGVyQ2xpZW50UXQ6OmNhbmMKICAgICBOb3RpZmljYXRpb25zUXVldWU6Okl0ZXJhdG9y
IGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24pOwogICAgIGlmIChpdGVy
ICE9IG1fbm90aWZpY2F0aW9ucy5lbmQoKSkgewogICAgICAgICBzZW5kRXZlbnQobm90aWZpY2F0
aW9uLCBldmVudE5hbWVzKCkuY2xvc2VFdmVudCk7Ci0gICAgICAgIGRlbGV0ZSBtX25vdGlmaWNh
dGlvbnMudGFrZShub3RpZmljYXRpb24pOwotICAgICAgICBub3RpZmljYXRpb24tPnVuc2V0UGVu
ZGluZ0FjdGl2aXR5KG5vdGlmaWNhdGlvbik7CisgICAgICAgIGRldGFjaE5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb24pOwogICAgIH0KIH0KIAogdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6Y2FuY2VsKE5vdGlmaWNhdGlvbkljb25XcmFwcGVyKiB3cmFwcGVyKQogewotICAgIE5v
dGlmaWNhdGlvbnNRdWV1ZTo6SXRlcmF0b3IgZW5kID0gbV9ub3RpZmljYXRpb25zLmVuZCgpOwot
ICAgIE5vdGlmaWNhdGlvbnNRdWV1ZTo6SXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5i
ZWdpbigpOworICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uRm9y
V3JhcHBlcih3cmFwcGVyKTsKKyAgICBpZiAobm90aWZpY2F0aW9uKQorICAgICAgICBjYW5jZWwo
bm90aWZpY2F0aW9uKTsKK30KKworTm90aWZpY2F0aW9uKiBOb3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdDo6bm90aWZpY2F0aW9uRm9yV3JhcHBlcihjb25zdCBOb3RpZmljYXRpb25JY29uV3Jh
cHBlciogd3JhcHBlcikgY29uc3QKK3sKKyAgICBOb3RpZmljYXRpb25zUXVldWU6OkNvbnN0SXRl
cmF0b3IgZW5kID0gbV9ub3RpZmljYXRpb25zLmVuZCgpOworICAgIE5vdGlmaWNhdGlvbnNRdWV1
ZTo6Q29uc3RJdGVyYXRvciBpdGVyID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCk7CiAgICAgd2hp
bGUgKGl0ZXIgIT0gZW5kICYmIGl0ZXIudmFsdWUoKSAhPSB3cmFwcGVyKQogICAgICAgICBpdGVy
Kys7CiAgICAgaWYgKGl0ZXIgIT0gZW5kKQotICAgICAgICBjYW5jZWwoaXRlci5rZXkoKSk7Cisg
ICAgICAgIHJldHVybiBpdGVyLmtleSgpOworICAgIHJldHVybiAwOwogfQogCiB2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCkBAIC0yNTIsMTEgKzMxMiwxNyBAQCB2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpyZW1vCiAgICAgICAgIGlmIChkdW1wTm90aWZpY2F0
aW9uKQogICAgICAgICAgICAgZHVtcFJlcGxhY2VkSWRUZXh0KG9sZE5vdGlmaWNhdGlvbik7CiAg
ICAgICAgIHNlbmRFdmVudChvbGROb3RpZmljYXRpb24sIGV2ZW50TmFtZXMoKS5jbG9zZUV2ZW50
KTsKLSAgICAgICAgZGVsZXRlIG1fbm90aWZpY2F0aW9ucy50YWtlKG9sZE5vdGlmaWNhdGlvbik7
Ci0gICAgICAgIG9sZE5vdGlmaWNhdGlvbi0+dW5zZXRQZW5kaW5nQWN0aXZpdHkob2xkTm90aWZp
Y2F0aW9uKTsKKyAgICAgICAgZGV0YWNoTm90aWZpY2F0aW9uKG9sZE5vdGlmaWNhdGlvbik7CiAg
ICAgfQogfQogCit2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkZXRhY2hOb3Rp
ZmljYXRpb24oTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCit7CisgICAgZGVsZXRlIG1fbm90
aWZpY2F0aW9ucy50YWtlKG5vdGlmaWNhdGlvbik7CisgICAgbm90aWZpY2F0aW9uLT5kZXRhY2hQ
cmVzZW50ZXIoKTsKKyAgICBub3RpZmljYXRpb24tPnVuc2V0UGVuZGluZ0FjdGl2aXR5KG5vdGlm
aWNhdGlvbik7Cit9CisKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6OmR1bXBS
ZXBsYWNlZElkVGV4dChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKICAgICBpZiAobm90
aWZpY2F0aW9uKQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblBy
ZXNlbnRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmgJKHJldmlzaW9uIDYxMDMwKQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDM2ICszNCw1MSBAQAogCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9u
LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSAiUXRQbGF0
Zm9ybVBsdWdpbi5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAKKyNpbmNsdWRlICJxd2Via2l0cGxh
dGZvcm1wbHVnaW4uaCIKKwogI2luY2x1ZGUgPFFNdWx0aUhhc2g+CiAjaW5jbHVkZSA8UVN5c3Rl
bVRyYXlJY29uPgogCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBLVVJMOwogCi1jbGFzcyBOb3RpZmljYXRp
b25JY29uV3JhcHBlciB7CitjbGFzcyBOb3RpZmljYXRpb25JY29uV3JhcHBlciA6IHB1YmxpYyBR
T2JqZWN0LCBwdWJsaWMgUVdlYk5vdGlmaWNhdGlvbkRhdGEgeworICAgIFFfT0JKRUNUCiBwdWJs
aWM6CiAgICAgTm90aWZpY2F0aW9uSWNvbldyYXBwZXIoKTsKICAgICB+Tm90aWZpY2F0aW9uSWNv
bldyYXBwZXIoKTsKKwogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIGNsb3NlKFRpbWVyPE5v
dGlmaWNhdGlvbkljb25XcmFwcGVyPiopOworICAgIGNvbnN0IFFTdHJpbmcgdGl0bGUoKSBjb25z
dDsKKyAgICBjb25zdCBRU3RyaW5nIG1lc3NhZ2UoKSBjb25zdDsKKyAgICBjb25zdCBRQnl0ZUFy
cmF5IGljb25EYXRhKCkgY29uc3Q7CisKK3B1YmxpYyBRX1NMT1RTOgorICAgIHZvaWQgbm90aWZp
Y2F0aW9uQ2xvc2VkKCk7CisKK3B1YmxpYzoKICNpZm5kZWYgUVRfTk9fU1lTVEVNVFJBWUlDT04K
ICAgICBPd25QdHI8UVN5c3RlbVRyYXlJY29uPiBtX25vdGlmaWNhdGlvbkljb247CiAjZW5kaWYK
KworICAgIE93blB0cjxRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyPiBtX3ByZXNlbnRlcjsKICAg
ICBUaW1lcjxOb3RpZmljYXRpb25JY29uV3JhcHBlcj4gbV9jbG9zZVRpbWVyOwogfTsKIAorI2lm
IEVOQUJMRShOT1RJRklDQVRJT05TKQorCiB0eXBlZGVmIFFIYXNoIDxOb3RpZmljYXRpb24qLCBO
b3RpZmljYXRpb25JY29uV3JhcHBlcio+IE5vdGlmaWNhdGlvbnNRdWV1ZTsKIAogY2xhc3MgTm90
aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQgOiBwdWJsaWMgTm90aWZpY2F0aW9uUHJlc2VudGVy
IHsKIHB1YmxpYzoKICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpOwotICAgIH5O
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCgpIHt9CisgICAgfk5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0KCk7CiAKICAgICAvKiBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIg
aW50ZXJmYWNlICovCiAgICAgdmlydHVhbCBib29sIHNob3coTm90aWZpY2F0aW9uKik7CkBAIC04
NCwxMCArOTksMTMgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KCk7CiAgICAgc3Rh
dGljIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0KiBub3RpZmljYXRpb25QcmVzZW50ZXIo
KTsKIAorICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uRm9yV3JhcHBlcihjb25zdCBOb3Rp
ZmljYXRpb25JY29uV3JhcHBlciopIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgc2VuZEV2
ZW50KE5vdGlmaWNhdGlvbiosIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKTsKICAgICB2
b2lkIGRpc3BsYXlOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKiwgY29uc3QgUUJ5dGVBcnJheSYp
OwogICAgIHZvaWQgcmVtb3ZlUmVwbGFjZWROb3RpZmljYXRpb25Gcm9tUXVldWUoTm90aWZpY2F0
aW9uKik7CisgICAgdm9pZCBkZXRhY2hOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKik7CiAgICAg
dm9pZCBkdW1wUmVwbGFjZWRJZFRleHQoTm90aWZpY2F0aW9uKik7CiAgICAgdm9pZCBkdW1wU2hv
d1RleHQoTm90aWZpY2F0aW9uKik7CiAKQEAgLTk1LDkgKzExMywxMSBAQCBwcml2YXRlOgogICAg
IFFIYXNoPFFTdHJpbmcsICBRTGlzdDxSZWZQdHI8Vm9pZENhbGxiYWNrPiA+ID4gbV9wZW5kaW5n
UGVybWlzc2lvblJlcXVlc3RzOwogICAgIE5vdGlmaWNhdGlvbnNRdWV1ZSBtX25vdGlmaWNhdGlv
bnM7CiAgICAgUU9iamVjdCogbV9yZWNlaXZlcjsKKyAgICBRdFBsYXRmb3JtUGx1Z2luIG1fcGxh
dGZvcm1QbHVnaW47CiB9OwogCisjZW5kaWYKKwogfQogCiAjZW5kaWYKLSNlbmRpZgpJbmRleDog
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcAkocmV2aXNp
b24gNjEwMzApCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw0ICsxNTcsMTMgQEAgUXRBYnN0cmFjdFdlYlBvcHVw
KiBRdFBsYXRmb3JtUGx1Z2luOjpjcgogICAgIHJldHVybiBuZXcgU2VsZWN0SW5wdXRNZXRob2RX
cmFwcGVyKHNlbGVjdG9yKTsKIH0KIAorCitRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBRdFBs
YXRmb3JtUGx1Z2luOjpjcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIoKQoreworICAgIFFXZWJL
aXRQbGF0Zm9ybVBsdWdpbiogcCA9IHBsdWdpbigpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIHAtPmNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcigpOworfQor
CiB9CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmgJ
KHJldmlzaW9uIDYxMDMwKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1Q
bHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiBjbGFzcyBRV2ViU2Vs
ZWN0TWV0aG9kOwogY2xhc3MgUVdlYktpdFBsYXRmb3JtUGx1Z2luOworY2xhc3MgUVdlYk5vdGlm
aWNhdGlvblByZXNlbnRlcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw2ICs1Myw3
IEBAIHB1YmxpYzoKICAgICB+UXRQbGF0Zm9ybVBsdWdpbigpOwogCiAgICAgUXRBYnN0cmFjdFdl
YlBvcHVwKiBjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCgpOworICAgIFFXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIGNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogCiBwcml2YXRlOgogICAg
IGJvb2wgbV9sb2FkZWQ7CkluZGV4OiBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4v
V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhh
bXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
KgorICovCisKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaCIKKworV2ViTm90
aWZpY2F0aW9uV2lkZ2V0OjpXZWJOb3RpZmljYXRpb25XaWRnZXQoKQorICAgIDogUVdpZGdldCgp
Cit7Cit9CisKK1dlYk5vdGlmaWNhdGlvbldpZGdldDo6fldlYk5vdGlmaWNhdGlvbldpZGdldCgp
Cit7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uV2lkZ2V0OjpzaG93Tm90aWZpY2F0aW9uKGNv
bnN0IFFXZWJOb3RpZmljYXRpb25EYXRhKiBkYXRhKQoreworICAgIFFQaXhtYXAgbWFzazsKKyAg
ICBRUGFpbnRlciBwYWludGVyKCZtYXNrKTsKKyAgICBwYWludGVyLmZpbGxSZWN0KDAsIDAsIDMw
MCwgMTAwLCBRdDo6bGlnaHRHcmF5KTsKKyAgICBRQml0bWFwIGJpdG1hcChtYXNrKTsKKyAgICBz
ZXRNYXNrKGJpdG1hcCk7CisgICAgUUdyaWRMYXlvdXQqIGxheW91dCA9IG5ldyBRR3JpZExheW91
dCh0aGlzKTsKKyAgICBsYXlvdXQtPmFkZFdpZGdldChuZXcgUUxhYmVsKGRhdGEtPnRpdGxlKCkp
LCAwLCAwLCAxLCA1KTsKKyAgICBpbnQgbWVzc2FnZVBvc2l0aW9uID0gMDsKKyAgICBRUGl4bWFw
IHBpeG1hcDsKKyAgICBpZiAoZGF0YS0+aWNvbkRhdGEoKS5sZW5ndGgoKSAmJiBwaXhtYXAubG9h
ZEZyb21EYXRhKGRhdGEtPmljb25EYXRhKCkpKSB7CisgICAgICAgIFFMYWJlbCogbGFiZWwgPSBu
ZXcgUUxhYmVsOworICAgICAgICBsYWJlbC0+c2V0UGl4bWFwKHBpeG1hcCk7CisgICAgICAgIGxh
eW91dC0+YWRkV2lkZ2V0KGxhYmVsLCAxLCAwLCAxLCAxKTsKKyAgICAgICAgbWVzc2FnZVBvc2l0
aW9uKys7CisgICAgfQorICAgIFFMYWJlbCogbWVzc2FnZUxhYmVsID0gbmV3IFFMYWJlbChkYXRh
LT5tZXNzYWdlKCkpOworICAgIG1lc3NhZ2VMYWJlbC0+c2V0TWFzayhiaXRtYXApOworICAgIG1l
c3NhZ2VMYWJlbC0+c2V0V29yZFdyYXAodHJ1ZSk7CisgICAgbGF5b3V0LT5hZGRXaWRnZXQobWVz
c2FnZUxhYmVsLCAxLCBtZXNzYWdlUG9zaXRpb24sIDEsIDUgLSBtZXNzYWdlUG9zaXRpb24pOwor
ICAgIHNldExheW91dChsYXlvdXQpOworICAgIHNldEZpeGVkU2l6ZSgzMDAsIDEwMCk7CisgICAg
c2hvdygpOworfQorCitib29sIFdlYk5vdGlmaWNhdGlvbldpZGdldDo6ZXZlbnQoUUV2ZW50KiBl
dikKK3sKKyAgICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZlbnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZSB8
fCBldi0+dHlwZSgpID09IFFFdmVudDo6Q2xvc2UpIHsKKyAgICAgICAgZW1pdCBub3RpZmljYXRp
b25DbG9zZWQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBRV2lk
Z2V0OjpldmVudChldik7Cit9CisKSW5kZXg6IFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBs
dWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
ZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXJfaCAgCisjZGVmaW5lIFdl
Yk5vdGlmaWNhdGlvblByZXNlbnRlcl9oCisKKyNpbmNsdWRlICJxd2Via2l0cGxhdGZvcm1wbHVn
aW4uaCIKKyNpbmNsdWRlIDxRdEd1aT4KKworY2xhc3MgV2ViTm90aWZpY2F0aW9uV2lkZ2V0IDog
cHVibGljIFFXaWRnZXQKK3sKK1FfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViTm90aWZpY2F0aW9u
V2lkZ2V0KCk7CisgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uV2lkZ2V0KCk7CisKKyAgICB2
b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgUVdlYk5vdGlmaWNhdGlvbkRhdGEqKTsKKyAgICBi
b29sIGV2ZW50KFFFdmVudCogZXYpOworCitRX1NJR05BTFM6CisgICAgdm9pZCBub3RpZmljYXRp
b25DbG9zZWQoKTsKK307CisKK2NsYXNzIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciA6IHB1Ymxp
YyBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyCit7CitRX09CSkVDVAorcHVibGljOgorICAgIFdl
Yk5vdGlmaWNhdGlvblByZXNlbnRlcigpCisgICAgOiBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVy
KCkKKyAgICB7CisgICAgICAgIG1fd2lkZ2V0ID0gbmV3IFdlYk5vdGlmaWNhdGlvbldpZGdldCgp
OworICAgICAgICBjb25uZWN0KG1fd2lkZ2V0LCBTSUdOQUwobm90aWZpY2F0aW9uQ2xvc2VkKCkp
LCB0aGlzLCBTSUdOQUwobm90aWZpY2F0aW9uQ2xvc2VkKCkpKTsKKyAgICB9CisgICAgdmlydHVh
bCB+V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKCkgeyBtX3dpZGdldC0+Y2xvc2UoKTsgZGVsZXRl
IG1fd2lkZ2V0OyB9CisKKyAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgUVdlYk5vdGlm
aWNhdGlvbkRhdGEqIGRhdGEpIHsgbV93aWRnZXQtPnNob3dOb3RpZmljYXRpb24oZGF0YSk7IH0K
KyAgICAKK3ByaXZhdGU6CisgICAgV2ViTm90aWZpY2F0aW9uV2lkZ2V0KiBtX3dpZGdldDsKK307
CisKKyNlbmRpZiAvLyBXZWJOb3RpZmljYXRpb25zVWlfaApJbmRleDogV2ViS2l0L3F0L2V4YW1w
bGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0
L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAJKHJldmlzaW9uIDYxMDMwKQor
KysgV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxMCw3ICsyMTAsMTUgQEAgTXVsdGlwbGVTZWxlY3Rpb25Qb3B1cDo6TXVs
dGlwbGVTZWxlY3RpbwogCiBib29sIFdlYlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5z
aW9uIGV4dGVuc2lvbikgY29uc3QKIHsKLSAgICByZXR1cm4gZXh0ZW5zaW9uID09IE11bHRpcGxl
U2VsZWN0aW9uczsKKyAgICBpZiAoZXh0ZW5zaW9uID09IE11bHRpcGxlU2VsZWN0aW9ucykKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKGV4dGVuc2lvbiA9PSBOb3RpZmljYXRpb25zKQor
I2lmIEVOQUJMRV9OT1RJRklDQVRJT05TCisgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBRX0VY
UE9SVF9QTFVHSU4yKHF3ZWJzZWxlY3RpbSwgV2ViUGx1Z2luKQpJbmRleDogV2ViS2l0L3F0L2V4
YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9x
dC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaAkocmV2aXNpb24gNjEwMzApCisr
KyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgV0VCUExVR0lOX0gKIAogI2luY2x1ZGUg
InF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oIgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNl
bnRlci5oIgogCiAjaW5jbHVkZSA8UURpYWxvZz4KIApAQCAtODgsOCArODksMTEgQEAgY2xhc3Mg
V2ViUGx1Z2luIDogcHVibGljIFFPYmplY3QsIHB1YmxpYwogcHVibGljOgogICAgIHZpcnR1YWwg
UVdlYlNlbGVjdE1ldGhvZCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKSBjb25zdCB7IHJldHVy
biBuZXcgV2ViUG9wdXAoKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihF
eHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdDsKKyAgICB2aXJ0dWFsIFFXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXIqIGNyZWF0ZU5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsKKyAgICAgICAg
aWYgKHN1cHBvcnRzRXh0ZW5zaW9uKE5vdGlmaWNhdGlvbnMpKQorICAgICAgICAgICAgcmV0dXJu
IG5ldyBXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQogfTsKIAotCi0KICNlbmRpZiAvLyBXRUJQTFVHSU5fSApJbmRleDogV2ViS2l0L3F0L2V4YW1w
bGVzL3BsYXRmb3JtcGx1Z2luL3BsYXRmb3JtcGx1Z2luLnBybwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvCShyZXZpc2lv
biA2MTAzMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBs
dWdpbi5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTYsOCArNiwxMiBAQCBDT05GSUcgKz0gcGx1Z2lu
CiBERVNURElSID0gJCRbUVRfSU5TVEFMTF9QTFVHSU5TXS93ZWJraXQKIAogU09VUkNFUyArPSBc
Ci0gICAgV2ViUGx1Z2luLmNwcAorICAgIFdlYlBsdWdpbi5jcHAgXAorICAgIFdlYk5vdGlmaWNh
dGlvblByZXNlbnRlci5jcHAKIAogSEVBREVSUyArPSBcCiAgICAgV2ViUGx1Z2luLmggXAotICAg
IHF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCisgICAgcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmggXAor
ICAgIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oCisKKyFjb250YWlucyhERUZJTkVTLCBFTkFC
TEVfTk9USUZJQ0FUSU9OUz0uKTogREVGSU5FUyArPSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCklu
ZGV4OiBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1
Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3
ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9leGFt
cGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Via2l0cGxhdGZvcm1wbHVnaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsMjAgKzU4LDQzIEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIGRpZEhpZGUoKTsKIH07
CiAKK2NsYXNzIFFXZWJOb3RpZmljYXRpb25EYXRhCit7CitwdWJsaWM6CisgICAgdmlydHVhbCBj
b25zdCBRU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUVN0cmlu
ZyBtZXNzYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUUJ5dGVBcnJheSBpY29u
RGF0YSgpIGNvbnN0ID0gMDsKK307CisKK2NsYXNzIFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIg
OiBwdWJsaWMgUU9iamVjdAoreworUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBRV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyKCkge30KKyAgICB2aXJ0dWFsIH5RV2ViTm90aWZpY2F0aW9uUHJlc2VudGVy
KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFFXZWJOb3Rp
ZmljYXRpb25EYXRhKikgPSAwOworICAgIAorUV9TSUdOQUxTOgorICAgIHZvaWQgbm90aWZpY2F0
aW9uQ2xvc2VkKCk7Cit9OworCiBjbGFzcyBRV2ViS2l0UGxhdGZvcm1QbHVnaW4KIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5RV2ViS2l0UGxhdGZvcm1QbHVnaW4oKSB7fQogCiAgICAgZW51bSBF
eHRlbnNpb24gewotICAgICAgICBNdWx0aXBsZVNlbGVjdGlvbnMKKyAgICAgICAgTXVsdGlwbGVT
ZWxlY3Rpb25zLAorICAgICAgICBOb3RpZmljYXRpb25zCiAgICAgfTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0V4dGVuc2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBRV2ViU2VsZWN0TWV0aG9kKiBjcmVhdGVTZWxlY3RJbnB1dE1ldGhvZCgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIGNyZWF0ZU5v
dGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0ID0gMDsKIAogfTsKIAotUV9ERUNMQVJFX0lOVEVS
RkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4sICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3Jt
UGx1Z2luLzEuMSIpOworUV9ERUNMQVJFX0lOVEVSRkFDRShRV2ViS2l0UGxhdGZvcm1QbHVnaW4s
ICJjb20ubm9raWEuUXQuV2ViS2l0LlBsYXRmb3JtUGx1Z2luLzEuMiIpOwogCiAjZW5kaWYgLy8g
UVdFQktJVFBMQVRGT1JNUExVR0lOX0gK
</data>
<flag name="review"
          id="44959"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58596</attachid>
            <date>2010-06-13 10:56:49 -0700</date>
            <delta_ts>2010-06-13 16:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>40005.patch</filename>
            <type>text/plain</type>
            <size>25711</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTA5NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDYtMTMgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9r
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtRdF0gUGxhdGZvcm0gcGx1Z2luIHN1cHBvcnQgZm9yIE5vdGlmaWNhdGlvbnMgVUkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDA1CisKKyAgICAg
ICAgVG8gYXZvaWQgcmFjZSBjb25kaXRpb24gd2hlbiBHQyBpcyBydW4gZHVyaW5nIHNodXRkb3du
LAorICAgICAgICBkaXNjb25uZWN0IHRoZSBOb3RpZmljYXRpb24gZnJvbSB0aGUgTm90aWZpY2F0
aW9uUHJlc2VudGVyCisgICAgICAgIHdoZW4gdGhlIHByZXNlbnRlciBkZWxldGVzIGl0c2VsZi4K
KyAgICAgICAgVGhpcyBjYW5ub3QgYmUgdGVzdGVkIGJ5IGEgbGF5b3V0IHRlc3QsIHRoZSByYWNl
IGNvbmRpdGlvbiBoYXBwZW5zIG9ubHkKKyAgICAgICAgd2hlbiBHQyBpcyBydW4gZHVyaW5nIHNo
dXRkb3duLiBJdCBjYW4gYmUgdGVzdGVkIG1hbnVhbGx5IGJ5IGxvYWRpbmcKKyAgICAgICAgbWFu
dWFsbHkgYW55IG5vdGlmaWNhdGlvbiB0ZXN0IGFuZCBjbG9zaW5nIHRoZSBicm93c2VyLgorCisg
ICAgICAgICogbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpkZXRhY2hQ
cmVzZW50ZXIpOgorCiAyMDEwLTA2LTEyICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9u
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDYxMDMwKQorKysgV2ViQ29y
ZS9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcg
KzkwLDggQEAgTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkgCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBjYW5jZWwoKTsKICAgICB9Ci0gICAgbV9wcmVzZW50ZXIt
Pm5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZCh0aGlzKTsKKyAgICBpZiAobV9wcmVzZW50ZXIp
CisgICAgICAgIG1fcHJlc2VudGVyLT5ub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQodGhpcyk7
CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93KCkgCkluZGV4OiBXZWJDb3JlL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYkNvcmUvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEoKSB7IHJldHVybiBt
X2ljb25EYXRhLmdldCgpOyB9CiAgICAgICAgIHZvaWQgcmVsZWFzZUljb25EYXRhKCkgeyBtX2lj
b25EYXRhID0gMDsgfQogCisgICAgICAgIC8vIENhbGxlZCBpZiB0aGUgcHJlc2VudGVyIGlzIGRl
bGV0ZWQgYmVmb3JlIHRoZSBub3RpZmljYXRpb24gaXMgR0MnZAorICAgICAgICB2b2lkIGRldGFj
aFByZXNlbnRlcigpIHsgbV9wcmVzZW50ZXIgPSAwOyB9CisKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoUmVj
ZWl2ZWQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOwpAQCAtMTE5LDcgKzEyMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgU3RyaW5nIG1fZGlyZWN0aW9uOwogICAgICAgICBTdHJpbmcgbV9yZXBsYWNlSWQ7
CiAKLQogICAgICAgICBlbnVtIE5vdGlmaWNhdGlvblN0YXRlIHsKICAgICAgICAgICAgIElkbGUg
PSAwLAogICAgICAgICAgICAgTG9hZGluZyA9IDEsCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDYxMDk0KQorKysg
V2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDEw
LTA2LTEzICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFBsYXRmb3JtIHBsdWdp
biBzdXBwb3J0IGZvciBOb3RpZmljYXRpb25zIFVJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDAwNQorCisgICAgICAgIEFkZCBhbiBpbnRlcmZhY2Ug
dG8gdGhlIHBsYXRmb3JtIHBsdWdpbiB0byBkaXNwbGF5IG5vdGlmaWNhdGlvbnMuCisgICAgICAg
IEltcGxlbWVudGVkIHRoZSBub3RpZmljYXRpb24gaW4gdGhlIGV4YW1wbGUgcGxhdGZvcm0gcGx1
Z2luLiAKKyAgICAgICAgVGhpcyBpbnRlcmZhY2UgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQg
Y291bGQgYmUgdHVybmVkIG9mZiB3aXRoCisgICAgICAgIGEgYnVpbGQgZmxhZy4gVGhlIHBsYXRm
b3JtIHBsdWdpbiBzaG91bGQgY29udHJvbCBpdHMgb3duIGxpZmVjeWNsZSwKKyAgICAgICAgc28g
bm93IHRoZSBjbG9zZSB0aW1lciBhcHBsaWVzIG9ubHkgd2hlbiB1c2luZyB0aGUgUVN5c3RlbVRy
YXlJY29uLgorICAgICAgICBUaGF0J3MgYmVjYXVzZSBRU3lzdGVtVHJheUljb24gZG9lcyBub3Qg
aW5mb3JtIGl0cyBjYWxsZXIgd2hlbiBpdAorICAgICAgICBpcyBjbG9zZWQuCisKKyAgICAgICAg
Q2hhbmdlZCB0aGUgd2F5IE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0IGlzIGRlbGV0ZWQg
YmVjYXVzZSBpdAorICAgICAgICBpcyBiZWluZyBhY2Nlc3NlZCB3aGVuIEdDIGlzIGRlbGV0aW5n
IHRoZSBOb3RpZmljYXRpb24gb2JqZWN0cy4KKyAgICAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVy
Q2xpZW50UXQgaXMgbm93IGRldGFjaGluZyBpdHNlbGYgZnJvbSB0aGUKKyAgICAgICAgTm90aWZp
Y2F0aW9ucyBiZWZvcmUgaXQgaXMgZGVsZXRlZC4KKworICAgICAgICAqIEFwaS9xd2Via2l0cGxh
dGZvcm1wbHVnaW4uaDoKKyAgICAgICAgKFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6OlFXZWJO
b3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoUVdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cjo6flFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIpOgorICAgICAgICAoUVdlYktpdFBsYXRmb3Jt
UGx1Z2luOjopOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L05vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkljb25XcmFwcGVy
OjpOb3RpZmljYXRpb25JY29uV3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRp
b25JY29uV3JhcHBlcjo6dGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uSWNv
bldyYXBwZXI6Om1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm90aWZpY2F0aW9uSWNvbldy
YXBwZXI6Omljb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRl
ckNsaWVudFF0Ojp+Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Om5vdGlmaWNhdGlvbkNsb3NlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcGxheU5vdGlm
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRR
dDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVu
dFF0Ojpub3RpZmljYXRpb25Gb3JXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0OjpyZW1vdmVSZXBsYWNlZE5vdGlmaWNhdGlvbkZyb21RdWV1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGV0
YWNoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25Q
cmVzZW50ZXJDbGllbnRRdC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1Q
bHVnaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UXRQbGF0Zm9ybVBsdWdpbjo6Y3JlYXRlTm90
aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3Jt
UGx1Z2luLmg6CisgICAgICAgICogZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJOb3RpZmljYXRpb25XaWRnZXQ6
OldlYk5vdGlmaWNhdGlvbldpZGdldCk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25XaWRnZXQ6
On5XZWJOb3RpZmljYXRpb25XaWRnZXQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uV2lkZ2V0
OjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbldpZGdldDo6ZXZl
bnQpOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYk5vdGlmaWNhdGlvblBy
ZXNlbnRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcjo6V2Vi
Tm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvblByZXNlbnRl
cjo6fldlYk5vdGlmaWNhdGlvblByZXNlbnRlcik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXI6OnNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAqIGV4YW1wbGVzL3BsYXRmb3Jt
cGx1Z2luL1dlYlBsdWdpbi5jcHA6CisgICAgICAgIChXZWJQbHVnaW46OnN1cHBvcnRzRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uaDoKKyAg
ICAgICAgKFdlYlBsdWdpbjo6Y3JlYXRlTm90aWZpY2F0aW9uUHJlc2VudGVyKToKKyAgICAgICAg
KiBleGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm86CisgICAgICAgICog
ZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmg6CisgICAgICAg
IChRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyOjpRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKToK
KyAgICAgICAgKFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXI6On5RV2ViTm90aWZpY2F0aW9uUHJl
c2VudGVyKToKKyAgICAgICAgKFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjo6KToKKwogMjAxMC0wNi0w
OCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJraXRwbGF0Zm9ybXBsdWdp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgJ
KHJldmlzaW9uIDYxMDMwKQorKysgV2ViS2l0L3F0L0FwaS9xd2Via2l0cGxhdGZvcm1wbHVnaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjAgKzU4LDQzIEBAIFFfU0lHTkFMUzoKICAgICB2b2lk
IGRpZEhpZGUoKTsKIH07CiAKK2NsYXNzIFFXZWJOb3RpZmljYXRpb25EYXRhCit7CitwdWJsaWM6
CisgICAgdmlydHVhbCBjb25zdCBRU3RyaW5nIHRpdGxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgY29uc3QgUVN0cmluZyBtZXNzYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgY29uc3Qg
UUJ5dGVBcnJheSBpY29uRGF0YSgpIGNvbnN0ID0gMDsKK307CisKK2NsYXNzIFFXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXIgOiBwdWJsaWMgUU9iamVjdAoreworICAgIFFfT0JKRUNUCitwdWJsaWM6
CisgICAgUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcigpIHt9CisgICAgdmlydHVhbCB+UVdlYk5v
dGlmaWNhdGlvblByZXNlbnRlcigpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNh
dGlvbihjb25zdCBRV2ViTm90aWZpY2F0aW9uRGF0YSopID0gMDsKKyAgICAKK1FfU0lHTkFMUzoK
KyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZCgpOworfTsKKwogY2xhc3MgUVdlYktpdFBsYXRm
b3JtUGx1Z2luCiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UVdlYktpdFBsYXRmb3JtUGx1Z2lu
KCkge30KIAogICAgIGVudW0gRXh0ZW5zaW9uIHsKLSAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb25z
CisgICAgICAgIE11bHRpcGxlU2VsZWN0aW9ucywKKyAgICAgICAgTm90aWZpY2F0aW9ucwogICAg
IH07CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVu
c2lvbikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUVdlYlNlbGVjdE1ldGhvZCogY3JlYXRlU2Vs
ZWN0SW5wdXRNZXRob2QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBRV2ViTm90aWZpY2F0aW9u
UHJlc2VudGVyKiBjcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCA9IDA7CiAKIH07
CiAKLVFfREVDTEFSRV9JTlRFUkZBQ0UoUVdlYktpdFBsYXRmb3JtUGx1Z2luLCAiY29tLm5va2lh
LlF0LldlYktpdC5QbGF0Zm9ybVBsdWdpbi8xLjEiKTsKK1FfREVDTEFSRV9JTlRFUkZBQ0UoUVdl
YktpdFBsYXRmb3JtUGx1Z2luLCAiY29tLm5va2lhLlF0LldlYktpdC5QbGF0Zm9ybVBsdWdpbi8x
LjIiKTsKIAogI2VuZGlmIC8vIFFXRUJLSVRQTEFURk9STVBMVUdJTl9ICkluZGV4OiBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdC5jcHAJKHJldmlzaW9uIDYxMDMwKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L05vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJRdFBsYXRmb3Jt
UGx1Z2luLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgInF3ZWJr
aXRnbG9iYWwuaCIKQEAgLTY2LDcgKzY3LDcgQEAgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Ok5v
dGlmaWNhdGlvbkljbwogI2lmbmRlZiBRVF9OT19TWVNURU1UUkFZSUNPTgogICAgIG1fbm90aWZp
Y2F0aW9uSWNvbiA9IDA7CiAjZW5kaWYKLSAgICBtX2Nsb3NlVGltZXIuc3RhcnRPbmVTaG90KG5v
dGlmaWNhdGlvblRpbWVvdXQpOworICAgIG1fcHJlc2VudGVyID0gMDsKIH0KIAogTm90aWZpY2F0
aW9uSWNvbldyYXBwZXI6On5Ob3RpZmljYXRpb25JY29uV3JhcHBlcigpCkBAIC03OCwxMCArNzks
NDUgQEAgdm9pZCBOb3RpZmljYXRpb25JY29uV3JhcHBlcjo6Y2xvc2UoVGltZQogICAgIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+Y2FuY2Vs
KHRoaXMpOwogfQogCitjb25zdCBRU3RyaW5nIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyOjp0aXRs
ZSgpIGNvbnN0Cit7CisgICAgTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24gPSBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCktPm5vdGlmaWNhdGlv
bkZvcldyYXBwZXIodGhpcyk7CisgICAgaWYgKG5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJu
IG5vdGlmaWNhdGlvbi0+Y29udGVudHMoKS50aXRsZSgpOworICAgIHJldHVybiBRU3RyaW5nKCk7
Cit9CisKK2NvbnN0IFFTdHJpbmcgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Om1lc3NhZ2UoKSBj
b25zdAoreworICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uID0gTm90aWZpY2F0aW9uUHJl
c2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpLT5ub3RpZmljYXRpb25Gb3JX
cmFwcGVyKHRoaXMpOworICAgIGlmIChub3RpZmljYXRpb24pCisgICAgICAgIHJldHVybiBub3Rp
ZmljYXRpb24tPmNvbnRlbnRzKCkuYm9keSgpOworICAgIHJldHVybiBRU3RyaW5nKCk7Cit9CisK
K2NvbnN0IFFCeXRlQXJyYXkgTm90aWZpY2F0aW9uSWNvbldyYXBwZXI6Omljb25EYXRhKCkgY29u
c3QKK3sKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+bm90aWZpY2F0aW9uRm9yV3Jh
cHBlcih0aGlzKTsKKyAgICBRQnl0ZUFycmF5IGljb25EYXRhOworICAgIGlmIChub3RpZmljYXRp
b24pIHsKKyAgICAgICAgaWYgKG5vdGlmaWNhdGlvbi0+aWNvbkRhdGEoKSkKKyAgICAgICAgICAg
IGljb25EYXRhID0gUUJ5dGVBcnJheTo6ZnJvbVJhd0RhdGEobm90aWZpY2F0aW9uLT5pY29uRGF0
YSgpLT5kYXRhKCksIG5vdGlmaWNhdGlvbi0+aWNvbkRhdGEoKS0+c2l6ZSgpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIGljb25EYXRhOworfQorCiBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKSA6IG1fY2xpZW50Q291bnQoMCkKIHsKIH0K
IAorTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6On5Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdCgpCit7CisgICAgd2hpbGUgKCFtX25vdGlmaWNhdGlvbnMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIE5vdGlmaWNhdGlvbnNRdWV1ZTo6SXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9u
cy5iZWdpbigpOworICAgICAgICBkZXRhY2hOb3RpZmljYXRpb24oaXRlci5rZXkoKSk7CisgICAg
fQorfQorCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpyZW1vdmVDbGllbnQo
KQogewogICAgIG1fY2xpZW50Q291bnQtLTsKQEAgLTkxLDYgKzEyNywxMSBAQCB2b2lkIE5vdGlm
aWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpyZW1vCiAgICAgfQogfQogCit2b2lkIE5vdGlmaWNh
dGlvbkljb25XcmFwcGVyOjpub3RpZmljYXRpb25DbG9zZWQoKQoreworICAgIE5vdGlmaWNhdGlv
blByZXNlbnRlckNsaWVudFF0Ojpub3RpZmljYXRpb25QcmVzZW50ZXIoKS0+Y2FuY2VsKHRoaXMp
OworfQorCiBib29sIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpzaG93KE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQogewogICAgIC8vIEZJWE1FOiB3b3JrZXJzIGJhc2VkIG5vdGlm
aWNhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgpAQCAtMTIzLDE0ICsxNjQsMjAgQEAgdm9p
ZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcAogICAgICAgICBtZXNzYWdlID0g
bm90aWZpY2F0aW9uLT5jb250ZW50cygpLmJvZHkoKTsKICAgICB9CiAKKyAgICBpZiAobV9wbGF0
Zm9ybVBsdWdpbi5wbHVnaW4oKSAmJiBtX3BsYXRmb3JtUGx1Z2luLnBsdWdpbigpLT5zdXBwb3J0
c0V4dGVuc2lvbihRV2ViS2l0UGxhdGZvcm1QbHVnaW46Ok5vdGlmaWNhdGlvbnMpKQorICAgICAg
ICB3cmFwcGVyLT5tX3ByZXNlbnRlciA9IG1fcGxhdGZvcm1QbHVnaW4uY3JlYXRlTm90aWZpY2F0
aW9uUHJlc2VudGVyKCk7CisKKyAgICBpZiAoIXdyYXBwZXItPm1fcHJlc2VudGVyKSB7CiAjaWZu
ZGVmIFFUX05PX1NZU1RFTVRSQVlJQ09OCi0gICAgUVBpeG1hcCBwaXhtYXA7Ci0gICAgaWYgKGJ5
dGVzLmxlbmd0aCgpICYmIHBpeG1hcC5sb2FkRnJvbURhdGEoYnl0ZXMpKSB7Ci0gICAgICAgIFFJ
Y29uIGljb24ocGl4bWFwKTsKLSAgICAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25JY29uID0g
bmV3IFFTeXN0ZW1UcmF5SWNvbihpY29uKTsKLSAgICB9IGVsc2UKLSAgICAgICAgd3JhcHBlci0+
bV9ub3RpZmljYXRpb25JY29uID0gbmV3IFFTeXN0ZW1UcmF5SWNvbigpOworICAgICAgICB3cmFw
cGVyLT5tX2Nsb3NlVGltZXIuc3RhcnRPbmVTaG90KG5vdGlmaWNhdGlvblRpbWVvdXQpOworICAg
ICAgICBRUGl4bWFwIHBpeG1hcDsKKyAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCgpICYmIHBpeG1h
cC5sb2FkRnJvbURhdGEoYnl0ZXMpKSB7CisgICAgICAgICAgICBRSWNvbiBpY29uKHBpeG1hcCk7
CisgICAgICAgICAgICB3cmFwcGVyLT5tX25vdGlmaWNhdGlvbkljb24gPSBuZXcgUVN5c3RlbVRy
YXlJY29uKGljb24pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHdyYXBwZXItPm1fbm90
aWZpY2F0aW9uSWNvbiA9IG5ldyBRU3lzdGVtVHJheUljb24oKTsKICNlbmRpZgorICAgIH0KIAog
ICAgIHNlbmRFdmVudChub3RpZmljYXRpb24sICJkaXNwbGF5Iik7CiAKQEAgLTEzOCw2ICsxODUs
MTIgQEAgdm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGlzcAogICAgIGlmICht
X25vdGlmaWNhdGlvbnMuZmluZChub3RpZmljYXRpb24pID09IG1fbm90aWZpY2F0aW9ucy5lbmQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHdyYXBwZXItPm1fcHJlc2VudGVyKSB7Cisg
ICAgICAgIHdyYXBwZXItPmNvbm5lY3Qod3JhcHBlci0+bV9wcmVzZW50ZXIuZ2V0KCksIFNJR05B
TChub3RpZmljYXRpb25DbG9zZWQoKSksIHdyYXBwZXIsIFNMT1Qobm90aWZpY2F0aW9uQ2xvc2Vk
KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgICAgIHdyYXBwZXItPm1fcHJlc2VudGVy
LT5zaG93Tm90aWZpY2F0aW9uKHdyYXBwZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAj
aWZuZGVmIFFUX05PX1NZU1RFTVRSQVlJQ09OCiAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25J
Y29uLT5zaG93KCk7CiAgICAgd3JhcHBlci0+bV9ub3RpZmljYXRpb25JY29uLT5zaG93TWVzc2Fn
ZShub3RpZmljYXRpb24tPmNvbnRlbnRzKCkudGl0bGUoKSwgbm90aWZpY2F0aW9uLT5jb250ZW50
cygpLmJvZHkoKSk7CkBAIC0xNTYsMTkgKzIwOSwyNiBAQCB2b2lkIE5vdGlmaWNhdGlvblByZXNl
bnRlckNsaWVudFF0OjpjYW5jCiAgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpJdGVyYXRvciBpdGVy
ID0gbV9ub3RpZmljYXRpb25zLmZpbmQobm90aWZpY2F0aW9uKTsKICAgICBpZiAoaXRlciAhPSBt
X25vdGlmaWNhdGlvbnMuZW5kKCkpIHsKICAgICAgICAgc2VuZEV2ZW50KG5vdGlmaWNhdGlvbiwg
ZXZlbnROYW1lcygpLmNsb3NlRXZlbnQpOwotICAgICAgICBkZWxldGUgbV9ub3RpZmljYXRpb25z
LnRha2Uobm90aWZpY2F0aW9uKTsKLSAgICAgICAgbm90aWZpY2F0aW9uLT51bnNldFBlbmRpbmdB
Y3Rpdml0eShub3RpZmljYXRpb24pOworICAgICAgICBkZXRhY2hOb3RpZmljYXRpb24obm90aWZp
Y2F0aW9uKTsKICAgICB9CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6
OmNhbmNlbChOb3RpZmljYXRpb25JY29uV3JhcHBlciogd3JhcHBlcikKIHsKLSAgICBOb3RpZmlj
YXRpb25zUXVldWU6Okl0ZXJhdG9yIGVuZCA9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsKLSAgICBO
b3RpZmljYXRpb25zUXVldWU6Okl0ZXJhdG9yIGl0ZXIgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4o
KTsKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbkZvcldyYXBw
ZXIod3JhcHBlcik7CisgICAgaWYgKG5vdGlmaWNhdGlvbikKKyAgICAgICAgY2FuY2VsKG5vdGlm
aWNhdGlvbik7Cit9CisKK05vdGlmaWNhdGlvbiogTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50
UXQ6Om5vdGlmaWNhdGlvbkZvcldyYXBwZXIoY29uc3QgTm90aWZpY2F0aW9uSWNvbldyYXBwZXIq
IHdyYXBwZXIpIGNvbnN0Cit7CisgICAgTm90aWZpY2F0aW9uc1F1ZXVlOjpDb25zdEl0ZXJhdG9y
IGVuZCA9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsKKyAgICBOb3RpZmljYXRpb25zUXVldWU6OkNv
bnN0SXRlcmF0b3IgaXRlciA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpOwogICAgIHdoaWxlIChp
dGVyICE9IGVuZCAmJiBpdGVyLnZhbHVlKCkgIT0gd3JhcHBlcikKICAgICAgICAgaXRlcisrOwog
ICAgIGlmIChpdGVyICE9IGVuZCkKLSAgICAgICAgY2FuY2VsKGl0ZXIua2V5KCkpOworICAgICAg
ICByZXR1cm4gaXRlci5rZXkoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uKQpAQCAtMjUyLDExICszMTIsMTcgQEAgdm9pZCBOb3RpZmljYXRp
b25QcmVzZW50ZXJDbGllbnRRdDo6cmVtbwogICAgICAgICBpZiAoZHVtcE5vdGlmaWNhdGlvbikK
ICAgICAgICAgICAgIGR1bXBSZXBsYWNlZElkVGV4dChvbGROb3RpZmljYXRpb24pOwogICAgICAg
ICBzZW5kRXZlbnQob2xkTm90aWZpY2F0aW9uLCBldmVudE5hbWVzKCkuY2xvc2VFdmVudCk7Ci0g
ICAgICAgIGRlbGV0ZSBtX25vdGlmaWNhdGlvbnMudGFrZShvbGROb3RpZmljYXRpb24pOwotICAg
ICAgICBvbGROb3RpZmljYXRpb24tPnVuc2V0UGVuZGluZ0FjdGl2aXR5KG9sZE5vdGlmaWNhdGlv
bik7CisgICAgICAgIGRldGFjaE5vdGlmaWNhdGlvbihvbGROb3RpZmljYXRpb24pOwogICAgIH0K
IH0KIAordm9pZCBOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdDo6ZGV0YWNoTm90aWZpY2F0
aW9uKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworICAgIGRlbGV0ZSBtX25vdGlmaWNh
dGlvbnMudGFrZShub3RpZmljYXRpb24pOworICAgIG5vdGlmaWNhdGlvbi0+ZGV0YWNoUHJlc2Vu
dGVyKCk7CisgICAgbm90aWZpY2F0aW9uLT51bnNldFBlbmRpbmdBY3Rpdml0eShub3RpZmljYXRp
b24pOworfQorCiB2b2lkIE5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0OjpkdW1wUmVwbGFj
ZWRJZFRleHQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiB7CiAgICAgaWYgKG5vdGlmaWNh
dGlvbikKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50
ZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Ob3Rp
ZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9Ob3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCwzNiArMzQsNTEgQEAKIAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbi5oIgog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgIlF0UGxhdGZvcm1Q
bHVnaW4uaCIKICNpbmNsdWRlICJUaW1lci5oIgogCisjaW5jbHVkZSAicXdlYmtpdHBsYXRmb3Jt
cGx1Z2luLmgiCisKICNpbmNsdWRlIDxRTXVsdGlIYXNoPgogI2luY2x1ZGUgPFFTeXN0ZW1UcmF5
SWNvbj4KIAotI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgS1VSTDsKIAotY2xhc3MgTm90aWZpY2F0aW9uSWNv
bldyYXBwZXIgeworY2xhc3MgTm90aWZpY2F0aW9uSWNvbldyYXBwZXIgOiBwdWJsaWMgUU9iamVj
dCwgcHVibGljIFFXZWJOb3RpZmljYXRpb25EYXRhIHsKKyAgICBRX09CSkVDVAogcHVibGljOgog
ICAgIE5vdGlmaWNhdGlvbkljb25XcmFwcGVyKCk7CiAgICAgfk5vdGlmaWNhdGlvbkljb25XcmFw
cGVyKCk7CisKICAgICB2b2lkIGNsb3NlKCk7CiAgICAgdm9pZCBjbG9zZShUaW1lcjxOb3RpZmlj
YXRpb25JY29uV3JhcHBlcj4qKTsKKyAgICBjb25zdCBRU3RyaW5nIHRpdGxlKCkgY29uc3Q7Cisg
ICAgY29uc3QgUVN0cmluZyBtZXNzYWdlKCkgY29uc3Q7CisgICAgY29uc3QgUUJ5dGVBcnJheSBp
Y29uRGF0YSgpIGNvbnN0OworCitwdWJsaWMgUV9TTE9UUzoKKyAgICB2b2lkIG5vdGlmaWNhdGlv
bkNsb3NlZCgpOworCitwdWJsaWM6CiAjaWZuZGVmIFFUX05PX1NZU1RFTVRSQVlJQ09OCiAgICAg
T3duUHRyPFFTeXN0ZW1UcmF5SWNvbj4gbV9ub3RpZmljYXRpb25JY29uOwogI2VuZGlmCisKKyAg
ICBPd25QdHI8UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcj4gbV9wcmVzZW50ZXI7CiAgICAgVGlt
ZXI8Tm90aWZpY2F0aW9uSWNvbldyYXBwZXI+IG1fY2xvc2VUaW1lcjsKIH07CiAKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKwogdHlwZWRlZiBRSGFzaCA8Tm90aWZpY2F0aW9uKiwgTm90aWZp
Y2F0aW9uSWNvbldyYXBwZXIqPiBOb3RpZmljYXRpb25zUXVldWU7CiAKIGNsYXNzIE5vdGlmaWNh
dGlvblByZXNlbnRlckNsaWVudFF0IDogcHVibGljIE5vdGlmaWNhdGlvblByZXNlbnRlciB7CiBw
dWJsaWM6CiAgICAgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKTsKLSAgICB+Tm90aWZp
Y2F0aW9uUHJlc2VudGVyQ2xpZW50UXQoKSB7fQorICAgIH5Ob3RpZmljYXRpb25QcmVzZW50ZXJD
bGllbnRRdCgpOwogCiAgICAgLyogV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyIGludGVy
ZmFjZSAqLwogICAgIHZpcnR1YWwgYm9vbCBzaG93KE5vdGlmaWNhdGlvbiopOwpAQCAtODQsMTAg
Kzk5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNsaWVudCgpOwogICAgIHN0YXRpYyBO
b3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdCogbm90aWZpY2F0aW9uUHJlc2VudGVyKCk7CiAK
KyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbkZvcldyYXBwZXIoY29uc3QgTm90aWZpY2F0
aW9uSWNvbldyYXBwZXIqKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNlbmRFdmVudChO
b3RpZmljYXRpb24qLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSk7CiAgICAgdm9pZCBk
aXNwbGF5Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiosIGNvbnN0IFFCeXRlQXJyYXkmKTsKICAg
ICB2b2lkIHJlbW92ZVJlcGxhY2VkTm90aWZpY2F0aW9uRnJvbVF1ZXVlKE5vdGlmaWNhdGlvbiop
OworICAgIHZvaWQgZGV0YWNoTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiopOwogICAgIHZvaWQg
ZHVtcFJlcGxhY2VkSWRUZXh0KE5vdGlmaWNhdGlvbiopOwogICAgIHZvaWQgZHVtcFNob3dUZXh0
KE5vdGlmaWNhdGlvbiopOwogCkBAIC05NSw5ICsxMTMsMTEgQEAgcHJpdmF0ZToKICAgICBRSGFz
aDxRU3RyaW5nLCAgUUxpc3Q8UmVmUHRyPFZvaWRDYWxsYmFjaz4gPiA+IG1fcGVuZGluZ1Blcm1p
c3Npb25SZXF1ZXN0czsKICAgICBOb3RpZmljYXRpb25zUXVldWUgbV9ub3RpZmljYXRpb25zOwog
ICAgIFFPYmplY3QqIG1fcmVjZWl2ZXI7CisgICAgUXRQbGF0Zm9ybVBsdWdpbiBtX3BsYXRmb3Jt
UGx1Z2luOwogfTsKIAorI2VuZGlmCisKIH0KIAogI2VuZGlmCi0jZW5kaWYKSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5jcHAJKHJldmlzaW9uIDYx
MDMwKQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTcsNCArMTU3LDEzIEBAIFF0QWJzdHJhY3RXZWJQb3B1cCogUXRQ
bGF0Zm9ybVBsdWdpbjo6Y3IKICAgICByZXR1cm4gbmV3IFNlbGVjdElucHV0TWV0aG9kV3JhcHBl
cihzZWxlY3Rvcik7CiB9CiAKKworUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlciogUXRQbGF0Zm9y
bVBsdWdpbjo6Y3JlYXRlTm90aWZpY2F0aW9uUHJlc2VudGVyKCkKK3sKKyAgICBRV2ViS2l0UGxh
dGZvcm1QbHVnaW4qIHAgPSBwbHVnaW4oKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBwLT5jcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKK30KKwogfQpJ
bmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1F0UGxhdGZvcm1QbHVnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUXRQbGF0Zm9ybVBsdWdpbi5oCShyZXZp
c2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RdFBsYXRmb3JtUGx1Z2lu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogY2xhc3MgUVdlYlNlbGVjdE1l
dGhvZDsKIGNsYXNzIFFXZWJLaXRQbGF0Zm9ybVBsdWdpbjsKK2NsYXNzIFFXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXI7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNiArNTMsOSBAQCBw
dWJsaWM6CiAgICAgflF0UGxhdGZvcm1QbHVnaW4oKTsKIAogICAgIFF0QWJzdHJhY3RXZWJQb3B1
cCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKTsKKyAgICBRV2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKiBjcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIoKTsKKworICAgIFFXZWJLaXRQbGF0Zm9y
bVBsdWdpbiogcGx1Z2luKCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRlZDsKQEAgLTU5
LDggKzYzLDYgQEAgcHJpdmF0ZToKICAgICBRUGx1Z2luTG9hZGVyIG1fbG9hZGVyOwogICAgIGJv
b2wgbG9hZCgpOwogICAgIGJvb2wgbG9hZChjb25zdCBRU3RyaW5nJiBmaWxlKTsKLQotICAgIFFX
ZWJLaXRQbGF0Zm9ybVBsdWdpbiogcGx1Z2luKCk7CiB9OwogCiB9CkluZGV4OiBXZWJLaXQvcXQv
ZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0
aW9uUHJlc2VudGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0
Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJXZWJOb3RpZmljYXRp
b25QcmVzZW50ZXIuaCIKKworV2ViTm90aWZpY2F0aW9uV2lkZ2V0OjpXZWJOb3RpZmljYXRpb25X
aWRnZXQoKQorICAgIDogUVdpZGdldCgpCit7Cit9CisKK1dlYk5vdGlmaWNhdGlvbldpZGdldDo6
fldlYk5vdGlmaWNhdGlvbldpZGdldCgpCit7Cit9CisKK3ZvaWQgV2ViTm90aWZpY2F0aW9uV2lk
Z2V0OjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFFXZWJOb3RpZmljYXRpb25EYXRhKiBkYXRhKQor
eworICAgIFFQaXhtYXAgbWFzazsKKyAgICBRUGFpbnRlciBwYWludGVyKCZtYXNrKTsKKyAgICBw
YWludGVyLmZpbGxSZWN0KDAsIDAsIDMwMCwgMTAwLCBRdDo6bGlnaHRHcmF5KTsKKyAgICBRQml0
bWFwIGJpdG1hcChtYXNrKTsKKyAgICBzZXRNYXNrKGJpdG1hcCk7CisgICAgUUdyaWRMYXlvdXQq
IGxheW91dCA9IG5ldyBRR3JpZExheW91dCh0aGlzKTsKKyAgICBsYXlvdXQtPmFkZFdpZGdldChu
ZXcgUUxhYmVsKGRhdGEtPnRpdGxlKCkpLCAwLCAwLCAxLCA1KTsKKyAgICBpbnQgbWVzc2FnZVBv
c2l0aW9uID0gMDsKKyAgICBRUGl4bWFwIHBpeG1hcDsKKyAgICBpZiAoZGF0YS0+aWNvbkRhdGEo
KS5sZW5ndGgoKSAmJiBwaXhtYXAubG9hZEZyb21EYXRhKGRhdGEtPmljb25EYXRhKCkpKSB7Cisg
ICAgICAgIFFMYWJlbCogbGFiZWwgPSBuZXcgUUxhYmVsOworICAgICAgICBsYWJlbC0+c2V0UGl4
bWFwKHBpeG1hcCk7CisgICAgICAgIGxheW91dC0+YWRkV2lkZ2V0KGxhYmVsLCAxLCAwLCAxLCAx
KTsKKyAgICAgICAgbWVzc2FnZVBvc2l0aW9uKys7CisgICAgfQorICAgIFFMYWJlbCogbWVzc2Fn
ZUxhYmVsID0gbmV3IFFMYWJlbChkYXRhLT5tZXNzYWdlKCkpOworICAgIG1lc3NhZ2VMYWJlbC0+
c2V0TWFzayhiaXRtYXApOworICAgIG1lc3NhZ2VMYWJlbC0+c2V0V29yZFdyYXAodHJ1ZSk7Cisg
ICAgbGF5b3V0LT5hZGRXaWRnZXQobWVzc2FnZUxhYmVsLCAxLCBtZXNzYWdlUG9zaXRpb24sIDEs
IDUgLSBtZXNzYWdlUG9zaXRpb24pOworICAgIHNldExheW91dChsYXlvdXQpOworICAgIHNldEZp
eGVkU2l6ZSgzMDAsIDEwMCk7CisgICAgc2hvdygpOworfQorCitib29sIFdlYk5vdGlmaWNhdGlv
bldpZGdldDo6ZXZlbnQoUUV2ZW50KiBldikKK3sKKyAgICBpZiAoZXYtPnR5cGUoKSA9PSBRRXZl
bnQ6Ok1vdXNlQnV0dG9uUmVsZWFzZSB8fCBldi0+dHlwZSgpID09IFFFdmVudDo6Q2xvc2UpIHsK
KyAgICAgICAgZW1pdCBub3RpZmljYXRpb25DbG9zZWQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIHJldHVybiBRV2lkZ2V0OjpldmVudChldik7Cit9CisKSW5kZXg6IFdlYktp
dC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJOb3RpZmljYXRpb25QcmVzZW50ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViTm90aWZp
Y2F0aW9uUHJlc2VudGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxh
dGZvcm1wbHVnaW4vV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBXZWJOb3RpZmljYXRpb25Q
cmVzZW50ZXJfaCAgCisjZGVmaW5lIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlcl9oCisKKyNpbmNs
dWRlICJxd2Via2l0cGxhdGZvcm1wbHVnaW4uaCIKKyNpbmNsdWRlIDxRdEd1aT4KKworY2xhc3Mg
V2ViTm90aWZpY2F0aW9uV2lkZ2V0IDogcHVibGljIFFXaWRnZXQKK3sKKyAgICBRX09CSkVDVAor
cHVibGljOgorICAgIFdlYk5vdGlmaWNhdGlvbldpZGdldCgpOworICAgIHZpcnR1YWwgfldlYk5v
dGlmaWNhdGlvbldpZGdldCgpOworCisgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFFX
ZWJOb3RpZmljYXRpb25EYXRhKik7CisgICAgYm9vbCBldmVudChRRXZlbnQqKTsKKworUV9TSUdO
QUxTOgorICAgIHZvaWQgbm90aWZpY2F0aW9uQ2xvc2VkKCk7Cit9OworCitjbGFzcyBXZWJOb3Rp
ZmljYXRpb25QcmVzZW50ZXIgOiBwdWJsaWMgUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcgorewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKCkKKyAg
ICAgICAgOiBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKCkKKyAgICB7CisgICAgICAgIG1fd2lk
Z2V0ID0gbmV3IFdlYk5vdGlmaWNhdGlvbldpZGdldCgpOworICAgICAgICBjb25uZWN0KG1fd2lk
Z2V0LCBTSUdOQUwobm90aWZpY2F0aW9uQ2xvc2VkKCkpLCB0aGlzLCBTSUdOQUwobm90aWZpY2F0
aW9uQ2xvc2VkKCkpKTsKKyAgICB9CisgICAgdmlydHVhbCB+V2ViTm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCkgeyBtX3dpZGdldC0+Y2xvc2UoKTsgZGVsZXRlIG1fd2lkZ2V0OyB9CisKKyAgICB2b2lk
IHNob3dOb3RpZmljYXRpb24oY29uc3QgUVdlYk5vdGlmaWNhdGlvbkRhdGEqIGRhdGEpIHsgbV93
aWRnZXQtPnNob3dOb3RpZmljYXRpb24oZGF0YSk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgV2Vi
Tm90aWZpY2F0aW9uV2lkZ2V0KiBtX3dpZGdldDsKK307CisKKyNlbmRpZiAvLyBXZWJOb3RpZmlj
YXRpb25zVWlfaApJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dlYlBs
dWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L1dlYlBsdWdpbi5jcHAJKHJldmlzaW9uIDYxMDMwKQorKysgV2ViS2l0L3F0L2V4YW1wbGVzL3Bs
YXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw3ICsyMTAs
MTUgQEAgTXVsdGlwbGVTZWxlY3Rpb25Qb3B1cDo6TXVsdGlwbGVTZWxlY3RpbwogCiBib29sIFdl
YlBsdWdpbjo6c3VwcG9ydHNFeHRlbnNpb24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QKIHsK
LSAgICByZXR1cm4gZXh0ZW5zaW9uID09IE11bHRpcGxlU2VsZWN0aW9uczsKKyAgICBpZiAoZXh0
ZW5zaW9uID09IE11bHRpcGxlU2VsZWN0aW9ucykKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
aWYgKGV4dGVuc2lvbiA9PSBOb3RpZmljYXRpb25zKQorI2lmIEVOQUJMRV9OT1RJRklDQVRJT05T
CisgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBRX0VYUE9SVF9QTFVHSU4yKHF3ZWJzZWxlY3Rp
bSwgV2ViUGx1Z2luKQpJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL1dl
YlBsdWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdp
bi9XZWJQbHVnaW4uaAkocmV2aXNpb24gNjEwMzApCisrKyBXZWJLaXQvcXQvZXhhbXBsZXMvcGxh
dGZvcm1wbHVnaW4vV2ViUGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAK
ICNkZWZpbmUgV0VCUExVR0lOX0gKIAogI2luY2x1ZGUgInF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5o
IgorI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvblByZXNlbnRlci5oIgogCiAjaW5jbHVkZSA8UURp
YWxvZz4KIApAQCAtODgsOCArODksMTEgQEAgY2xhc3MgV2ViUGx1Z2luIDogcHVibGljIFFPYmpl
Y3QsIHB1YmxpYwogcHVibGljOgogICAgIHZpcnR1YWwgUVdlYlNlbGVjdE1ldGhvZCogY3JlYXRl
U2VsZWN0SW5wdXRNZXRob2QoKSBjb25zdCB7IHJldHVybiBuZXcgV2ViUG9wdXAoKTsgfQogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihFeHRlbnNpb24gZXh0ZW5zaW9uKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIqIGNyZWF0ZU5vdGlmaWNh
dGlvblByZXNlbnRlcigpIGNvbnN0IHsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKE5v
dGlmaWNhdGlvbnMpKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJOb3RpZmljYXRpb25QcmVz
ZW50ZXIoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogfTsKIAotCi0KICNlbmRpZiAvLyBX
RUJQTFVHSU5fSApJbmRleDogV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3BsYXRm
b3JtcGx1Z2luLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1w
bHVnaW4vcGxhdGZvcm1wbHVnaW4ucHJvCShyZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9l
eGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9wbGF0Zm9ybXBsdWdpbi5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTYsOCArNiwxMiBAQCBDT05GSUcgKz0gcGx1Z2luCiBERVNURElSID0gJCRbUVRfSU5TVEFM
TF9QTFVHSU5TXS93ZWJraXQKIAogU09VUkNFUyArPSBcCi0gICAgV2ViUGx1Z2luLmNwcAorICAg
IFdlYlBsdWdpbi5jcHAgXAorICAgIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlci5jcHAKIAogSEVB
REVSUyArPSBcCiAgICAgV2ViUGx1Z2luLmggXAotICAgIHF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5o
CisgICAgcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmggXAorICAgIFdlYk5vdGlmaWNhdGlvblByZXNl
bnRlci5oCisKKyFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfTk9USUZJQ0FUSU9OUz0uKTogREVG
SU5FUyArPSBFTkFCTEVfTk9USUZJQ0FUSU9OUz0xCkluZGV4OiBXZWJLaXQvcXQvZXhhbXBsZXMv
cGxhdGZvcm1wbHVnaW4vcXdlYmtpdHBsYXRmb3JtcGx1Z2luLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2luL3F3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCShy
ZXZpc2lvbiA2MTAzMCkKKysrIFdlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9xd2Vi
a2l0cGxhdGZvcm1wbHVnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjAgKzU4LDQzIEBAIFFf
U0lHTkFMUzoKICAgICB2b2lkIGRpZEhpZGUoKTsKIH07CiAKK2NsYXNzIFFXZWJOb3RpZmljYXRp
b25EYXRhCit7CitwdWJsaWM6CisgICAgdmlydHVhbCBjb25zdCBRU3RyaW5nIHRpdGxlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgY29uc3QgUVN0cmluZyBtZXNzYWdlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgY29uc3QgUUJ5dGVBcnJheSBpY29uRGF0YSgpIGNvbnN0ID0gMDsKK307CisK
K2NsYXNzIFFXZWJOb3RpZmljYXRpb25QcmVzZW50ZXIgOiBwdWJsaWMgUU9iamVjdAoreworICAg
IFFfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcigpIHt9Cisg
ICAgdmlydHVhbCB+UVdlYk5vdGlmaWNhdGlvblByZXNlbnRlcigpIHt9CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBRV2ViTm90aWZpY2F0aW9uRGF0YSopID0gMDsK
KyAgICAKK1FfU0lHTkFMUzoKKyAgICB2b2lkIG5vdGlmaWNhdGlvbkNsb3NlZCgpOworfTsKKwog
Y2xhc3MgUVdlYktpdFBsYXRmb3JtUGx1Z2luCiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UVdl
YktpdFBsYXRmb3JtUGx1Z2luKCkge30KIAogICAgIGVudW0gRXh0ZW5zaW9uIHsKLSAgICAgICAg
TXVsdGlwbGVTZWxlY3Rpb25zCisgICAgICAgIE11bHRpcGxlU2VsZWN0aW9ucywKKyAgICAgICAg
Tm90aWZpY2F0aW9ucwogICAgIH07CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNp
b24oRXh0ZW5zaW9uIGV4dGVuc2lvbikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUVdlYlNlbGVj
dE1ldGhvZCogY3JlYXRlU2VsZWN0SW5wdXRNZXRob2QoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBRV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBjcmVhdGVOb3RpZmljYXRpb25QcmVzZW50ZXIo
KSBjb25zdCA9IDA7CiAKIH07CiAKLVFfREVDTEFSRV9JTlRFUkZBQ0UoUVdlYktpdFBsYXRmb3Jt
UGx1Z2luLCAiY29tLm5va2lhLlF0LldlYktpdC5QbGF0Zm9ybVBsdWdpbi8xLjEiKTsKK1FfREVD
TEFSRV9JTlRFUkZBQ0UoUVdlYktpdFBsYXRmb3JtUGx1Z2luLCAiY29tLm5va2lhLlF0LldlYktp
dC5QbGF0Zm9ybVBsdWdpbi8xLjIiKTsKIAogI2VuZGlmIC8vIFFXRUJLSVRQTEFURk9STVBMVUdJ
Tl9ICg==
</data>
<flag name="review"
          id="44963"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="44975"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>