<?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>28806</bug_id>
          
          <creation_ts>2009-08-28 06:44:20 -0700</creation_ts>
          <short_desc>[Qt] Make the WebInspector available as a widget class.</short_desc>
          <delta_ts>2009-09-11 01:27:28 -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>All</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</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>143350</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2009-08-28 06:44:20 -0700</bug_when>
    <thetext>Allows users of QtWebKit to control the location of the WebInspector and to dock it.

Notes about this modification in InspectorController:
 
 void InspectorController::setWindowVisible(bool visible, bool attached)
 {
-    if (visible == m_windowVisible)
+    if (visible == m_windowVisible || !m_frontend)
         return;
 
     m_windowVisible = visible;
 
-    if (!m_frontend)
-        return;
-
     if (m_windowVisible) {
         setAttachedWindow(attached);
         populateScriptObjects();


It prevented correct initialization of the web inspector when calling setWindowVisible two times rapidly on first calls.
After verification, all code path with the state (m_windowsVisible &amp;&amp; !m_frontend) would lead to a crash or not accomplishing any action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143794</commentid>
    <comment_count>1</comment_count>
      <attachid>38850</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2009-09-01 02:03:39 -0700</bug_when>
    <thetext>Created attachment 38850
Changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145132</commentid>
    <comment_count>2</comment_count>
      <attachid>39143</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2009-09-07 05:28:30 -0700</bug_when>
    <thetext>Created attachment 39143
Changes without InspectorController.cpp

Moved the modification of WebCore/inspector/InspectorController.cpp in a different bug (29006)

This patch now affect WebCore only by making InspectorController::setAttachedWindow(...) public</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145279</commentid>
    <comment_count>3</comment_count>
      <attachid>39174</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2009-09-08 01:20:22 -0700</bug_when>
    <thetext>Created attachment 39174
Changes v0.3

- Updated patch format
- Added missing consts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145564</commentid>
    <comment_count>4</comment_count>
      <attachid>39174</attachid>
    <who name="Ariya Hidayat">ariya.hidayat</who>
    <bug_when>2009-09-08 15:11:36 -0700</bug_when>
    <thetext>Comment on attachment 39174
Changes v0.3

&gt; +        [Qt] Make the WebInspector available as a widget class.

Shall we mention it simple &quot;as QWidget&quot; to avoid confusion?

&gt; +    void setAttachedWindow(bool);


&gt; diff --git a/WebKit/qt/Api/qwebelement.h b/WebKit/qt/Api/qwebelement.h
&gt; index bc6f8a9..0be8c5a 100644
&gt; --- a/WebKit/qt/Api/qwebelement.h
&gt; +++ b/WebKit/qt/Api/qwebelement.h
&gt; @@ -142,6 +142,7 @@ private:
&gt;      explicit QWebElement(WebCore::Node*);
&gt;  
&gt;      friend class QWebFrame;
&gt; +    friend class QWebPage;
&gt;      friend class QWebHitTestResult;
&gt;      friend class QWebHitTestResultPrivate;

Do we need to add the new friend in this patch? Where is it necessary?

&gt; +void QWebInspectorPrivate::setFrontend(QWidget* value)

&quot;value&quot; is a weird argument name.

&gt; +++ b/WebKit/qt/Api/qwebinspector_p.h
&gt; @@ -0,0 +1,48 @@
&gt; +/*
&gt; +    Copyright (C) 2008, 2009 Nokia Corporation and/or its subsidiary(-ies)
&gt; +    Copyright (C) 2008 Holger Hans Peter Freyther

Just to confirm: although this is a new file, part of it was taken from another code where Holger has his copyright?

&gt; +        * Api/qwebinspector.cpp: Added.
&gt; +        (QWebInspector::QWebInspector):
&gt; +        (QWebInspector::~QWebInspector):
&gt; +        (QWebInspector::setPage):
&gt; +        (QWebInspector::page):
&gt; +        (QWebInspector::dock):
&gt; +        (QWebInspector::undock):
&gt; +        (QWebInspector::isDocked):
&gt; +        (QWebInspector::sizeHint):
&gt; +        (QWebInspector::event):
&gt; +        (QWebInspector::resizeEvent):
&gt; +        (QWebInspector::showEvent):
&gt; +        (QWebInspector::hideEvent):
&gt; +        (QWebInspectorPrivate::setFrontend):
&gt; +        (QWebInspectorPrivate::setDocked):
&gt; +        (QWebInspectorPrivate::adjustFrontendSize):
&gt; +        * Api/qwebinspector.h: Added.
&gt; +        * Api/qwebinspector_p.h: Added.
&gt; +        (QWebInspectorPrivate::QWebInspectorPrivate):

Do we need to mention all the new functions? Probably fine with only listing the new source files?

Final concern: don&apos;t we need a unit test (or even a manual test) for this?

r- until the issues are addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145686</commentid>
    <comment_count>5</comment_count>
      <attachid>39254</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2009-09-09 01:38:39 -0700</bug_when>
    <thetext>Created attachment 39254
Changes v0.4

(In reply to comment #4)

&gt; Shall we mention it simple &quot;as QWidget&quot; to avoid confusion?
Yes, guess so

&gt; 
&gt; Do we need to add the new friend in this patch? Where is it necessary?
No, not in this patch, removed it

&gt; 
&gt; &quot;value&quot; is a weird argument name.
Changed them

&gt; 
&gt; Just to confirm: although this is a new file, part of it was taken from another
&gt; code where Holger has his copyright?
Ah, copy/paste error. Except on this copyright line I don&apos;t think he needs copyright.

&gt; 
&gt; Do we need to mention all the new functions? Probably fine with only listing
&gt; the new source files?
Removed

&gt; 
&gt; Final concern: don&apos;t we need a unit test (or even a manual test) for this?
I agree, the class is at least used in QtLauncher, but if you think of any other way to test this, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145710</commentid>
    <comment_count>6</comment_count>
      <attachid>39254</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-09 05:23:48 -0700</bug_when>
    <thetext>Comment on attachment 39254
Changes v0.4

Comments from the API discussion in the office here:

&gt; +    void dock();
&gt; +    void undock();
&gt; +    bool isDocked() const;
[...]
&gt; +    void dockRequested();
&gt; +    void undockRequested();

These functions/signals should disappear from the
public API, as the names don&apos;t feel right and we&apos;d like
find a better solution in the future. For now it seems
safer to not expose this aspect of the UI.

&gt; +    QWebInspector* inspector() const;

This function should not be part of the public API, too. It doesn&apos;t
add any real convenience, as the developer always has a pointer to the
inspector anyway, as owner.

&gt; +    void inspectElementTriggered();

This signal should be renamed to

    void QWebPage::webInspectorTriggered(const QWebElement&amp;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146192</commentid>
    <comment_count>7</comment_count>
      <attachid>39347</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2009-09-10 07:26:57 -0700</bug_when>
    <thetext>Created attachment 39347
Changes v0.5

Stuff that may be worth noting about this patch relatively to v0.4:

The inspectedElement argument to the webInspectorTriggered signal is currently, as I saw, always the same as the focused element in the inspector.
However this is mostly luck since we can&apos;t create QWebElements out of non-html nodes and the inspector also seems to focus on the enclosing Html element.

For example if we right click on a text node in the page, the hittestresult will contain a WebCore::Text node.
- This patch will walk the parents until a QWebElement can be created from the hittestresult&apos;s parents before giving it to the signal.
- The web inspector will select the surrounding &lt;font&gt; element, however I would not expect this behavior since the text node is available for selection and it may change in the future.

I documented in the signal that the inspectedElement argument is not garanteed to be the same.
There is also the possibility of not giving this argument in the signal, since the user may expect the same value and it may feel unreliable.

Please tell me what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146317</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-10 13:35:40 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=39347) [details]
&gt; Changes v0.5
&gt; 
&gt; Stuff that may be worth noting about this patch relatively to v0.4:
&gt; 
&gt; The inspectedElement argument to the webInspectorTriggered signal is currently,
&gt; as I saw, always the same as the focused element in the inspector.
&gt; However this is mostly luck since we can&apos;t create QWebElements out of non-html
&gt; nodes and the inspector also seems to focus on the enclosing Html element.
&gt; 
&gt; For example if we right click on a text node in the page, the hittestresult
&gt; will contain a WebCore::Text node.
&gt; - This patch will walk the parents until a QWebElement can be created from the
&gt; hittestresult&apos;s parents before giving it to the signal.
&gt; - The web inspector will select the surrounding &lt;font&gt; element, however I would
&gt; not expect this behavior since the text node is available for selection and it
&gt; may change in the future.
&gt; 
&gt; I documented in the signal that the inspectedElement argument is not garanteed
&gt; to be the same.
&gt; There is also the possibility of not giving this argument in the signal, since
&gt; the user may expect the same value and it may feel unreliable.
&gt; 
&gt; Please tell me what you think.

The patch looks good to me. I&apos;d like to r+ it, but after trying the patch I just noticed that &quot;inspect element&quot; from the context menu in the QtLauncher doesn&apos;t seem to work for me. It comes up in the splitter, but it doesn&apos;t show the inspected element or anything else.

Can you reproduce that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146484</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-11 01:23:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
[...]
&gt; The patch looks good to me. I&apos;d like to r+ it, but after trying the patch I
&gt; just noticed that &quot;inspect element&quot; from the context menu in the QtLauncher
&gt; doesn&apos;t seem to work for me. It comes up in the splitter, but it doesn&apos;t show
&gt; the inspected element or anything else.
&gt; 
&gt; Can you reproduce that?

Turns out that this was an unrelated problem with an outdated qrc file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146485</commentid>
    <comment_count>10</comment_count>
      <attachid>39347</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-11 01:24:20 -0700</bug_when>
    <thetext>Comment on attachment 39347
Changes v0.5

r=me, great stuff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146487</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-09-11 01:27:28 -0700</bug_when>
    <thetext>Landed in r48288</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38850</attachid>
            <date>2009-09-01 02:03:39 -0700</date>
            <delta_ts>2009-09-07 05:28:30 -0700</delta_ts>
            <desc>Changes</desc>
            <filename>qwebinspector.patch</filename>
            <type>text/plain</type>
            <size>33195</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBXZWJDb3JlL0NoYW5nZUxvZyBXZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlOGQx
NjhjLi42MDU1MzQ4IDEwMDY0NAotLS0gV2ViQ29yZS9DaGFuZ2VMb2cKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDgtMjggIEpvY2VseW4gVHVyY290dGUgIDxq
b2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUXRdIE1ha2UgdGhlIFdlYkluc3BlY3RvciBhdmFpbGFibGUg
YXMgYSB3aWRnZXQgY2xhc3MuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpzZXRXaW5kb3dWaXNpYmxlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oOgorCiAyMDA5LTA4LTI4ICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZCAocGF0Y2hpbmcgaW4g
bDE4biBjaGFuZ2UgdGhhdCB3YXMgbWlzc2luZyBkdWUgdG8KZGlmZiAtLWdpdCBXZWJDb3JlL1dl
YkNvcmUucHJvIFdlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggODU5ZmM4Yy4uNWQ5ZWM2YyAxMDA2
NDQKLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8KKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIz
NzEsNiArMjM3MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnBs
dWdpbmZhY3RvcnkuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdp
bi5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFiYXNlLmNwcCBcCisgICAgLi4v
V2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9x
d2Via2l0dmVyc2lvbi5jcHAKIAogCmRpZmYgLS1naXQgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggZGE4ZDIxNC4uODY2YTU2OCAxMDA2NDQKLS0tIFdlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtMzAzLDE0ICszMDMsMTEgQEAgYm9vbCBJbnNwZWN0b3JDb250cm9sbGVy
Ojp3aW5kb3dWaXNpYmxlKCkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRXaW5kb3dW
aXNpYmxlKGJvb2wgdmlzaWJsZSwgYm9vbCBhdHRhY2hlZCkKIHsKLSAgICBpZiAodmlzaWJsZSA9
PSBtX3dpbmRvd1Zpc2libGUpCisgICAgaWYgKHZpc2libGUgPT0gbV93aW5kb3dWaXNpYmxlIHx8
ICFtX2Zyb250ZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3dpbmRvd1Zpc2libGUgPSB2
aXNpYmxlOwogCi0gICAgaWYgKCFtX2Zyb250ZW5kKQotICAgICAgICByZXR1cm47Ci0KICAgICBp
ZiAobV93aW5kb3dWaXNpYmxlKSB7CiAgICAgICAgIHNldEF0dGFjaGVkV2luZG93KGF0dGFjaGVk
KTsKICAgICAgICAgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CmRpZmYgLS1naXQgV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaAppbmRleCBmNGM0YzRjLi41OGY2OTc2IDEwMDY0NAotLS0gV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGF0dGFjaFdpbmRvdygpOwogICAgIHZvaWQgZGV0YWNoV2luZG93KCk7CisgICAgdm9pZCBzZXRB
dHRhY2hlZFdpbmRvdyhib29sKTsKIAogICAgIHZvaWQgdG9nZ2xlU2VhcmNoRm9yTm9kZUluUGFn
ZSgpOwogICAgIGJvb2wgc2VhcmNoaW5nRm9yTm9kZUluUGFnZSgpIHsgcmV0dXJuIG1fc2VhcmNo
aW5nRm9yTm9kZTsgfTsKQEAgLTI3NCw3ICsyNzUsNiBAQCBwcml2YXRlOgogICAgIC8vIEZvbGxv
d2luZyBhcmUgdXNlZCBmcm9tIEluc3BlY3RvckJhY2tlbmQgYW5kIGludGVybmFsbHkuCiAgICAg
dm9pZCBzY3JpcHRPYmplY3RSZWFkeSgpOwogICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgs
IGZsb2F0IHkpIGNvbnN0OwotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3coYm9vbCk7CiAgICAg
dm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpOwogICAgIHZvaWQg
c3RvcmVMYXN0QWN0aXZlUGFuZWwoY29uc3QgU3RyaW5nJiBwYW5lbE5hbWUpOwogICAgIHZvaWQg
Y2xvc2VXaW5kb3coKTsKZGlmZiAtLWdpdCBXZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpIFdlYktp
dC9xdC9BcGkvaGVhZGVycy5wcmkKaW5kZXggOTJhMTIwZC4uY2E5Y2Y5MCAxMDA2NDQKLS0tIFdl
YktpdC9xdC9BcGkvaGVhZGVycy5wcmkKKysrIFdlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKQEAg
LTEwLDQgKzEwLDUgQEAgV0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0QvcXdlYmZyYW1lLmggXAog
ICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmRhdGFiYXNlLmggXAogICAgICAg
ICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmZhY3RvcnkuaCBcCiAgICAgICAgICAgICAg
ICAgICAgICAkJFBXRC9xd2ViaGlzdG9yeS5oIFwKKyAgICAgICAgICAgICAgICAgICAgICQkUFdE
L3F3ZWJpbnNwZWN0b3IuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Via2l0dmVy
c2lvbi5oCmRpZmYgLS1naXQgV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5oIFdlYktpdC9xdC9B
cGkvcXdlYmVsZW1lbnQuaAppbmRleCBiYzZmOGE5Li4wYmU4YzVhIDEwMDY0NAotLS0gV2ViS2l0
L3F0L0FwaS9xd2ViZWxlbWVudC5oCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmgKQEAg
LTE0Miw2ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFFXZWJFbGVtZW50KFdlYkNv
cmU6Ok5vZGUqKTsKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWU7CisgICAgZnJpZW5kIGNs
YXNzIFFXZWJQYWdlOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViSGl0VGVzdFJlc3VsdDsKICAgICBm
cmllbmQgY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOwogCmRpZmYgLS1naXQgV2ViS2l0
L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcCBXZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3IuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YTE5NjMKLS0tIC9kZXYvbnVs
bAorKysgV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcApAQCAtMCwwICsxLDI0OSBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInF3ZWJp
bnNwZWN0b3IuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAicXdlYmVsZW1lbnQuaCIKKyNpbmNsdWRlICJxd2ViaW5z
cGVjdG9yX3AuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisKKyNpbmNsdWRlIDxRUmVzaXpl
RXZlbnQ+CisKKy8vIFRPRE86IGhhbmRsZSB0aGUgIkFsd2F5cyBlbmFibGUiIGNvbW1hbmRzIHdp
dGggUVdlYlNldHRpbmdzCisvLyBUT0RPOiBhZGQgYXBpIHRvIGNoYW5nZSBhbmQgZ2V0IHRoZSBh
Y3RpdmUgdGFiPworLy8gVE9ETzogZmlsbCBvciBkaXNhYmxlIHRoZSBEYXRhYmFzZXMgdGFiPwor
CisvKiEKKyAgICBcY2xhc3MgUVdlYkluc3BlY3RvcgorICAgIFxzaW5jZSA0LjYKKyAgICBcYnJp
ZWYgVGhlIFFXZWJJbnNwZWN0b3IgY2xhc3MgYWxsb3dzIHRoZSBwbGFjZW1lbnQgYW5kIGNvbnRy
b2wgb2YgYQorICAgIFFXZWJQYWdlJ3MgaW5zcGVjdG9yLgorICAgIEFuIGluc3BlY3RvciBhbGxv
d3MgeW91IHRvIHNlZSBhIHBhZ2UgY3VycmVudCBoaWVyYXJjaHkgYW5kIGxvYWRpbmcKKyAgICBz
dGF0aXN0aWNzLgorCisgICAgVGhlIFFXZWJQYWdlIHRvIGJlIGluc3BlY3RlZCBpcyBkZXRlcm1p
bmVkIHdpdGggdGhlIHNldFBhZ2UoKSBtZXRob2QuCisKKyAgICBBIHR5cGljYWwgdXNlIG9mIFFX
ZWJJbnNwZWN0b3IgZm9sbG93czoKKworICAgIFxzbmlwcGV0IHdlYmtpdHNuaXBwZXRzL3F0d2Vi
a2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBldC5jcHAgMAorCisgICAgVGhpcyBjbGFzcyBhY3RzIG1v
c3RseSBhcyBhIGNvbnRhaW5lciBhbmQgYSBjb250cm9sbGVyIGZvciB0aGUgaW5zcGVjdG9yLgor
ICAgIE1vc3Qgb2YgdGhlIHJlc291cmNlcyBuZWVkZWQgZm9yIHRoZSBpbnNwZWN0b3IgYXJlIGJp
bmRlZCB0byBRV2ViUGFnZSwKKyAgICBhbmQgYXJlIGFsbG9jYXRlZCB0aGUgZmlyc3QgdGltZSB0
aGF0OgorICAgIFxsaXN0CisgICAgICAgIFxvIGFuIGVsZW1lbnQgaXMgaW5zcGVjdGVkCisgICAg
ICAgIFxvIHRoZSBRV2ViSW5zcGVjdG9yIGlzIHNob3duLgorICAgIFxlbmRsaXN0CisKKyAgICBc
bm90ZSBBIFFXZWJJbnNwZWN0b3Igd2lsbCBkaXNwbGF5IGEgYmxhbmsgd2lkZ2V0IGlmIGVpdGhl
cjoKKyAgICBcbGlzdAorICAgICAgICBcbyBwYWdlKCkgaXMgbnVsbAorICAgICAgICBcbyBRV2Vi
U2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQgaXMgZmFsc2UKKyAgICBcZW5kbGlzdAor
Ki8KKworLyohCisgICAgQ29uc3RydWN0cyBhbiBlbXB0eSBRV2ViSW5zcGVjdG9yIHdpdGggcGFy
ZW50IFxhIHBhcmVudC4KKyovCitRV2ViSW5zcGVjdG9yOjpRV2ViSW5zcGVjdG9yKFFXaWRnZXQq
IHBhcmVudCkKKyAgICA6IFFXaWRnZXQocGFyZW50KQorICAgICwgZChuZXcgUVdlYkluc3BlY3Rv
clByaXZhdGUodGhpcykpCit7Cit9CisKKy8qIQorICAgIERlc3Ryb3lzIHRoZSBpbnNwZWN0b3Iu
CisqLworUVdlYkluc3BlY3Rvcjo6flFXZWJJbnNwZWN0b3IoKQoreworICAgIC8vIFJlbW92ZSBh
c3NvY2lhdGlvbiBwcmluY2lwYWxseSB0byBwcmV2ZW50IGRlbGV0aW5nIGEgY2hpbGQgZnJvbnRl
bmQKKyAgICBzZXRQYWdlKDApOworfQorCisvKiEKKyAgICBTZXRzIHRoZSBRV2ViUGFnZSB0byBi
ZSBpbnNwZWN0ZWQuCisKKyAgICBFZmZlY3RzIHdpbGwgYmUgcmVmbGVjdGVkIG9uIFFXZWJQYWdl
OjppbnNwZWN0b3IoKS4KKyAgICBUaGVyZSBjYW4gb25seSBiZSBvbmUgUVdlYkluc3BlY3RvciBh
c3NvY2lhdGVkIHdpdGggYSBRV2ViUGFnZQorICAgIGFuZCB2aWNlcyB2ZXJzYS4KKworICAgIENh
bGxpbmcgd2l0aCBcYSBwYWdlIGFzIG51bGwgd2lsbCBicmVhayB0aGUgY3VycmVudCBhc3NvY2lh
dGlvbiwgaWYgYW55LgorCisgICAgXHNhIHBhZ2UoKSwgUVdlYlBhZ2U6Omluc3BlY3RvcigpCisq
Lwordm9pZCBRV2ViSW5zcGVjdG9yOjpzZXRQYWdlKFFXZWJQYWdlKiBwYWdlKQoreworICAgIGlm
IChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5kLT5zZXRJbnNwZWN0b3IoMCk7CisKKyAgICBk
LT5wYWdlID0gcGFnZTsKKworICAgIGlmIChwYWdlKSB7CisgICAgICAgIC8vIFNldHVwIHRoZSBy
ZWNpcHJvY2FsIGFzc29jaWF0aW9uCisgICAgICAgIHBhZ2UtPmQtPnNldEluc3BlY3Rvcih0aGlz
KTsKKworICAgICAgICBwYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEF0dGFjaGVk
V2luZG93KGlzRG9ja2VkKCkpOworICAgIH0KK30KKworLyohCisgICAgUmV0dXJucyB0aGUgaW5z
cGVjdGVkIFFXZWJQYWdlLgorICAgIElmIG5vIHdlYiBwYWdlIGlzIGN1cnJlbnRseSBhc3NvY2lh
dGVkLCBhIG51bGwgcG9pbnRlciBpcyByZXR1cm5lZC4KKyovCitRV2ViUGFnZSogUVdlYkluc3Bl
Y3Rvcjo6cGFnZSgpCit7CisgICAgcmV0dXJuIGQtPnBhZ2U7Cit9CisKKy8qIQorICAgIFRoaXMg
bWV0aG9kIGNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGluc3BlY3RvciB0byBtYXRjaCBh
IGRvY2tlZCBzdGF0ZS4KKyAgICBUaGlzIG9ubHkgY29udHJvbHMgdGhlIGFwcGVhcmFuY2UsIHRo
ZSBhY3R1YWwgZG9ja2luZyBvZiB0aGUgUVdlYkluc3BlY3RvcgorICAgIHdpZGdldCB0byB0aGUg
dXNlciBpbnRlcmZhY2UgbXVzdCBiZSBkb25lIHNlcGFyYXRlbHkuCisKKyAgICBcc2EgdW5kb2Nr
KCksIGlzRG9ja2VkKCksIGRvY2tSZXF1ZXN0ZWQoKSwgdW5kb2NrUmVxdWVzdGVkKCkKKyovCit2
b2lkIFFXZWJJbnNwZWN0b3I6OmRvY2soKQoreworICAgIGQtPmlzRG9ja2VkID0gdHJ1ZTsKKyAg
ICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5zZXRBdHRhY2hlZFdpbmRvdyh0cnVlKTsKK30KKworLyohCisgICAgVGhpcyBtZXRob2QgY2hh
bmdlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgaW5zcGVjdG9yIHRvIG1hdGNoIGFuIHVuZG9ja2Vk
IHN0YXRlLgorICAgIFRoaXMgb25seSBjb250cm9scyB0aGUgYXBwZWFyYW5jZSwgdGhlIGFjdHVh
bCB1bmRvY2tpbmcgb2YgdGhlIFFXZWJJbnNwZWN0b3IKKyAgICB3aWRnZXQgZnJvbSB0aGUgdXNl
ciBpbnRlcmZhY2UgbXVzdCBiZSBkb25lIHNlcGFyYXRlbHkuCisKKyAgICBcc2EgZG9jaygpLCBp
c0RvY2tlZCgpLCBkb2NrUmVxdWVzdGVkKCksIHVuZG9ja1JlcXVlc3RlZCgpCisqLwordm9pZCBR
V2ViSW5zcGVjdG9yOjp1bmRvY2soKQoreworICAgIGQtPmlzRG9ja2VkID0gZmFsc2U7CisgICAg
aWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c2V0QXR0YWNoZWRXaW5kb3coZmFsc2UpOworfQorCisvKiEKKyAgICBSZXR1cm5zIHRydWUgaWYg
dGhlIGluc3BlY3RvciBhcHBlYXJhbmNlIGlzIGN1cnJlbnRseSBpbiBhIGRvY2tlZCBzdGF0ZS4K
KworICAgIFxzYSBkb2NrKCksIHVuZG9jaygpLCBkb2NrUmVxdWVzdGVkKCksIHVuZG9ja1JlcXVl
c3RlZCgpCisqLworYm9vbCBRV2ViSW5zcGVjdG9yOjppc0RvY2tlZCgpCit7CisgICAgcmV0dXJu
IGQtPmlzRG9ja2VkOworfQorCisvKiEgXHJlaW1wICovCitRU2l6ZSBRV2ViSW5zcGVjdG9yOjpz
aXplSGludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFTaXplKDQ1MCwgMzAwKTsKK30KKworLyoh
IFxyZWltcCAqLworYm9vbCBRV2ViSW5zcGVjdG9yOjpldmVudChRRXZlbnQqIGV2KQoreworICAg
IHJldHVybiBRV2lkZ2V0OjpldmVudChldik7Cit9CisKKy8qISBccmVpbXAgKi8KK3ZvaWQgUVdl
Ykluc3BlY3Rvcjo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVudCkKK3sKKyAgICBkLT5h
ZGp1c3RGcm9udGVuZFNpemUoZXZlbnQtPnNpemUoKSk7Cit9CisKKy8qISBccmVpbXAgKi8KK3Zv
aWQgUVdlYkluc3BlY3Rvcjo6c2hvd0V2ZW50KFFTaG93RXZlbnQqIGV2ZW50KQoreworICAgIC8v
IEFsbG93cyBRV2ViSW5zcGVjdG9yOjpzaG93KCkgdG8gaW5pdCB0aGUgaW5zcGVjdG9yLgorICAg
IGlmIChkLT5wYWdlKSB7CisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3BlY3RvckNvbnRyb2xsZXIo
KS0+c2hvdygpOworICAgIH0KK30KKworLyohIFxyZWltcCAqLwordm9pZCBRV2ViSW5zcGVjdG9y
OjpoaWRlRXZlbnQoUUhpZGVFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGQtPnBhZ2UpCisgICAg
ICAgIGQtPnBhZ2UtPmQtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0V2luZG93VmlzaWJsZShm
YWxzZSk7Cit9CisKKy8qISBcaW50ZXJuYWwgKi8KK3ZvaWQgUVdlYkluc3BlY3RvclByaXZhdGU6
OnNldEZyb250ZW5kKFFXaWRnZXQqIHZhbHVlKQoreworICAgIGlmIChmcm9udGVuZCkKKyAgICAg
ICAgZnJvbnRlbmQtPnNldFBhcmVudCgwKTsKKworICAgIGZyb250ZW5kID0gdmFsdWU7CisKKyAg
ICBpZiAoZnJvbnRlbmQpIHsKKyAgICAgICAgZnJvbnRlbmQtPnNldFBhcmVudChxKTsKKyAgICAg
ICAgZnJvbnRlbmQtPnNob3coKTsKKyAgICAgICAgYWRqdXN0RnJvbnRlbmRTaXplKHEtPnNpemUo
KSk7CisgICAgfQorfQorCisvKiEKKyAgICBcaW50ZXJuYWwKKyAgICBDYWxsZWQgaW50ZXJuYWxs
eSBieSB0aGUgaW5zcGVjdG9yLgorKi8KK3ZvaWQgUVdlYkluc3BlY3RvclByaXZhdGU6OnNldERv
Y2tlZChib29sIHZhbHVlKQoreworICAgIGJvb2wgY2hhbmdlZCA9IGlzRG9ja2VkICE9IHZhbHVl
OworICAgIHRoaXMtPmlzRG9ja2VkID0gdmFsdWU7CisgICAgaWYgKGNoYW5nZWQpIHsKKyAgICAg
ICAgaWYgKGlzRG9ja2VkKQorICAgICAgICAgICAgZW1pdCBxLT5kb2NrUmVxdWVzdGVkKCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXQgcS0+dW5kb2NrUmVxdWVzdGVkKCk7CisgICAg
fQorfQorCit2b2lkIFFXZWJJbnNwZWN0b3JQcml2YXRlOjphZGp1c3RGcm9udGVuZFNpemUoY29u
c3QgUVNpemUmIHNpemUpCit7CisgICAgaWYgKGZyb250ZW5kKQorICAgICAgICBmcm9udGVuZC0+
cmVzaXplKHNpemUpOworfQorCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViSW5zcGVjdG9yOjp3aW5k
b3dUaXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYgbmV3VGl0bGUpOworCisgICAgVGhpcyBpcyBl
bWl0dGVkIHRvIHNpZ25hbCB0aGF0IHRoaXMgd2lkZ2V0J3MgdGl0bGUgY2hhbmdlZCB0byBcYSBu
ZXdUaXRsZS4KKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJJbnNwZWN0b3I6OmRvY2tSZXF1
ZXN0ZWQoKTsKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBwcmVz
c2VkIHRoZSBkb2NrIGJ1dHRvbiBpbiB0aGUKKyAgICBpbnNwZWN0b3IgYW5kIGNoYW5nZWQgdGhl
IGFwcGVhcmFuY2UgdG8gYSBkb2NrZWQgc3RhdGUuCisKKyAgICBcc2EgZG9jaygpLCB1bmRvY2so
KSwgaXNEb2NrZWQoKSwgdW5kb2NrUmVxdWVzdGVkKCkKKyovCisKKy8qIQorICAgIFxmbiB2b2lk
IFFXZWJJbnNwZWN0b3I6OnVuZG9ja1JlcXVlc3RlZCgpOworCisgICAgVGhpcyBzaWduYWwgaXMg
ZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHByZXNzZWQgdGhlIGRvY2sgYnV0dG9uIGluIHRoZQorICAg
IGluc3BlY3RvciBhbmQgY2hhbmdlZCB0aGUgYXBwZWFyYW5jZSB0byBhbiBkb2NrZWQgc3RhdGUu
CisKKyAgICBcc2EgZG9jaygpLCB1bmRvY2soKSwgaXNEb2NrZWQoKSwgZG9ja1JlcXVlc3RlZCgp
CisqLworCmRpZmYgLS1naXQgV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmggV2ViS2l0L3F0
L0FwaS9xd2ViaW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MjZmNjY4NQotLS0gL2Rldi9udWxsCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3IuaApA
QCAtMCwwICsxLDcwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFXRUJJTlNQRUNU
T1JfSAorI2RlZmluZSBRV0VCSU5TUEVDVE9SX0gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwu
aCIKKyNpbmNsdWRlICJxd2VicGFnZS5oIgorCisjaW5jbHVkZSAicXdlYnZpZXcuaCIKKworY2xh
c3MgUVdlYkluc3BlY3RvclByaXZhdGU7CitjbGFzcyBRV2ViRWxlbWVudDsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIGNsYXNzIE5vZGU7Cit9OworCisKK2NsYXNzIFFXRUJLSVRfRVhQT1JU
IFFXZWJJbnNwZWN0b3IgOiBwdWJsaWMgUVdpZGdldCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoK
KyAgICBRV2ViSW5zcGVjdG9yKFFXaWRnZXQqIHBhcmVudCA9IDApOworICAgIH5RV2ViSW5zcGVj
dG9yKCk7CisKKyAgICB2b2lkIHNldFBhZ2UoUVdlYlBhZ2UqIHBhZ2UpOworICAgIFFXZWJQYWdl
KiBwYWdlKCk7CisKKyAgICB2b2lkIGRvY2soKTsKKyAgICB2b2lkIHVuZG9jaygpOworICAgIGJv
b2wgaXNEb2NrZWQoKTsKKworICAgIFFTaXplIHNpemVIaW50KCkgY29uc3Q7CisgICAgYm9vbCBl
dmVudChRRXZlbnQqKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgd2luZG93VGl0bGVDaGFuZ2Vk
KGNvbnN0IFFTdHJpbmcmIG5ld1RpdGxlKTsKKyAgICB2b2lkIGRvY2tSZXF1ZXN0ZWQoKTsKKyAg
ICB2b2lkIHVuZG9ja1JlcXVlc3RlZCgpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCByZXNpemVF
dmVudChRUmVzaXplRXZlbnQqIGV2ZW50KTsKKyAgICB2b2lkIHNob3dFdmVudChRU2hvd0V2ZW50
KiBldmVudCk7CisgICAgdm9pZCBoaWRlRXZlbnQoUUhpZGVFdmVudCogZXZlbnQpOworCitwcml2
YXRlOgorICAgIFFXZWJJbnNwZWN0b3JQcml2YXRlKiBkOworCisgICAgZnJpZW5kIGNsYXNzIFFX
ZWJJbnNwZWN0b3JQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsKKyAgICBmcmll
bmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRRdDsKK307CisjZW5kaWYKZGlmZiAtLWdpdCBXZWJLaXQvcXQvQXBpL3F3ZWJp
bnNwZWN0b3JfcC5oIFdlYktpdC9xdC9BcGkvcXdlYmluc3BlY3Rvcl9wLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3ZDcxYgotLS0gL2Rldi9udWxsCisrKyBXZWJLaXQv
cXQvQXBpL3F3ZWJpbnNwZWN0b3JfcC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
cgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyovCisKKyNpZm5kZWYgUVdFQklOU1BFQ1RPUl9QX0gKKyNkZWZpbmUgUVdFQklOU1BFQ1RPUl9Q
X0gKKworY2xhc3MgUVNpemU7CitjbGFzcyBRV2ViSW5zcGVjdG9yOworY2xhc3MgUVdlYlBhZ2U7
CitjbGFzcyBRV2lkZ2V0OworCitjbGFzcyBRV2ViSW5zcGVjdG9yUHJpdmF0ZSB7CitwdWJsaWM6
CisgICAgUVdlYkluc3BlY3RvclByaXZhdGUoUVdlYkluc3BlY3RvciogcXEpCisgICAgOiBxKHFx
KQorICAgICwgcGFnZSgwKQorICAgICwgZnJvbnRlbmQoMCkKKyAgICAsIGlzRG9ja2VkKGZhbHNl
KQorICAgIHt9CisKKyAgICB2b2lkIHNldEZyb250ZW5kKFFXaWRnZXQqIHZhbHVlKTsKKyAgICB2
b2lkIHNldERvY2tlZChib29sIHZhbHVlKTsKKyAgICB2b2lkIGFkanVzdEZyb250ZW5kU2l6ZShj
b25zdCBRU2l6ZSYgc2l6ZSk7CisKKyAgICBRV2ViSW5zcGVjdG9yKiBxOworICAgIFFXZWJQYWdl
KiBwYWdlOworICAgIFFXaWRnZXQqIGZyb250ZW5kOworICAgIGJvb2wgaXNEb2NrZWQ7Cit9Owor
CisjZW5kaWYKZGlmZiAtLWdpdCBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBXZWJLaXQvcXQv
QXBpL3F3ZWJwYWdlLmNwcAppbmRleCAxNGJiOGQwLi43NjE0MTdlIDEwMDY0NAotLS0gV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0y
OCw2ICsyOCw4IEBACiAjaW5jbHVkZSAicXdlYmhpc3RvcnkuaCIKICNpbmNsdWRlICJxd2ViaGlz
dG9yeV9wLmgiCiAjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisjaW5jbHVkZSAicXdlYmluc3Bl
Y3Rvci5oIgorI2luY2x1ZGUgInF3ZWJpbnNwZWN0b3JfcC5oIgogI2luY2x1ZGUgInF3ZWJraXR2
ZXJzaW9uLmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjk5LDYgKzMwMSw5IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVBcHBsaWNhdGlvbkNhY2hlUGF0aElmTmVjZXNzYXJ5KCkKIFFXZWJQ
YWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICA6IHEocXEpCiAg
ICAgLCB2aWV3KDApCisgICAgLCBpbnNwZWN0b3JGcm9udGVuZCgwKQorICAgICwgaW5zcGVjdG9y
KDApCisgICAgLCBpbnNwZWN0b3JJc0ludGVybmFsT25seShmYWxzZSkKICAgICAsIHZpZXdwb3J0
U2l6ZShRU2l6ZSgwLCAwKSkKIHsKICAgICBXZWJDb3JlOjpJbml0aWFsaXplTG9nZ2luZ0NoYW5u
ZWxzSWZOZWNlc3NhcnkoKTsKQEAgLTExMjUsNiArMTEzMCw1NCBAQCBRVmFyaWFudCBRV2ViUGFn
ZTo6aW5wdXRNZXRob2RRdWVyeShRdDo6SW5wdXRNZXRob2RRdWVyeSBwcm9wZXJ0eSkgY29uc3QK
IH0KIAogLyohCisgICAgXGludGVybmFsCisqLwordm9pZCBRV2ViUGFnZVByaXZhdGU6OnNldElu
c3BlY3RvcihRV2ViSW5zcGVjdG9yKiBpbnNwKQoreworICAgIGlmIChpbnNwZWN0b3IpCisgICAg
ICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoMCk7CisKKyAgICBpZiAoaW5zcGVjdG9ySXNJ
bnRlcm5hbE9ubHkpIHsKKyAgICAgICAgUVdlYkluc3BlY3RvciogaW5zcFRvRGVsZXRlID0gaW5z
cGVjdG9yOworICAgICAgICBpbnNwZWN0b3IgPSAwOworICAgICAgICBpbnNwZWN0b3JJc0ludGVy
bmFsT25seSA9IGZhbHNlOworICAgICAgICBkZWxldGUgaW5zcFRvRGVsZXRlOyAgICAvLyBEZWxl
dGUgYWZ0ZXIgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24KKyAgICB9CisKKyAgICBpbnNw
ZWN0b3IgPSBpbnNwOworCisgICAgLy8gR2l2ZSBpbnNwZWN0b3IgZnJvbnRlbmQgd2ViIHZpZXcg
aWYgcHJldmlvdXNseSBjcmVhdGVkCisgICAgaWYgKGluc3BlY3RvciAmJiBpbnNwZWN0b3JGcm9u
dGVuZCkKKyAgICAgICAgaW5zcGVjdG9yLT5kLT5zZXRGcm9udGVuZChpbnNwZWN0b3JGcm9udGVu
ZCk7Cit9CisKKy8qIQorICAgIFxpbnRlcm5hbAorICAgIFJldHVybnMgdGhlIGluc3BlY3RvciBh
bmQgY3JlYXRlcyBpdCBpZiBpdCB3YXNuJ3QgY3JlYXRlZCB5ZXQuCisgICAgVGhlIGluc3RhbmNl
IGNyZWF0ZWQgaGVyZSB3aWxsIG5vdCBiZSBhdmFpbGFibGUgdGhyb3VnaCBRV2ViUGFnZSdzIEFQ
SS4KKyovCitRV2ViSW5zcGVjdG9yKiBRV2ViUGFnZVByaXZhdGU6OmdldE9yQ3JlYXRlSW5zcGVj
dG9yKCkKK3sKKyAgICBpZiAoIWluc3BlY3RvcikgeworICAgICAgICBRV2ViSW5zcGVjdG9yKiBp
bnNwID0gbmV3IFFXZWJJbnNwZWN0b3I7CisgICAgICAgIGluc3AtPnNldFBhZ2UocSk7CisgICAg
ICAgIGluc3AtPmNvbm5lY3QocSwgU0lHTkFMKGluc3BlY3RFbGVtZW50VHJpZ2dlcmVkKCkpLCBT
TE9UKHNob3coKSkpOworICAgICAgICBpbnNwLT5zaG93KCk7CisgICAgICAgIGluc3BlY3Rvcklz
SW50ZXJuYWxPbmx5ID0gdHJ1ZTsKKworICAgICAgICBRX0FTU0VSVChpbnNwZWN0b3IpOyAvLyBB
c3NvY2lhdGVkIHRocm91Z2ggUVdlYkluc3BlY3Rvcjo6c2V0UGFnZSh0aGlzKQorICAgIH0KKyAg
ICByZXR1cm4gaW5zcGVjdG9yOworfQorCisvKiEgXGludGVybmFsICovCitJbnNwZWN0b3JDb250
cm9sbGVyKiBRV2ViUGFnZVByaXZhdGU6Omluc3BlY3RvckNvbnRyb2xsZXIoKQoreworICAgIHJl
dHVybiBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Cit9CisKKworLyohCiAgICBcZW51bSBR
V2ViUGFnZTo6RmluZEZsYWcKIAogICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUgb3B0aW9ucyBh
dmFpbGFibGUgdG8gUVdlYlBhZ2UncyBmaW5kVGV4dCgpIGZ1bmN0aW9uLiBUaGUgb3B0aW9ucwpA
QCAtMTMzNCw2ICsxMzg3LDggQEAgUVdlYlBhZ2U6On5RV2ViUGFnZSgpCiAgICAgRnJhbWVMb2Fk
ZXIgKmxvYWRlciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGlmIChs
b2FkZXIpCiAgICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBhcmVudCgpOworICAgIGlmIChkLT5p
bnNwZWN0b3IpCisgICAgICAgIGQtPmluc3BlY3Rvci0+c2V0UGFnZSgwKTsKICAgICBkZWxldGUg
ZDsKIH0KIApAQCAtMTQwOCw2ICsxNDYzLDIzIEBAIFFXaWRnZXQgKlFXZWJQYWdlOjp2aWV3KCkg
Y29uc3QKIH0KIAogLyohCisgICAgUmV0dXJucyB0aGUgd2ViIGluc3BlY3RvciB3aWRnZXQgYXNz
b2NpYXRlZCB3aXRoIHRoZSB3ZWIgcGFnZS4KKworICAgIFRoaXMgbWV0aG9kIHJldHVybnMgbnVs
bCBpZiBubyBRV2ViSW5zcGVjdG9yIGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoaXMKKyAgICBwYWdl
LiBBbiBpbnRlcm5hbCBpbnNwZWN0b3IgaXMgdXNlZCBpZiB0aGUgdXNlciBzZWxlY3QgSW5zcGVj
dCBmcm9tIHRoZQorICAgIGNvbnRleHQgbWVudSBtZWFud2hpbGUuCisKKyAgICBcc2EgUVdlYklu
c3BlY3Rvcjo6c2V0UGFnZSgpLCBRV2ViSW5zcGVjdG9yOjpwYWdlKCkKKyAgICBcc2luY2UgNC42
CisqLworUVdlYkluc3BlY3RvciogUVdlYlBhZ2U6Omluc3BlY3RvcigpIGNvbnN0Cit7CisgICAg
aWYgKGQtPmluc3BlY3RvcklzSW50ZXJuYWxPbmx5KQorICAgICAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gZC0+aW5zcGVjdG9yOworfQorCisvKiEKICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCB3aGVuZXZlciBhIEphdmFTY3JpcHQgcHJvZ3JhbSB0cmllcyB0byBwcmludCBhIFxhIG1lc3Nh
Z2UgdG8gdGhlIHdlYiBicm93c2VyJ3MgY29uc29sZS4KIAogICAgIEZvciBleGFtcGxlIGluIGNh
c2Ugb2YgZXZhbHVhdGlvbiBlcnJvcnMgdGhlIHNvdXJjZSBVUkwgbWF5IGJlIHByb3ZpZGVkIGlu
IFxhIHNvdXJjZUlEIGFzIHdlbGwgYXMgdGhlIFxhIGxpbmVOdW1iZXIuCkBAIC0xNjMwLDEwICsx
NzAyLDExIEBAIHZvaWQgUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGFjdGlvbiwg
Ym9vbCBjaGVja2VkKQogICAgICAgICAgICAgZWRpdG9yLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlv
bihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6Ci0gICAgICAgICAgICBpZiAoIWQtPmhpdFRlc3RSZXN1
bHQuaXNOdWxsKCkpCisgICAgICAgICAgICBlbWl0IGluc3BlY3RFbGVtZW50VHJpZ2dlcmVkKCk7
CisgICAgICAgICAgICBpZiAoIWQtPmhpdFRlc3RSZXN1bHQuaXNOdWxsKCkpIHsKKyAgICAgICAg
ICAgICAgICBkLT5nZXRPckNyZWF0ZUluc3BlY3RvcigpOwogICAgICAgICAgICAgICAgIGQtPnBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdChkLT5oaXRUZXN0UmVzdWx0LmQtPmlu
bmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbW1h
bmQgPSBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckNvbW1hbmRGb3JXZWJBY3Rpb25zKGFjdGlvbik7
CkBAIC0yOTQ2LDYgKzMwMTksMTYgQEAgcXVpbnQ2NCBRV2ViUGFnZTo6Ynl0ZXNSZWNlaXZlZCgp
IGNvbnN0CiAqLwogCiAvKiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6aW5zcGVjdEVsZW1lbnRU
cmlnZ2VyZWQoKQorICAgIFxzaW5jZSA0LjYKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQg
d2hlbiB0cmlnZ2VyQWN0aW9uKCkgaXMgY2FsbGVkIHdpdGggYSBXZWJBY3Rpb246Okluc3BlY3RF
bGVtZW50LgorICAgIEluc3BlY3RpbmcgYW4gZWxlbWVudCB0aHJvdWdoIHRoZSBwYWdlJ3MgY29u
dGV4dCBtZW51IHdpbGwgYWxzbyBlbWl0IHRoaXMgc2lnbmFsLgorCisgICAgXHNhIFFXZWJJbnNw
ZWN0b3IKKyovCisKKy8qIQogICAgIFxmbiB2b2lkIFFXZWJQYWdlOjp0b29sQmFyVmlzaWJpbGl0
eUNoYW5nZVJlcXVlc3RlZChib29sIHZpc2libGUpCiAKICAgICBUaGlzIHNpZ25hbCBpcyBlbWl0
dGVkIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB0b29sYmFyIGluIGEgd2ViIGJyb3dz
ZXIKZGlmZiAtLWdpdCBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggV2ViS2l0L3F0L0FwaS9xd2Vi
cGFnZS5oCmluZGV4IDI0NzQxYTEuLjE4MWNhNDQgMTAwNjQ0Ci0tLSBXZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmgKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApAQCAtNDcsMTIgKzQ3LDE1IEBA
IGNsYXNzIFFXZWJOZXR3b3JrSW50ZXJmYWNlOwogY2xhc3MgUVdlYlBsdWdpbkZhY3Rvcnk7CiBj
bGFzcyBRV2ViSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFFXZWJIaXN0b3J5SXRlbTsKK2NsYXNzIFFX
ZWJJbnNwZWN0b3I7CitjbGFzcyBRV2ViRWxlbWVudDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIENocm9tZUNsaWVudFF0OwogICAgIGNsYXNzIEVkaXRvckNsaWVudFF0OwogICAg
IGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50UXQ7
CisgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwogCkBAIC0yMDEsNiArMjA0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VmlldyhRV2lkZ2V0ICp2aWV3KTsKICAgICBRV2lkZ2V0ICp2aWV3KCkg
Y29uc3Q7CiAKKyAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoKSBjb25zdDsKICAgICBib29s
IGlzTW9kaWZpZWQoKSBjb25zdDsKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgUVVuZG9T
dGFjayAqdW5kb1N0YWNrKCkgY29uc3Q7CkBAIC0zMDYsNiArMzEwLDcgQEAgUV9TSUdOQUxTOgog
ICAgIHZvaWQgd2luZG93Q2xvc2VSZXF1ZXN0ZWQoKTsKICAgICB2b2lkIHByaW50UmVxdWVzdGVk
KFFXZWJGcmFtZSAqZnJhbWUpOwogICAgIHZvaWQgbGlua0NsaWNrZWQoY29uc3QgUVVybCAmdXJs
KTsKKyAgICB2b2lkIGluc3BlY3RFbGVtZW50VHJpZ2dlcmVkKCk7CiAKICAgICB2b2lkIHRvb2xC
YXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVzdGVkKGJvb2wgdmlzaWJsZSk7CiAgICAgdm9pZCBzdGF0
dXNCYXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVzdGVkKGJvb2wgdmlzaWJsZSk7CkBAIC0zNDYsMTEg
KzM1MSwxMyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBRX1BSSVZBVEVfU0xPVChk
LCB2b2lkIF9xX2NsZWFudXBMZWFrTWVzc2FnZXMoKSkKICNlbmRpZgorCiAgICAgUVdlYlBhZ2VQ
cml2YXRlICpkOwogCiAgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZTsKICAgICBmcmllbmQgY2xh
c3MgUVdlYlBhZ2VQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViVmlldzsKKyAgICBmcmll
bmQgY2xhc3MgUVdlYkluc3BlY3RvcjsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OwogICAg
IGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OwpkaWZmIC0tZ2l0IFdl
YktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCmluZGV4
IDg3YzYyNGQuLmE4YzY4OWMgMTAwNjQ0Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAor
KysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKQEAgLTY1LDYgKzY1LDggQEAgY2xhc3MgUU1l
bnU7CiBjbGFzcyBRQml0QXJyYXk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKK2NsYXNzIFFXZWJJbnNw
ZWN0b3I7CisKIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgUVdlYlBhZ2VQ
cml2YXRlKFFXZWJQYWdlKik7CkBAIC0xMTEsNiArMTEzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGxlYXZlRXZlbnQoUUV2ZW50ICopOwogICAgIGJvb2wgaGFuZGxlU2Nyb2xsaW5nKFFLZXlFdmVu
dCosIFdlYkNvcmU6OkZyYW1lKik7CiAKKyAgICB2b2lkIHNldEluc3BlY3RvcihRV2ViSW5zcGVj
dG9yKik7CisgICAgUVdlYkluc3BlY3RvciogZ2V0T3JDcmVhdGVJbnNwZWN0b3IoKTsKKyAgICBX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CisKICNp
Zm5kZWYgUVRfTk9fU0hPUlRDVVQKICAgICBzdGF0aWMgUVdlYlBhZ2U6OldlYkFjdGlvbiBlZGl0
b3JBY3Rpb25Gb3JLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KTsKICNlbmRpZgpAQCAtMTY4LDYg
KzE3NCwxMCBAQCBwdWJsaWM6CiAKICAgICBRV2ViUGx1Z2luRmFjdG9yeSAqcGx1Z2luRmFjdG9y
eTsKIAorICAgIFFXaWRnZXQqIGluc3BlY3RvckZyb250ZW5kOworICAgIFFXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvcjsKKyAgICBib29sIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5OyAvLyBUcnVlIGlm
IGNyZWF0ZWQgdGhyb3VnaCB0aGUgSW5zcGVjdCBjb250ZXh0IG1lbnUgYWN0aW9uCisKICAgICBz
dGF0aWMgYm9vbCBkcnRSdW47CiB9OwogCmRpZmYgLS1naXQgV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuY3BwIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAxYzgzYTRkLi41
MzRlNTM4IDEwMDY0NAotLS0gV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisrKyBXZWJL
aXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTMxNyw4ICszMTcsOSBAQCBRV2ViU2V0dGlu
Z3MqIFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKQogICAgIFx2YWx1ZSBKYXZhc2NyaXB0
Q2FuQWNjZXNzQ2xpcGJvYXJkIFNwZWNpZmllcyB3aGV0aGVyIEphdmFTY3JpcHQgcHJvZ3JhbXMK
ICAgICAgICAgY2FuIHJlYWQgb3Igd3JpdGUgdG8gdGhlIGNsaXBib2FyZC4KICAgICBcdmFsdWUg
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCBFbmFibGVzIGV4dHJhIHRvb2xzIGZvciBXZWIgZGV2ZWxv
cGVycy4KLSAgICAgICAgQ3VycmVudGx5IHRoaXMgZW5hYmxlcyB0aGUgIkluc3BlY3QiIGVsZW1l
bnQgaW4gdGhlIGNvbnRleHQgbWVudSwKLSAgICB3aGljaCBzaG93cyB0aGUgV2ViS2l0IFdlYklu
c3BlY3RvciBmb3Igd2ViIHNpdGUgZGVidWdnaW5nLgorICAgICAgICBDdXJyZW50bHkgdGhpcyBl
bmFibGVzIHRoZSAiSW5zcGVjdCIgZWxlbWVudCBpbiB0aGUgY29udGV4dCBtZW51IGFzCisgICAg
ICAgIHdlbGwgYXMgdGhlIHVzZSBvZiBRV2ViSW5zcGVjdG9yIHdoaWNoIGNvbnRyb2xzIHRoZSBX
ZWJLaXQgV2ViSW5zcGVjdG9yCisgICAgICAgIGZvciB3ZWIgc2l0ZSBkZWJ1Z2dpbmcuCiAgICAg
XHZhbHVlIExpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4gU3BlY2lmaWVzIHdoZXRoZXIgaHlwZXJs
aW5rcyBzaG91bGQgYmUKICAgICAgICAgaW5jbHVkZWQgaW4gdGhlIGtleWJvYXJkIGZvY3VzIGNo
YWluLgogICAgIFx2YWx1ZSBab29tVGV4dE9ubHkgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIHpvb20g
ZmFjdG9yIG9uIGEgZnJhbWUgYXBwbGllcyB0bwpkaWZmIC0tZ2l0IFdlYktpdC9xdC9DaGFuZ2VM
b2cgV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBmYzhlMzI4Li43NTg1Zjg2IDEwMDY0NAotLS0g
V2ViS2l0L3F0L0NoYW5nZUxvZworKysgV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4
IEBACisyMDA5LTA4LTI4ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBub2tp
YS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W1F0XSBNYWtlIHRoZSBXZWJJbnNwZWN0b3IgYXZhaWxhYmxlIGFzIGEgd2lkZ2V0IGNsYXNzLgor
CisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5o
OgorICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChRV2Vi
SW5zcGVjdG9yOjpRV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6On5RV2Vi
SW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OnNldFBhZ2UpOgorICAgICAgICAo
UVdlYkluc3BlY3Rvcjo6cGFnZSk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpkb2NrKToKKyAg
ICAgICAgKFFXZWJJbnNwZWN0b3I6OnVuZG9jayk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpp
c0RvY2tlZCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpzaXplSGludCk6CisgICAgICAgIChR
V2ViSW5zcGVjdG9yOjpldmVudCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpyZXNpemVFdmVu
dCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpzaG93RXZlbnQpOgorICAgICAgICAoUVdlYklu
c3BlY3Rvcjo6aGlkZUV2ZW50KToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3JQcml2YXRlOjpzZXRG
cm9udGVuZCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yUHJpdmF0ZTo6c2V0RG9ja2VkKToKKyAg
ICAgICAgKFFXZWJJbnNwZWN0b3JQcml2YXRlOjphZGp1c3RGcm9udGVuZFNpemUpOgorICAgICAg
ICAqIEFwaS9xd2ViaW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2ViaW5zcGVj
dG9yX3AuaDogQWRkZWQuCisgICAgICAgIChRV2ViSW5zcGVjdG9yUHJpdmF0ZTo6UVdlYkluc3Bl
Y3RvclByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OnNldEluc3BlY3Rvcik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmdldE9yQ3JlYXRlSW5z
cGVjdG9yKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5zcGVjdG9yQ29udHJvbGxlcik6
CisgICAgICAgIChRV2ViUGFnZTo6flFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdlOjppbnNw
ZWN0b3IpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOgorICAgICAgICAqIEFw
aS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAgICogQXBp
L3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAg
ICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6ZG9ja0lu
c3BlY3Rvcik6CisgICAgICAgIChNYWluV2luZG93Ojp1bmRvY2tJbnNwZWN0b3IpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6Okluc3BlY3RvckNsaWVudFdlYlBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6Y3JlYXRlV2luZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzaG93V2luZG93KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudFF0OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRRdDo6YXR0YWNoV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudFF0OjpkZXRhY2hXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5oOgorICAgICAgICAqIGRvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJr
aXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcDogQWRkZWQuCisgICAgICAgICh3cmFwSW5GdW5j
dGlvbik6CisKIDIwMDktMDgtMjcgIEplZHJ6ZWogTm93YWNraSAgPGplZHJ6ZWoubm93YWNraUBu
b2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQXJpeWEgSGlkYXlhdC4KZGlmZiAtLWdp
dCBXZWJLaXQvcXQvUXRMYXVuY2hlci9tYWluLmNwcCBXZWJLaXQvcXQvUXRMYXVuY2hlci9tYWlu
LmNwcAppbmRleCAzNzkwOWFmLi5hZWQyOWQ4IDEwMDY0NAotLS0gV2ViS2l0L3F0L1F0TGF1bmNo
ZXIvbWFpbi5jcHAKKysrIFdlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8cXdlYnNldHRpbmdzLmg+
CiAjaW5jbHVkZSA8cXdlYmVsZW1lbnQuaD4KKyNpbmNsdWRlIDxxd2ViaW5zcGVjdG9yLmg+CiAK
ICNpbmNsdWRlIDxRdEd1aT4KICNpbmNsdWRlIDxRRGVidWc+CkBAIC03MSwxMiArNzIsMTIgQEAg
cHVibGljOgogICAgIE1haW5XaW5kb3coUVN0cmluZyB1cmwgPSBRU3RyaW5nKCkpOiBjdXJyZW50
Wm9vbSgxMDApIHsKICAgICAgICAgc2V0QXR0cmlidXRlKFF0OjpXQV9EZWxldGVPbkNsb3NlKTsK
IAotICAgICAgICB2aWV3ID0gbmV3IFFXZWJWaWV3KHRoaXMpOwotICAgICAgICBzZXRDZW50cmFs
V2lkZ2V0KHZpZXcpOworICAgICAgICBRU3BsaXR0ZXIqIHNwbGl0dGVyID0gbmV3IFFTcGxpdHRl
cihRdDo6VmVydGljYWwsIHRoaXMpOworICAgICAgICBzZXRDZW50cmFsV2lkZ2V0KHNwbGl0dGVy
KTsKIAorICAgICAgICB2aWV3ID0gbmV3IFFXZWJWaWV3KHNwbGl0dGVyKTsKICAgICAgICAgV2Vi
UGFnZSogcGFnZSA9IG5ldyBXZWJQYWdlKHZpZXcpOwogICAgICAgICB2aWV3LT5zZXRQYWdlKHBh
Z2UpOwotICAgICAgICAKICAgICAgICAgY29ubmVjdCh2aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVk
KGJvb2wpKSwKICAgICAgICAgICAgICAgICB0aGlzLCBTTE9UKGxvYWRGaW5pc2hlZCgpKSk7CiAg
ICAgICAgIGNvbm5lY3QodmlldywgU0lHTkFMKHRpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5nJikp
LApAQCAtODUsNiArODYsMTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHRoaXMsIFNMT1Qo
c2hvd0xpbmtIb3Zlcihjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYpKSk7CiAgICAgICAg
IGNvbm5lY3Qodmlldy0+cGFnZSgpLCBTSUdOQUwod2luZG93Q2xvc2VSZXF1ZXN0ZWQoKSksIHRo
aXMsIFNMT1QoY2xvc2UoKSkpOwogCisgICAgICAgIFFXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9
IG5ldyBRV2ViSW5zcGVjdG9yKHNwbGl0dGVyKTsKKyAgICAgICAgaW5zcGVjdG9yLT5zZXRQYWdl
KHBhZ2UpOworICAgICAgICBpbnNwZWN0b3ItPmRvY2soKTsKKyAgICAgICAgaW5zcGVjdG9yLT5o
aWRlKCk7CisgICAgICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGRlc3Ryb3llZCgpKSwgaW5zcGVj
dG9yLCBTTE9UKGRlbGV0ZUxhdGVyKCkpKTsKKyAgICAgICAgY29ubmVjdChwYWdlLCBTSUdOQUwo
aW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQoKSksIGluc3BlY3RvciwgU0xPVChzaG93KCkpKTsKKyAg
ICAgICAgY29ubmVjdChpbnNwZWN0b3IsIFNJR05BTChkb2NrUmVxdWVzdGVkKCkpLCB0aGlzLCBT
TE9UKGRvY2tJbnNwZWN0b3IoKSkpOworICAgICAgICBjb25uZWN0KGluc3BlY3RvciwgU0lHTkFM
KHVuZG9ja1JlcXVlc3RlZCgpKSwgdGhpcywgU0xPVCh1bmRvY2tJbnNwZWN0b3IoKSkpOworCiAg
ICAgICAgIHNldHVwVUkoKTsKIAogICAgICAgICAvLyBzZXQgdGhlIHByb3h5IHRvIHRoZSBodHRw
X3Byb3h5IGVudiB2YXJpYWJsZSAtIGlmIHByZXNlbnQgICAgICAgIApAQCAtMjE1LDYgKzIyNSwx
OCBAQCBwcm90ZWN0ZWQgc2xvdHM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGRvY2tJ
bnNwZWN0b3IoKSB7CisgICAgICAgIHZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yKCktPnNldFBhcmVu
dChjZW50cmFsV2lkZ2V0KCkpOworICAgIH0KKworICAgIHZvaWQgdW5kb2NrSW5zcGVjdG9yKCkg
eworICAgICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSB2aWV3LT5wYWdlKCktPmluc3Bl
Y3RvcigpOworICAgICAgICBib29sIHZpc2libGUgPSBpbnNwZWN0b3ItPmlzVmlzaWJsZSgpOwor
ICAgICAgICBpbnNwZWN0b3ItPnNldFBhcmVudCgwKTsKKyAgICAgICAgaW5zcGVjdG9yLT5yZXNp
emUoaW5zcGVjdG9yLT5zaXplKCkuZXhwYW5kZWRUbyhpbnNwZWN0b3ItPnNpemVIaW50KCkpKTsK
KyAgICAgICAgaW5zcGVjdG9yLT5zZXRWaXNpYmxlKHZpc2libGUpOworICAgIH0KKwogcHVibGlj
IHNsb3RzOgogCiAgICAgdm9pZCBuZXdXaW5kb3coY29uc3QgUVN0cmluZyAmdXJsID0gUVN0cmlu
ZygpKSB7CmRpZmYgLS1naXQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCmlu
ZGV4IGQ3ZjAzZDEuLmZmOWVkYjcgMTAwNjQ0Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50UXQuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50UXQuaCIKIAorI2luY2x1ZGUgInF3ZWJpbnNwZWN0b3Iu
aCIKKyNpbmNsdWRlICJxd2ViaW5zcGVjdG9yX3AuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgog
I2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJxd2Vidmlldy5oIgpAQCAtNDQsNDYg
KzQ2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50
V2ViUGFnZSA6IHB1YmxpYyBRV2ViUGFnZQoteworY2xhc3MgSW5zcGVjdG9yQ2xpZW50V2ViUGFn
ZSA6IHB1YmxpYyBRV2ViUGFnZSB7CiAgICAgUV9PQkpFQ1QKICAgICBmcmllbmQgY2xhc3MgSW5z
cGVjdG9yQ2xpZW50UXQ7CiBwdWJsaWM6Ci0gICAgUVdlYlBhZ2UqIGNyZWF0ZVdpbmRvdyhRV2Vi
UGFnZTo6V2ViV2luZG93VHlwZSkKKyAgICBJbnNwZWN0b3JDbGllbnRXZWJQYWdlKFFPYmplY3Qq
IHBhcmVudCA9IDApCisgICAgOiBRV2ViUGFnZShwYXJlbnQpCiAgICAgewotICAgICAgICBRV2lk
Z2V0ICp3ID0gbmV3IFFXZWJWaWV3KDApOwotICAgICAgICBRV2ViUGFnZSAqcGFnZSA9IG5ldyBR
V2ViUGFnZSh3KTsKLSAgICAgICAgcGFnZS0+c2V0Vmlldyh3KTsKLSAgICAgICAgY29ubmVjdChw
YWdlLCBTSUdOQUwoZGVzdHJveWVkKCkpLCB3LCBTTE9UKGRlbGV0ZUxhdGVyKCkpKTsKLSAgICAg
ICAgcmV0dXJuIHBhZ2U7CisgICAgICAgIHNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIGZhbHNlKTsKICAgICB9CiAKLVFfU0lHTkFM
UzoKLSAgICB2b2lkIGF0dGFjaFJlcXVlc3RlZCgpOwotICAgIHZvaWQgZGV0YWNoUmVxdWVzdGVk
KCk7Ci19OwotCi0KLWNsYXNzIEluc3BlY3RvckNsaWVudFZpZXcgOiBwdWJsaWMgUVdlYlZpZXcg
ewotcHVibGljOgotICAgIEluc3BlY3RvckNsaWVudFZpZXcoSW5zcGVjdG9yQ29udHJvbGxlciog
Y29udHJvbGxlcikKLSAgICAgICAgOiBRV2ViVmlldygwKQotICAgICAgICAsIG1fY29udHJvbGxl
cihjb250cm9sbGVyKQotICAgIHsKLSAgICAgICAgc2V0UGFnZShuZXcgSW5zcGVjdG9yQ2xpZW50
V2ViUGFnZSk7Ci0gICAgICAgIGNvbm5lY3QocGFnZSgpLCBTSUdOQUwoZGVzdHJveWVkKCkpLCBT
TE9UKGRlbGV0ZUxhdGVyKCkpKTsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLQotICAgIHZvaWQgY2xv
c2VFdmVudChRQ2xvc2VFdmVudCogZXYpCisgICAgUVdlYlBhZ2UqIGNyZWF0ZVdpbmRvdyhRV2Vi
UGFnZTo6V2ViV2luZG93VHlwZSkKICAgICB7Ci0gICAgICAgIFFXaWRnZXQ6OmNsb3NlRXZlbnQo
ZXYpOwotICAgICAgICBtX2NvbnRyb2xsZXItPnNldFdpbmRvd1Zpc2libGUoZmFsc2UpOworICAg
ICAgICBRV2ViVmlldyogdmlldyA9IG5ldyBRV2ViVmlldzsKKyAgICAgICAgUVdlYlBhZ2UqIHBh
Z2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgICAgIHZpZXctPnNldFBhZ2UocGFnZSk7CisgICAgICAg
IHZpZXctPnNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRlT25DbG9zZSk7CisgICAgICAgIHJldHVy
biBwYWdlOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2Nv
bnRyb2xsZXI7CiB9OwogCiAKQEAgLTk4LDE0ICs3OCwxOSBAQCB2b2lkIEluc3BlY3RvckNsaWVu
dFF0OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogCiBQYWdlKiBJbnNwZWN0b3JDbGllbnRRdDo6Y3Jl
YXRlUGFnZSgpCiB7Ci0gICAgaWYgKG1fd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuIG1fd2ViUGFn
ZS0+ZC0+cGFnZTsKKyAgICBpZiAobV9pbnNwZWN0b3JWaWV3KQorICAgICAgICByZXR1cm4gbV9p
bnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2U7CisKKyAgICBRV2ViVmlldyogaW5zcGVjdG9y
VmlldyA9IG5ldyBRV2ViVmlldzsKKyAgICBJbnNwZWN0b3JDbGllbnRXZWJQYWdlKiBpbnNwZWN0
b3JQYWdlID0gbmV3IEluc3BlY3RvckNsaWVudFdlYlBhZ2UoaW5zcGVjdG9yVmlldyk7CisgICAg
aW5zcGVjdG9yVmlldy0+c2V0UGFnZShpbnNwZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclZp
ZXcuc2V0KGluc3BlY3RvclZpZXcpOwogCi0gICAgSW5zcGVjdG9yQ2xpZW50VmlldyogdmlldyA9
IG5ldyBJbnNwZWN0b3JDbGllbnRWaWV3KG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+cGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpKTsKLSAgICBtX3dlYlBhZ2Uuc2V0KHFvYmplY3RfY2FzdDxJbnNw
ZWN0b3JDbGllbnRXZWJQYWdlKj4odmlldy0+cGFnZSgpKSk7Ci0gICAgbV93ZWJQYWdlLT5tYWlu
RnJhbWUoKS0+bG9hZChRU3RyaW5nOjpmcm9tTGF0aW4xKCJxcmM6L3dlYmtpdC9pbnNwZWN0b3Iv
aW5zcGVjdG9yLmh0bWwiKSk7Ci0gICAgbV93ZWJQYWdlLT52aWV3KCktPnNldE1pbmltdW1TaXpl
KDQwMCwzMDApOwotICAgIHJldHVybiBtX3dlYlBhZ2UtPmQtPnBhZ2U7CisgICAgaW5zcGVjdG9y
UGFnZS0+bWFpbkZyYW1lKCktPmxvYWQoUVN0cmluZzo6ZnJvbUxhdGluMSgicXJjOi93ZWJraXQv
aW5zcGVjdG9yL2luc3BlY3Rvci5odG1sIikpOworICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+
aW5zcGVjdG9yRnJvbnRlbmQgPSBpbnNwZWN0b3JWaWV3OworICAgIG1faW5zcGVjdGVkV2ViUGFn
ZS0+ZC0+Z2V0T3JDcmVhdGVJbnNwZWN0b3IoKS0+ZC0+c2V0RnJvbnRlbmQoaW5zcGVjdG9yVmll
dyk7CisKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2U7CiB9CiAK
IFN0cmluZyBJbnNwZWN0b3JDbGllbnRRdDo6bG9jYWxpemVkU3RyaW5nc1VSTCgpCkBAIC0xMjIs
NDQgKzEwNywzMSBAQCBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50UXQ6OmhpZGRlblBhbmVscygpCiAK
IHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnNob3dXaW5kb3coKQogewotICAgIGlmICghbV93ZWJQ
YWdlKQotICAgICAgICByZXR1cm47Ci0KICAgICB1cGRhdGVXaW5kb3dUaXRsZSgpOwotICAgIG1f
d2ViUGFnZS0+dmlldygpLT5zaG93KCk7Ci0gICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5wYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdpbmRvd1Zpc2libGUodHJ1ZSk7Ci19CiAKLXZv
aWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmNsb3NlV2luZG93KCkKLXsKLSAgICBpZiAoIW1fd2ViUGFn
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93ZWJQYWdlLT52aWV3KCktPmhpZGUoKTsKLSAg
ICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0
V2luZG93VmlzaWJsZShmYWxzZSk7CisgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGluc3BlY3Rv
ciB0byBhc2sgZm9yIHZpc2liaWxpdHkgaXRzZWxmLgorICAgIC8vIEluc3BlY3RpbmcgYW4gZWxl
bWVudCBvciBjYWxsaW5nIFFXZWJJbnNwZWN0b3I6OnNob3coKSBzaG91bGQgYWxyZWFkeSBoYXZl
IG1hZGUgdGhlCisgICAgLy8gd2luZG93IHZpc2libGUuCisgICAgYm9vbCBhdHRhY2hlZCA9IG1f
aW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yID8gbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5p
bnNwZWN0b3ItPmlzRG9ja2VkKCkgOiBmYWxzZTsKKyAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0V2luZG93VmlzaWJsZSh0cnVlLCBhdHRhY2hlZCk7
CiB9CiAKLWJvb2wgSW5zcGVjdG9yQ2xpZW50UXQ6OndpbmRvd1Zpc2libGUoKQordm9pZCBJbnNw
ZWN0b3JDbGllbnRRdDo6Y2xvc2VXaW5kb3coKQogewotICAgIGlmICghbV93ZWJQYWdlKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+dmlldygpLT5pc1Zpc2li
bGUoKTsKKyAgICBpZiAobV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3IpCisgICAgICAg
IG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yLT5jbG9zZSgpOwogfQogCiB2b2lkIElu
c3BlY3RvckNsaWVudFF0OjphdHRhY2hXaW5kb3coKQogewotICAgIGlmICghbV93ZWJQYWdlKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBlbWl0IG1fd2ViUGFnZS0+YXR0YWNoUmVxdWVzdGVkKCk7
CisgICAgaWYgKG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yKQorICAgICAgICBtX2lu
c3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3Rvci0+ZC0+c2V0RG9ja2VkKHRydWUpOwogfQogCiB2
b2lkIEluc3BlY3RvckNsaWVudFF0OjpkZXRhY2hXaW5kb3coKQogewotICAgIGlmICghbV93ZWJQ
YWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBlbWl0IG1fd2ViUGFnZS0+ZGV0YWNoUmVxdWVz
dGVkKCk7CisgICAgaWYgKG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yKQorICAgICAg
ICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3Rvci0+ZC0+c2V0RG9ja2VkKGZhbHNlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5z
aWduZWQgaGVpZ2h0KQpAQCAtMTkwLDExICsxNjIsMTEgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRR
dDo6aW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJlZCgpCiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50
UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKIHsKLSAgICBpZiAoIW1fd2ViUGFnZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUVN0cmluZyBjYXB0aW9uID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNs
YXRlKCJRV2ViUGFnZSIsICJXZWIgSW5zcGVjdG9yIC0gJTIiKTsKLSAgICBtX3dlYlBhZ2UtPnZp
ZXcoKS0+c2V0V2luZG93VGl0bGUoY2FwdGlvbi5hcmcobV9pbnNwZWN0ZWRVUkwpKTsKKyAgICBp
ZiAobV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3IpIHsKKyAgICAgICAgUVN0cmluZyBj
YXB0aW9uID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJXZWIgSW5z
cGVjdG9yIC0gJTIiKS5hcmcobV9pbnNwZWN0ZWRVUkwpOworICAgICAgICBtX2luc3BlY3RlZFdl
YlBhZ2UtPmQtPmluc3BlY3Rvci0+c2V0V2luZG93VGl0bGUoY2FwdGlvbik7CisgICAgICAgIGVt
aXQgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3ItPndpbmRvd1RpdGxlQ2hhbmdlZChj
YXB0aW9uKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnBvcHVsYXRlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVjdG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0
dGluZykKZGlmZiAtLWdpdCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuaCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAppbmRleCAw
M2M2ODRhLi5jY2Y4YjY5IDEwMDY0NAotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFF0LmgKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5oCkBAIC0zNSwxMiArMzUsMTIgQEAKICNpbmNsdWRlIDxRdENvcmUvUVN0cmluZz4KIAog
Y2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBTdHJpbmc7Ci0gICAg
Y2xhc3MgSW5zcGVjdG9yQ2xpZW50V2ViUGFnZTsKIAogICAgIGNsYXNzIEluc3BlY3RvckNsaWVu
dFF0IDogcHVibGljIEluc3BlY3RvckNsaWVudCB7CiAgICAgcHVibGljOgpAQCAtNTYsNyArNTYs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3dXaW5k
b3coKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCk7Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCB3aW5kb3dWaXNpYmxlKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdp
bmRvdygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7CkBAIC03Niw3ICs3
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHVw
ZGF0ZVdpbmRvd1RpdGxlKCk7CiAgICAgICAgIFFXZWJQYWdlKiBtX2luc3BlY3RlZFdlYlBhZ2U7
Ci0gICAgICAgIE93blB0cjxJbnNwZWN0b3JDbGllbnRXZWJQYWdlPiBtX3dlYlBhZ2U7CisgICAg
ICAgIE93blB0cjxRV2ViVmlldz4gbV9pbnNwZWN0b3JWaWV3OwogICAgICAgICBRU3RyaW5nIG1f
aW5zcGVjdGVkVVJMOwogICAgIH07CiB9CmRpZmYgLS1naXQgV2ViS2l0L3F0L2RvY3Mvd2Via2l0
c25pcHBldHMvcXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcCBXZWJLaXQvcXQvZG9j
cy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2ViaW5zcGVjdG9yX3NuaXBwZXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhY2VmNDAKLS0tIC9kZXYvbnVsbAorKysg
V2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlw
cGV0LmNwcApAQCAtMCwwICsxLDE3IEBACisKK3ZvaWQgd3JhcEluRnVuY3Rpb24oKQoreworCisv
LyEgWzBdCisgICAgLy8gLi4uCisgICAgUVdlYlBhZ2UgKnBhZ2UgPSBuZXcgUVdlYlBhZ2U7Cisg
ICAgLy8gLi4uCisKKyAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBuZXcgUVdlYkluc3Bl
Y3RvcjsKKyAgICBpbnNwZWN0b3ItPnNldFBhZ2UocGFnZSk7CisKKyAgICBjb25uZWN0KHBhZ2Us
IFNJR05BTChpbnNwZWN0RWxlbWVudFRyaWdnZXJlZCgpKSwgaW5zcGVjdG9yLCBTTE9UKHNob3co
KSkpOworLy8hIFswXQorCit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39143</attachid>
            <date>2009-09-07 05:28:30 -0700</date>
            <delta_ts>2009-09-08 01:20:22 -0700</delta_ts>
            <desc>Changes without InspectorController.cpp</desc>
            <filename>qwebinspector.patch</filename>
            <type>text/plain</type>
            <size>32455</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBXZWJDb3JlL0NoYW5nZUxvZyBXZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YmYy
YzYxLi5jZGFmZjczIDEwMDY0NAotLS0gV2ViQ29yZS9DaGFuZ2VMb2cKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDktMDcgIEpvY2VseW4gVHVyY290dGUgIDxq
b2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbUXRdIE1ha2UgdGhlIFdlYkluc3BlY3RvciBhdmFpbGFibGUg
YXMgYSB3aWRnZXQgY2xhc3MuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorCiAyMDA5LTA5LTA3ICBNaWNoYWVsIE5v
cmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEZpc2hlci4KZGlmZiAtLWdpdCBXZWJDb3JlL1dlYkNvcmUucHJvIFdlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggNjEzNTYyYy4uZDg0NGM3OCAxMDA2NDQKLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIFdlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIzNzEsNiArMjM3MSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdpbmZhY3RvcnkuY3BwIFwKICAgICAuLi9X
ZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9B
cGkvcXdlYmRhdGFiYXNlLmNwcCBcCisgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9y
LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2Via2l0dmVyc2lvbi5jcHAKIAogCmRpZmYg
LS1naXQgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIFdlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAyN2NkMDA0Li5jOWRiNzJmIDEwMDY0
NAotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBXZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTE4OCw2ICsxODgsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGF0dGFjaFdpbmRvdygpOwogICAgIHZvaWQgZGV0YWNoV2luZG93KCk7
CisgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvdyhib29sKTsKIAogICAgIHZvaWQgdG9nZ2xlU2Vh
cmNoRm9yTm9kZUluUGFnZSgpOwogICAgIGJvb2wgc2VhcmNoaW5nRm9yTm9kZUluUGFnZSgpIHsg
cmV0dXJuIG1fc2VhcmNoaW5nRm9yTm9kZTsgfTsKQEAgLTI3Myw3ICsyNzQsNiBAQCBwcml2YXRl
OgogICAgIC8vIEZvbGxvd2luZyBhcmUgdXNlZCBmcm9tIEluc3BlY3RvckJhY2tlbmQgYW5kIGlu
dGVybmFsbHkuCiAgICAgdm9pZCBzY3JpcHRPYmplY3RSZWFkeSgpOwogICAgIHZvaWQgbW92ZVdp
bmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0OwotICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5k
b3coYm9vbCk7CiAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWln
aHQpOwogICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwoY29uc3QgU3RyaW5nJiBwYW5lbE5h
bWUpOwogICAgIHZvaWQgY2xvc2VXaW5kb3coKTsKZGlmZiAtLWdpdCBXZWJLaXQvcXQvQXBpL2hl
YWRlcnMucHJpIFdlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKaW5kZXggOTJhMTIwZC4uY2E5Y2Y5
MCAxMDA2NDQKLS0tIFdlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKKysrIFdlYktpdC9xdC9BcGkv
aGVhZGVycy5wcmkKQEAgLTEwLDQgKzEwLDUgQEAgV0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0Qv
cXdlYmZyYW1lLmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmRhdGFi
YXNlLmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmZhY3RvcnkuaCBc
CiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViaGlzdG9yeS5oIFwKKyAgICAgICAgICAg
ICAgICAgICAgICQkUFdEL3F3ZWJpbnNwZWN0b3IuaCBcCiAgICAgICAgICAgICAgICAgICAgICAk
JFBXRC9xd2Via2l0dmVyc2lvbi5oCmRpZmYgLS1naXQgV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVu
dC5oIFdlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuaAppbmRleCBiYzZmOGE5Li4wYmU4YzVhIDEw
MDY0NAotLS0gV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5oCisrKyBXZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmgKQEAgLTE0Miw2ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFFX
ZWJFbGVtZW50KFdlYkNvcmU6Ok5vZGUqKTsKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWU7
CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViSGl0VGVz
dFJlc3VsdDsKICAgICBmcmllbmQgY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHRQcml2YXRlOwogCmRp
ZmYgLS1naXQgV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcCBXZWJLaXQvcXQvQXBpL3F3
ZWJpbnNwZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YTE5
NjMKLS0tIC9kZXYvbnVsbAorKysgV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcApAQCAt
MCwwICsxLDI0OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgInF3ZWJpbnNwZWN0b3IuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAicXdlYmVsZW1lbnQuaCIKKyNp
bmNsdWRlICJxd2ViaW5zcGVjdG9yX3AuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisKKyNp
bmNsdWRlIDxRUmVzaXplRXZlbnQ+CisKKy8vIFRPRE86IGhhbmRsZSB0aGUgIkFsd2F5cyBlbmFi
bGUiIGNvbW1hbmRzIHdpdGggUVdlYlNldHRpbmdzCisvLyBUT0RPOiBhZGQgYXBpIHRvIGNoYW5n
ZSBhbmQgZ2V0IHRoZSBhY3RpdmUgdGFiPworLy8gVE9ETzogZmlsbCBvciBkaXNhYmxlIHRoZSBE
YXRhYmFzZXMgdGFiPworCisvKiEKKyAgICBcY2xhc3MgUVdlYkluc3BlY3RvcgorICAgIFxzaW5j
ZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJJbnNwZWN0b3IgY2xhc3MgYWxsb3dzIHRoZSBwbGFj
ZW1lbnQgYW5kIGNvbnRyb2wgb2YgYQorICAgIFFXZWJQYWdlJ3MgaW5zcGVjdG9yLgorICAgIEFu
IGluc3BlY3RvciBhbGxvd3MgeW91IHRvIHNlZSBhIHBhZ2UgY3VycmVudCBoaWVyYXJjaHkgYW5k
IGxvYWRpbmcKKyAgICBzdGF0aXN0aWNzLgorCisgICAgVGhlIFFXZWJQYWdlIHRvIGJlIGluc3Bl
Y3RlZCBpcyBkZXRlcm1pbmVkIHdpdGggdGhlIHNldFBhZ2UoKSBtZXRob2QuCisKKyAgICBBIHR5
cGljYWwgdXNlIG9mIFFXZWJJbnNwZWN0b3IgZm9sbG93czoKKworICAgIFxzbmlwcGV0IHdlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBldC5jcHAgMAorCisgICAgVGhp
cyBjbGFzcyBhY3RzIG1vc3RseSBhcyBhIGNvbnRhaW5lciBhbmQgYSBjb250cm9sbGVyIGZvciB0
aGUgaW5zcGVjdG9yLgorICAgIE1vc3Qgb2YgdGhlIHJlc291cmNlcyBuZWVkZWQgZm9yIHRoZSBp
bnNwZWN0b3IgYXJlIGJpbmRlZCB0byBRV2ViUGFnZSwKKyAgICBhbmQgYXJlIGFsbG9jYXRlZCB0
aGUgZmlyc3QgdGltZSB0aGF0OgorICAgIFxsaXN0CisgICAgICAgIFxvIGFuIGVsZW1lbnQgaXMg
aW5zcGVjdGVkCisgICAgICAgIFxvIHRoZSBRV2ViSW5zcGVjdG9yIGlzIHNob3duLgorICAgIFxl
bmRsaXN0CisKKyAgICBcbm90ZSBBIFFXZWJJbnNwZWN0b3Igd2lsbCBkaXNwbGF5IGEgYmxhbmsg
d2lkZ2V0IGlmIGVpdGhlcjoKKyAgICBcbGlzdAorICAgICAgICBcbyBwYWdlKCkgaXMgbnVsbAor
ICAgICAgICBcbyBRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQgaXMgZmFsc2UK
KyAgICBcZW5kbGlzdAorKi8KKworLyohCisgICAgQ29uc3RydWN0cyBhbiBlbXB0eSBRV2ViSW5z
cGVjdG9yIHdpdGggcGFyZW50IFxhIHBhcmVudC4KKyovCitRV2ViSW5zcGVjdG9yOjpRV2ViSW5z
cGVjdG9yKFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IFFXaWRnZXQocGFyZW50KQorICAgICwgZChu
ZXcgUVdlYkluc3BlY3RvclByaXZhdGUodGhpcykpCit7Cit9CisKKy8qIQorICAgIERlc3Ryb3lz
IHRoZSBpbnNwZWN0b3IuCisqLworUVdlYkluc3BlY3Rvcjo6flFXZWJJbnNwZWN0b3IoKQorewor
ICAgIC8vIFJlbW92ZSBhc3NvY2lhdGlvbiBwcmluY2lwYWxseSB0byBwcmV2ZW50IGRlbGV0aW5n
IGEgY2hpbGQgZnJvbnRlbmQKKyAgICBzZXRQYWdlKDApOworfQorCisvKiEKKyAgICBTZXRzIHRo
ZSBRV2ViUGFnZSB0byBiZSBpbnNwZWN0ZWQuCisKKyAgICBFZmZlY3RzIHdpbGwgYmUgcmVmbGVj
dGVkIG9uIFFXZWJQYWdlOjppbnNwZWN0b3IoKS4KKyAgICBUaGVyZSBjYW4gb25seSBiZSBvbmUg
UVdlYkluc3BlY3RvciBhc3NvY2lhdGVkIHdpdGggYSBRV2ViUGFnZQorICAgIGFuZCB2aWNlcyB2
ZXJzYS4KKworICAgIENhbGxpbmcgd2l0aCBcYSBwYWdlIGFzIG51bGwgd2lsbCBicmVhayB0aGUg
Y3VycmVudCBhc3NvY2lhdGlvbiwgaWYgYW55LgorCisgICAgXHNhIHBhZ2UoKSwgUVdlYlBhZ2U6
Omluc3BlY3RvcigpCisqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpzZXRQYWdlKFFXZWJQYWdlKiBw
YWdlKQoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5kLT5zZXRJbnNwZWN0
b3IoMCk7CisKKyAgICBkLT5wYWdlID0gcGFnZTsKKworICAgIGlmIChwYWdlKSB7CisgICAgICAg
IC8vIFNldHVwIHRoZSByZWNpcHJvY2FsIGFzc29jaWF0aW9uCisgICAgICAgIHBhZ2UtPmQtPnNl
dEluc3BlY3Rvcih0aGlzKTsKKworICAgICAgICBwYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNldEF0dGFjaGVkV2luZG93KGlzRG9ja2VkKCkpOworICAgIH0KK30KKworLyohCisgICAg
UmV0dXJucyB0aGUgaW5zcGVjdGVkIFFXZWJQYWdlLgorICAgIElmIG5vIHdlYiBwYWdlIGlzIGN1
cnJlbnRseSBhc3NvY2lhdGVkLCBhIG51bGwgcG9pbnRlciBpcyByZXR1cm5lZC4KKyovCitRV2Vi
UGFnZSogUVdlYkluc3BlY3Rvcjo6cGFnZSgpCit7CisgICAgcmV0dXJuIGQtPnBhZ2U7Cit9CisK
Ky8qIQorICAgIFRoaXMgbWV0aG9kIGNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGluc3Bl
Y3RvciB0byBtYXRjaCBhIGRvY2tlZCBzdGF0ZS4KKyAgICBUaGlzIG9ubHkgY29udHJvbHMgdGhl
IGFwcGVhcmFuY2UsIHRoZSBhY3R1YWwgZG9ja2luZyBvZiB0aGUgUVdlYkluc3BlY3RvcgorICAg
IHdpZGdldCB0byB0aGUgdXNlciBpbnRlcmZhY2UgbXVzdCBiZSBkb25lIHNlcGFyYXRlbHkuCisK
KyAgICBcc2EgdW5kb2NrKCksIGlzRG9ja2VkKCksIGRvY2tSZXF1ZXN0ZWQoKSwgdW5kb2NrUmVx
dWVzdGVkKCkKKyovCit2b2lkIFFXZWJJbnNwZWN0b3I6OmRvY2soKQoreworICAgIGQtPmlzRG9j
a2VkID0gdHJ1ZTsKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+ZC0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5zZXRBdHRhY2hlZFdpbmRvdyh0cnVlKTsKK30KKworLyohCisgICAg
VGhpcyBtZXRob2QgY2hhbmdlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgaW5zcGVjdG9yIHRvIG1h
dGNoIGFuIHVuZG9ja2VkIHN0YXRlLgorICAgIFRoaXMgb25seSBjb250cm9scyB0aGUgYXBwZWFy
YW5jZSwgdGhlIGFjdHVhbCB1bmRvY2tpbmcgb2YgdGhlIFFXZWJJbnNwZWN0b3IKKyAgICB3aWRn
ZXQgZnJvbSB0aGUgdXNlciBpbnRlcmZhY2UgbXVzdCBiZSBkb25lIHNlcGFyYXRlbHkuCisKKyAg
ICBcc2EgZG9jaygpLCBpc0RvY2tlZCgpLCBkb2NrUmVxdWVzdGVkKCksIHVuZG9ja1JlcXVlc3Rl
ZCgpCisqLwordm9pZCBRV2ViSW5zcGVjdG9yOjp1bmRvY2soKQoreworICAgIGQtPmlzRG9ja2Vk
ID0gZmFsc2U7CisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c2V0QXR0YWNoZWRXaW5kb3coZmFsc2UpOworfQorCisvKiEKKyAgICBS
ZXR1cm5zIHRydWUgaWYgdGhlIGluc3BlY3RvciBhcHBlYXJhbmNlIGlzIGN1cnJlbnRseSBpbiBh
IGRvY2tlZCBzdGF0ZS4KKworICAgIFxzYSBkb2NrKCksIHVuZG9jaygpLCBkb2NrUmVxdWVzdGVk
KCksIHVuZG9ja1JlcXVlc3RlZCgpCisqLworYm9vbCBRV2ViSW5zcGVjdG9yOjppc0RvY2tlZCgp
Cit7CisgICAgcmV0dXJuIGQtPmlzRG9ja2VkOworfQorCisvKiEgXHJlaW1wICovCitRU2l6ZSBR
V2ViSW5zcGVjdG9yOjpzaXplSGludCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFFTaXplKDQ1MCwg
MzAwKTsKK30KKworLyohIFxyZWltcCAqLworYm9vbCBRV2ViSW5zcGVjdG9yOjpldmVudChRRXZl
bnQqIGV2KQoreworICAgIHJldHVybiBRV2lkZ2V0OjpldmVudChldik7Cit9CisKKy8qISBccmVp
bXAgKi8KK3ZvaWQgUVdlYkluc3BlY3Rvcjo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVu
dCkKK3sKKyAgICBkLT5hZGp1c3RGcm9udGVuZFNpemUoZXZlbnQtPnNpemUoKSk7Cit9CisKKy8q
ISBccmVpbXAgKi8KK3ZvaWQgUVdlYkluc3BlY3Rvcjo6c2hvd0V2ZW50KFFTaG93RXZlbnQqIGV2
ZW50KQoreworICAgIC8vIEFsbG93cyBRV2ViSW5zcGVjdG9yOjpzaG93KCkgdG8gaW5pdCB0aGUg
aW5zcGVjdG9yLgorICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIH0KK30KKworLyohIFxyZWltcCAqLwordm9p
ZCBRV2ViSW5zcGVjdG9yOjpoaWRlRXZlbnQoUUhpZGVFdmVudCogZXZlbnQpCit7CisgICAgaWYg
KGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0
V2luZG93VmlzaWJsZShmYWxzZSk7Cit9CisKKy8qISBcaW50ZXJuYWwgKi8KK3ZvaWQgUVdlYklu
c3BlY3RvclByaXZhdGU6OnNldEZyb250ZW5kKFFXaWRnZXQqIHZhbHVlKQoreworICAgIGlmIChm
cm9udGVuZCkKKyAgICAgICAgZnJvbnRlbmQtPnNldFBhcmVudCgwKTsKKworICAgIGZyb250ZW5k
ID0gdmFsdWU7CisKKyAgICBpZiAoZnJvbnRlbmQpIHsKKyAgICAgICAgZnJvbnRlbmQtPnNldFBh
cmVudChxKTsKKyAgICAgICAgZnJvbnRlbmQtPnNob3coKTsKKyAgICAgICAgYWRqdXN0RnJvbnRl
bmRTaXplKHEtPnNpemUoKSk7CisgICAgfQorfQorCisvKiEKKyAgICBcaW50ZXJuYWwKKyAgICBD
YWxsZWQgaW50ZXJuYWxseSBieSB0aGUgaW5zcGVjdG9yLgorKi8KK3ZvaWQgUVdlYkluc3BlY3Rv
clByaXZhdGU6OnNldERvY2tlZChib29sIHZhbHVlKQoreworICAgIGJvb2wgY2hhbmdlZCA9IGlz
RG9ja2VkICE9IHZhbHVlOworICAgIHRoaXMtPmlzRG9ja2VkID0gdmFsdWU7CisgICAgaWYgKGNo
YW5nZWQpIHsKKyAgICAgICAgaWYgKGlzRG9ja2VkKQorICAgICAgICAgICAgZW1pdCBxLT5kb2Nr
UmVxdWVzdGVkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXQgcS0+dW5kb2NrUmVx
dWVzdGVkKCk7CisgICAgfQorfQorCit2b2lkIFFXZWJJbnNwZWN0b3JQcml2YXRlOjphZGp1c3RG
cm9udGVuZFNpemUoY29uc3QgUVNpemUmIHNpemUpCit7CisgICAgaWYgKGZyb250ZW5kKQorICAg
ICAgICBmcm9udGVuZC0+cmVzaXplKHNpemUpOworfQorCisvKiEKKyAgICBcZm4gdm9pZCBRV2Vi
SW5zcGVjdG9yOjp3aW5kb3dUaXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYgbmV3VGl0bGUpOwor
CisgICAgVGhpcyBpcyBlbWl0dGVkIHRvIHNpZ25hbCB0aGF0IHRoaXMgd2lkZ2V0J3MgdGl0bGUg
Y2hhbmdlZCB0byBcYSBuZXdUaXRsZS4KKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJJbnNw
ZWN0b3I6OmRvY2tSZXF1ZXN0ZWQoKTsKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hl
biB0aGUgdXNlciBwcmVzc2VkIHRoZSBkb2NrIGJ1dHRvbiBpbiB0aGUKKyAgICBpbnNwZWN0b3Ig
YW5kIGNoYW5nZWQgdGhlIGFwcGVhcmFuY2UgdG8gYSBkb2NrZWQgc3RhdGUuCisKKyAgICBcc2Eg
ZG9jaygpLCB1bmRvY2soKSwgaXNEb2NrZWQoKSwgdW5kb2NrUmVxdWVzdGVkKCkKKyovCisKKy8q
IQorICAgIFxmbiB2b2lkIFFXZWJJbnNwZWN0b3I6OnVuZG9ja1JlcXVlc3RlZCgpOworCisgICAg
VGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIHByZXNzZWQgdGhlIGRvY2sgYnV0
dG9uIGluIHRoZQorICAgIGluc3BlY3RvciBhbmQgY2hhbmdlZCB0aGUgYXBwZWFyYW5jZSB0byBh
biBkb2NrZWQgc3RhdGUuCisKKyAgICBcc2EgZG9jaygpLCB1bmRvY2soKSwgaXNEb2NrZWQoKSwg
ZG9ja1JlcXVlc3RlZCgpCisqLworCmRpZmYgLS1naXQgV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVj
dG9yLmggV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMjZmNjY4NQotLS0gL2Rldi9udWxsCisrKyBXZWJLaXQvcXQvQXBpL3F3
ZWJpbnNwZWN0b3IuaApAQCAtMCwwICsxLDcwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAw
OSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZu
ZGVmIFFXRUJJTlNQRUNUT1JfSAorI2RlZmluZSBRV0VCSU5TUEVDVE9SX0gKKworI2luY2x1ZGUg
InF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlICJxd2VicGFnZS5oIgorCisjaW5jbHVkZSAicXdl
YnZpZXcuaCIKKworY2xhc3MgUVdlYkluc3BlY3RvclByaXZhdGU7CitjbGFzcyBRV2ViRWxlbWVu
dDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIE5vZGU7Cit9OworCisKK2NsYXNz
IFFXRUJLSVRfRVhQT1JUIFFXZWJJbnNwZWN0b3IgOiBwdWJsaWMgUVdpZGdldCB7CisgICAgUV9P
QkpFQ1QKK3B1YmxpYzoKKyAgICBRV2ViSW5zcGVjdG9yKFFXaWRnZXQqIHBhcmVudCA9IDApOwor
ICAgIH5RV2ViSW5zcGVjdG9yKCk7CisKKyAgICB2b2lkIHNldFBhZ2UoUVdlYlBhZ2UqIHBhZ2Up
OworICAgIFFXZWJQYWdlKiBwYWdlKCk7CisKKyAgICB2b2lkIGRvY2soKTsKKyAgICB2b2lkIHVu
ZG9jaygpOworICAgIGJvb2wgaXNEb2NrZWQoKTsKKworICAgIFFTaXplIHNpemVIaW50KCkgY29u
c3Q7CisgICAgYm9vbCBldmVudChRRXZlbnQqKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgd2lu
ZG93VGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmIG5ld1RpdGxlKTsKKyAgICB2b2lkIGRvY2tS
ZXF1ZXN0ZWQoKTsKKyAgICB2b2lkIHVuZG9ja1JlcXVlc3RlZCgpOworCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2ZW50KTsKKyAgICB2b2lkIHNob3dF
dmVudChRU2hvd0V2ZW50KiBldmVudCk7CisgICAgdm9pZCBoaWRlRXZlbnQoUUhpZGVFdmVudCog
ZXZlbnQpOworCitwcml2YXRlOgorICAgIFFXZWJJbnNwZWN0b3JQcml2YXRlKiBkOworCisgICAg
ZnJpZW5kIGNsYXNzIFFXZWJJbnNwZWN0b3JQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRV2Vi
UGFnZTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOworICAgIGZyaWVuZCBjbGFz
cyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDsKK307CisjZW5kaWYKZGlmZiAtLWdpdCBXZWJL
aXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3JfcC5oIFdlYktpdC9xdC9BcGkvcXdlYmluc3BlY3Rvcl9w
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3ZDcxYgotLS0gL2Rldi9u
dWxsCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3JfcC5oCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlcgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUVdFQklOU1BFQ1RPUl9QX0gKKyNkZWZpbmUg
UVdFQklOU1BFQ1RPUl9QX0gKKworY2xhc3MgUVNpemU7CitjbGFzcyBRV2ViSW5zcGVjdG9yOwor
Y2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2lkZ2V0OworCitjbGFzcyBRV2ViSW5zcGVjdG9yUHJp
dmF0ZSB7CitwdWJsaWM6CisgICAgUVdlYkluc3BlY3RvclByaXZhdGUoUVdlYkluc3BlY3Rvciog
cXEpCisgICAgOiBxKHFxKQorICAgICwgcGFnZSgwKQorICAgICwgZnJvbnRlbmQoMCkKKyAgICAs
IGlzRG9ja2VkKGZhbHNlKQorICAgIHt9CisKKyAgICB2b2lkIHNldEZyb250ZW5kKFFXaWRnZXQq
IHZhbHVlKTsKKyAgICB2b2lkIHNldERvY2tlZChib29sIHZhbHVlKTsKKyAgICB2b2lkIGFkanVz
dEZyb250ZW5kU2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSk7CisKKyAgICBRV2ViSW5zcGVjdG9yKiBx
OworICAgIFFXZWJQYWdlKiBwYWdlOworICAgIFFXaWRnZXQqIGZyb250ZW5kOworICAgIGJvb2wg
aXNEb2NrZWQ7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcCBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAxNGJiOGQwLi43NjE0MTdlIDEw
MDY0NAotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIFdlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAicXdlYmhpc3RvcnkuaCIKICNp
bmNsdWRlICJxd2ViaGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisjaW5j
bHVkZSAicXdlYmluc3BlY3Rvci5oIgorI2luY2x1ZGUgInF3ZWJpbnNwZWN0b3JfcC5oIgogI2lu
Y2x1ZGUgInF3ZWJraXR2ZXJzaW9uLmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjk5LDYg
KzMwMSw5IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVBcHBsaWNhdGlvbkNhY2hlUGF0aElmTmVj
ZXNzYXJ5KCkKIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkK
ICAgICA6IHEocXEpCiAgICAgLCB2aWV3KDApCisgICAgLCBpbnNwZWN0b3JGcm9udGVuZCgwKQor
ICAgICwgaW5zcGVjdG9yKDApCisgICAgLCBpbnNwZWN0b3JJc0ludGVybmFsT25seShmYWxzZSkK
ICAgICAsIHZpZXdwb3J0U2l6ZShRU2l6ZSgwLCAwKSkKIHsKICAgICBXZWJDb3JlOjpJbml0aWFs
aXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3NhcnkoKTsKQEAgLTExMjUsNiArMTEzMCw1NCBAQCBR
VmFyaWFudCBRV2ViUGFnZTo6aW5wdXRNZXRob2RRdWVyeShRdDo6SW5wdXRNZXRob2RRdWVyeSBw
cm9wZXJ0eSkgY29uc3QKIH0KIAogLyohCisgICAgXGludGVybmFsCisqLwordm9pZCBRV2ViUGFn
ZVByaXZhdGU6OnNldEluc3BlY3RvcihRV2ViSW5zcGVjdG9yKiBpbnNwKQoreworICAgIGlmIChp
bnNwZWN0b3IpCisgICAgICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoMCk7CisKKyAgICBp
ZiAoaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkpIHsKKyAgICAgICAgUVdlYkluc3BlY3RvciogaW5z
cFRvRGVsZXRlID0gaW5zcGVjdG9yOworICAgICAgICBpbnNwZWN0b3IgPSAwOworICAgICAgICBp
bnNwZWN0b3JJc0ludGVybmFsT25seSA9IGZhbHNlOworICAgICAgICBkZWxldGUgaW5zcFRvRGVs
ZXRlOyAgICAvLyBEZWxldGUgYWZ0ZXIgdG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24KKyAg
ICB9CisKKyAgICBpbnNwZWN0b3IgPSBpbnNwOworCisgICAgLy8gR2l2ZSBpbnNwZWN0b3IgZnJv
bnRlbmQgd2ViIHZpZXcgaWYgcHJldmlvdXNseSBjcmVhdGVkCisgICAgaWYgKGluc3BlY3RvciAm
JiBpbnNwZWN0b3JGcm9udGVuZCkKKyAgICAgICAgaW5zcGVjdG9yLT5kLT5zZXRGcm9udGVuZChp
bnNwZWN0b3JGcm9udGVuZCk7Cit9CisKKy8qIQorICAgIFxpbnRlcm5hbAorICAgIFJldHVybnMg
dGhlIGluc3BlY3RvciBhbmQgY3JlYXRlcyBpdCBpZiBpdCB3YXNuJ3QgY3JlYXRlZCB5ZXQuCisg
ICAgVGhlIGluc3RhbmNlIGNyZWF0ZWQgaGVyZSB3aWxsIG5vdCBiZSBhdmFpbGFibGUgdGhyb3Vn
aCBRV2ViUGFnZSdzIEFQSS4KKyovCitRV2ViSW5zcGVjdG9yKiBRV2ViUGFnZVByaXZhdGU6Omdl
dE9yQ3JlYXRlSW5zcGVjdG9yKCkKK3sKKyAgICBpZiAoIWluc3BlY3RvcikgeworICAgICAgICBR
V2ViSW5zcGVjdG9yKiBpbnNwID0gbmV3IFFXZWJJbnNwZWN0b3I7CisgICAgICAgIGluc3AtPnNl
dFBhZ2UocSk7CisgICAgICAgIGluc3AtPmNvbm5lY3QocSwgU0lHTkFMKGluc3BlY3RFbGVtZW50
VHJpZ2dlcmVkKCkpLCBTTE9UKHNob3coKSkpOworICAgICAgICBpbnNwLT5zaG93KCk7CisgICAg
ICAgIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5ID0gdHJ1ZTsKKworICAgICAgICBRX0FTU0VSVChp
bnNwZWN0b3IpOyAvLyBBc3NvY2lhdGVkIHRocm91Z2ggUVdlYkluc3BlY3Rvcjo6c2V0UGFnZSh0
aGlzKQorICAgIH0KKyAgICByZXR1cm4gaW5zcGVjdG9yOworfQorCisvKiEgXGludGVybmFsICov
CitJbnNwZWN0b3JDb250cm9sbGVyKiBRV2ViUGFnZVByaXZhdGU6Omluc3BlY3RvckNvbnRyb2xs
ZXIoKQoreworICAgIHJldHVybiBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Cit9CisKKwor
LyohCiAgICBcZW51bSBRV2ViUGFnZTo6RmluZEZsYWcKIAogICAgVGhpcyBlbnVtIGRlc2NyaWJl
cyB0aGUgb3B0aW9ucyBhdmFpbGFibGUgdG8gUVdlYlBhZ2UncyBmaW5kVGV4dCgpIGZ1bmN0aW9u
LiBUaGUgb3B0aW9ucwpAQCAtMTMzNCw2ICsxMzg3LDggQEAgUVdlYlBhZ2U6On5RV2ViUGFnZSgp
CiAgICAgRnJhbWVMb2FkZXIgKmxvYWRlciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRl
cigpOwogICAgIGlmIChsb2FkZXIpCiAgICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBhcmVudCgp
OworICAgIGlmIChkLT5pbnNwZWN0b3IpCisgICAgICAgIGQtPmluc3BlY3Rvci0+c2V0UGFnZSgw
KTsKICAgICBkZWxldGUgZDsKIH0KIApAQCAtMTQwOCw2ICsxNDYzLDIzIEBAIFFXaWRnZXQgKlFX
ZWJQYWdlOjp2aWV3KCkgY29uc3QKIH0KIAogLyohCisgICAgUmV0dXJucyB0aGUgd2ViIGluc3Bl
Y3RvciB3aWRnZXQgYXNzb2NpYXRlZCB3aXRoIHRoZSB3ZWIgcGFnZS4KKworICAgIFRoaXMgbWV0
aG9kIHJldHVybnMgbnVsbCBpZiBubyBRV2ViSW5zcGVjdG9yIGhhcyBiZWVuIGF0dGFjaGVkIHRv
IHRoaXMKKyAgICBwYWdlLiBBbiBpbnRlcm5hbCBpbnNwZWN0b3IgaXMgdXNlZCBpZiB0aGUgdXNl
ciBzZWxlY3QgSW5zcGVjdCBmcm9tIHRoZQorICAgIGNvbnRleHQgbWVudSBtZWFud2hpbGUuCisK
KyAgICBcc2EgUVdlYkluc3BlY3Rvcjo6c2V0UGFnZSgpLCBRV2ViSW5zcGVjdG9yOjpwYWdlKCkK
KyAgICBcc2luY2UgNC42CisqLworUVdlYkluc3BlY3RvciogUVdlYlBhZ2U6Omluc3BlY3Rvcigp
IGNvbnN0Cit7CisgICAgaWYgKGQtPmluc3BlY3RvcklzSW50ZXJuYWxPbmx5KQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gZC0+aW5zcGVjdG9yOworfQorCisvKiEKICAgICBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZlciBhIEphdmFTY3JpcHQgcHJvZ3JhbSB0cmllcyB0byBw
cmludCBhIFxhIG1lc3NhZ2UgdG8gdGhlIHdlYiBicm93c2VyJ3MgY29uc29sZS4KIAogICAgIEZv
ciBleGFtcGxlIGluIGNhc2Ugb2YgZXZhbHVhdGlvbiBlcnJvcnMgdGhlIHNvdXJjZSBVUkwgbWF5
IGJlIHByb3ZpZGVkIGluIFxhIHNvdXJjZUlEIGFzIHdlbGwgYXMgdGhlIFxhIGxpbmVOdW1iZXIu
CkBAIC0xNjMwLDEwICsxNzAyLDExIEBAIHZvaWQgUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24oV2Vi
QWN0aW9uIGFjdGlvbiwgYm9vbCBjaGVja2VkKQogICAgICAgICAgICAgZWRpdG9yLT5zZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbihSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW5zcGVjdEVsZW1lbnQ6Ci0gICAgICAgICAgICBpZiAo
IWQtPmhpdFRlc3RSZXN1bHQuaXNOdWxsKCkpCisgICAgICAgICAgICBlbWl0IGluc3BlY3RFbGVt
ZW50VHJpZ2dlcmVkKCk7CisgICAgICAgICAgICBpZiAoIWQtPmhpdFRlc3RSZXN1bHQuaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgICAgICBkLT5nZXRPckNyZWF0ZUluc3BlY3RvcigpOwogICAgICAg
ICAgICAgICAgIGQtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdChkLT5oaXRU
ZXN0UmVzdWx0LmQtPmlubmVyTm9uU2hhcmVkTm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIGNvbW1hbmQgPSBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckNvbW1hbmRGb3JXZWJB
Y3Rpb25zKGFjdGlvbik7CkBAIC0yOTQ2LDYgKzMwMTksMTYgQEAgcXVpbnQ2NCBRV2ViUGFnZTo6
Ynl0ZXNSZWNlaXZlZCgpIGNvbnN0CiAqLwogCiAvKiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6
aW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQoKQorICAgIFxzaW5jZSA0LjYKKworICAgIFRoaXMgc2ln
bmFsIGlzIGVtaXR0ZWQgd2hlbiB0cmlnZ2VyQWN0aW9uKCkgaXMgY2FsbGVkIHdpdGggYSBXZWJB
Y3Rpb246Okluc3BlY3RFbGVtZW50LgorICAgIEluc3BlY3RpbmcgYW4gZWxlbWVudCB0aHJvdWdo
IHRoZSBwYWdlJ3MgY29udGV4dCBtZW51IHdpbGwgYWxzbyBlbWl0IHRoaXMgc2lnbmFsLgorCisg
ICAgXHNhIFFXZWJJbnNwZWN0b3IKKyovCisKKy8qIQogICAgIFxmbiB2b2lkIFFXZWJQYWdlOjp0
b29sQmFyVmlzaWJpbGl0eUNoYW5nZVJlcXVlc3RlZChib29sIHZpc2libGUpCiAKICAgICBUaGlz
IHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB0b29sYmFy
IGluIGEgd2ViIGJyb3dzZXIKZGlmZiAtLWdpdCBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggV2Vi
S2l0L3F0L0FwaS9xd2VicGFnZS5oCmluZGV4IDI0NzQxYTEuLjE4MWNhNDQgMTAwNjQ0Ci0tLSBX
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApAQCAt
NDcsMTIgKzQ3LDE1IEBAIGNsYXNzIFFXZWJOZXR3b3JrSW50ZXJmYWNlOwogY2xhc3MgUVdlYlBs
dWdpbkZhY3Rvcnk7CiBjbGFzcyBRV2ViSGl0VGVzdFJlc3VsdDsKIGNsYXNzIFFXZWJIaXN0b3J5
SXRlbTsKK2NsYXNzIFFXZWJJbnNwZWN0b3I7CitjbGFzcyBRV2ViRWxlbWVudDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENocm9tZUNsaWVudFF0OwogICAgIGNsYXNzIEVkaXRv
ckNsaWVudFF0OwogICAgIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50UXQ7CiAgICAgY2xhc3MgSW5z
cGVjdG9yQ2xpZW50UXQ7CisgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKICAgICBjbGFz
cyBSZXNvdXJjZUhhbmRsZTsKICAgICBjbGFzcyBIaXRUZXN0UmVzdWx0OwogCkBAIC0yMDEsNiAr
MjA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlldyhRV2lkZ2V0ICp2aWV3KTsKICAgICBR
V2lkZ2V0ICp2aWV3KCkgY29uc3Q7CiAKKyAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IoKSBj
b25zdDsKICAgICBib29sIGlzTW9kaWZpZWQoKSBjb25zdDsKICNpZm5kZWYgUVRfTk9fVU5ET1NU
QUNLCiAgICAgUVVuZG9TdGFjayAqdW5kb1N0YWNrKCkgY29uc3Q7CkBAIC0zMDYsNiArMzEwLDcg
QEAgUV9TSUdOQUxTOgogICAgIHZvaWQgd2luZG93Q2xvc2VSZXF1ZXN0ZWQoKTsKICAgICB2b2lk
IHByaW50UmVxdWVzdGVkKFFXZWJGcmFtZSAqZnJhbWUpOwogICAgIHZvaWQgbGlua0NsaWNrZWQo
Y29uc3QgUVVybCAmdXJsKTsKKyAgICB2b2lkIGluc3BlY3RFbGVtZW50VHJpZ2dlcmVkKCk7CiAK
ICAgICB2b2lkIHRvb2xCYXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVzdGVkKGJvb2wgdmlzaWJsZSk7
CiAgICAgdm9pZCBzdGF0dXNCYXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVzdGVkKGJvb2wgdmlzaWJs
ZSk7CkBAIC0zNDYsMTEgKzM1MSwxMyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBR
X1BSSVZBVEVfU0xPVChkLCB2b2lkIF9xX2NsZWFudXBMZWFrTWVzc2FnZXMoKSkKICNlbmRpZgor
CiAgICAgUVdlYlBhZ2VQcml2YXRlICpkOwogCiAgICAgZnJpZW5kIGNsYXNzIFFXZWJGcmFtZTsK
ICAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOwogICAgIGZyaWVuZCBjbGFzcyBRV2Vi
VmlldzsKKyAgICBmcmllbmQgY2xhc3MgUVdlYkluc3BlY3RvcjsKICAgICBmcmllbmQgY2xhc3Mg
V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkVkaXRv
ckNsaWVudFF0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
OwpkaWZmIC0tZ2l0IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIFdlYktpdC9xdC9BcGkvcXdl
YnBhZ2VfcC5oCmluZGV4IDg3YzYyNGQuLmE4YzY4OWMgMTAwNjQ0Ci0tLSBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlX3AuaAorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKQEAgLTY1LDYgKzY1
LDggQEAgY2xhc3MgUU1lbnU7CiBjbGFzcyBRQml0QXJyYXk7CiBRVF9FTkRfTkFNRVNQQUNFCiAK
K2NsYXNzIFFXZWJJbnNwZWN0b3I7CisKIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZSB7CiBwdWJsaWM6
CiAgICAgUVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlKik7CkBAIC0xMTEsNiArMTEzLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIGxlYXZlRXZlbnQoUUV2ZW50ICopOwogICAgIGJvb2wgaGFuZGxlU2Ny
b2xsaW5nKFFLZXlFdmVudCosIFdlYkNvcmU6OkZyYW1lKik7CiAKKyAgICB2b2lkIHNldEluc3Bl
Y3RvcihRV2ViSW5zcGVjdG9yKik7CisgICAgUVdlYkluc3BlY3RvciogZ2V0T3JDcmVhdGVJbnNw
ZWN0b3IoKTsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKCk7CisKICNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKICAgICBzdGF0aWMgUVdlYlBhZ2U6
OldlYkFjdGlvbiBlZGl0b3JBY3Rpb25Gb3JLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KTsKICNl
bmRpZgpAQCAtMTY4LDYgKzE3NCwxMCBAQCBwdWJsaWM6CiAKICAgICBRV2ViUGx1Z2luRmFjdG9y
eSAqcGx1Z2luRmFjdG9yeTsKIAorICAgIFFXaWRnZXQqIGluc3BlY3RvckZyb250ZW5kOworICAg
IFFXZWJJbnNwZWN0b3IqIGluc3BlY3RvcjsKKyAgICBib29sIGluc3BlY3RvcklzSW50ZXJuYWxP
bmx5OyAvLyBUcnVlIGlmIGNyZWF0ZWQgdGhyb3VnaCB0aGUgSW5zcGVjdCBjb250ZXh0IG1lbnUg
YWN0aW9uCisKICAgICBzdGF0aWMgYm9vbCBkcnRSdW47CiB9OwogCmRpZmYgLS1naXQgV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFdlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApp
bmRleCAxNTcxNDcwLi40OTQ1N2E3IDEwMDY0NAotLS0gV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuY3BwCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTMyMSw4ICszMjEs
OSBAQCBRV2ViU2V0dGluZ3MqIFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKQogICAgIFx2
YWx1ZSBKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIFNwZWNpZmllcyB3aGV0aGVyIEphdmFT
Y3JpcHQgcHJvZ3JhbXMKICAgICAgICAgY2FuIHJlYWQgb3Igd3JpdGUgdG8gdGhlIGNsaXBib2Fy
ZC4KICAgICBcdmFsdWUgRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCBFbmFibGVzIGV4dHJhIHRvb2xz
IGZvciBXZWIgZGV2ZWxvcGVycy4KLSAgICAgICAgQ3VycmVudGx5IHRoaXMgZW5hYmxlcyB0aGUg
Ikluc3BlY3QiIGVsZW1lbnQgaW4gdGhlIGNvbnRleHQgbWVudSwKLSAgICB3aGljaCBzaG93cyB0
aGUgV2ViS2l0IFdlYkluc3BlY3RvciBmb3Igd2ViIHNpdGUgZGVidWdnaW5nLgorICAgICAgICBD
dXJyZW50bHkgdGhpcyBlbmFibGVzIHRoZSAiSW5zcGVjdCIgZWxlbWVudCBpbiB0aGUgY29udGV4
dCBtZW51IGFzCisgICAgICAgIHdlbGwgYXMgdGhlIHVzZSBvZiBRV2ViSW5zcGVjdG9yIHdoaWNo
IGNvbnRyb2xzIHRoZSBXZWJLaXQgV2ViSW5zcGVjdG9yCisgICAgICAgIGZvciB3ZWIgc2l0ZSBk
ZWJ1Z2dpbmcuCiAgICAgXHZhbHVlIExpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4gU3BlY2lmaWVz
IHdoZXRoZXIgaHlwZXJsaW5rcyBzaG91bGQgYmUKICAgICAgICAgaW5jbHVkZWQgaW4gdGhlIGtl
eWJvYXJkIGZvY3VzIGNoYWluLgogICAgIFx2YWx1ZSBab29tVGV4dE9ubHkgU3BlY2lmaWVzIHdo
ZXRoZXIgdGhlIHpvb20gZmFjdG9yIG9uIGEgZnJhbWUgYXBwbGllcyB0bwpkaWZmIC0tZ2l0IFdl
YktpdC9xdC9DaGFuZ2VMb2cgV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjMWRhNjMyLi4xNDU4
MTRkIDEwMDY0NAotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZworKysgV2ViS2l0L3F0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU4IEBACisyMDA5LTA5LTA3ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5
bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgW1F0XSBNYWtlIHRoZSBXZWJJbnNwZWN0b3IgYXZhaWxhYmxlIGFzIGEg
d2lkZ2V0IGNsYXNzLgorCisgICAgICAgICogQXBpL2hlYWRlcnMucHJpOgorICAgICAgICAqIEFw
aS9xd2ViZWxlbWVudC5oOgorICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmNwcDogQWRkZWQu
CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpRV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJJ
bnNwZWN0b3I6On5RV2ViSW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OnNldFBh
Z2UpOgorICAgICAgICAoUVdlYkluc3BlY3Rvcjo6cGFnZSk6CisgICAgICAgIChRV2ViSW5zcGVj
dG9yOjpkb2NrKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OnVuZG9jayk6CisgICAgICAgIChR
V2ViSW5zcGVjdG9yOjppc0RvY2tlZCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpzaXplSGlu
dCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpldmVudCk6CisgICAgICAgIChRV2ViSW5zcGVj
dG9yOjpyZXNpemVFdmVudCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpzaG93RXZlbnQpOgor
ICAgICAgICAoUVdlYkluc3BlY3Rvcjo6aGlkZUV2ZW50KToKKyAgICAgICAgKFFXZWJJbnNwZWN0
b3JQcml2YXRlOjpzZXRGcm9udGVuZCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yUHJpdmF0ZTo6
c2V0RG9ja2VkKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3JQcml2YXRlOjphZGp1c3RGcm9udGVu
ZFNpemUpOgorICAgICAgICAqIEFwaS9xd2ViaW5zcGVjdG9yLmg6IEFkZGVkLgorICAgICAgICAq
IEFwaS9xd2ViaW5zcGVjdG9yX3AuaDogQWRkZWQuCisgICAgICAgIChRV2ViSW5zcGVjdG9yUHJp
dmF0ZTo6UVdlYkluc3BlY3RvclByaXZhdGUpOgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6
CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChR
V2ViUGFnZVByaXZhdGU6OnNldEluc3BlY3Rvcik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6
OmdldE9yQ3JlYXRlSW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5zcGVj
dG9yQ29udHJvbGxlcik6CisgICAgICAgIChRV2ViUGFnZTo6flFXZWJQYWdlKToKKyAgICAgICAg
KFFXZWJQYWdlOjppbnNwZWN0b3IpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24p
OgorICAgICAgICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6
CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogUXRMYXVuY2hlci9t
YWluLmNwcDoKKyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFp
bldpbmRvdzo6ZG9ja0luc3BlY3Rvcik6CisgICAgICAgIChNYWluV2luZG93Ojp1bmRvY2tJbnNw
ZWN0b3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6Okluc3BlY3RvckNsaWVu
dFdlYlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQ
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzaG93V2luZG93KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjbG9zZVdpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6YXR0YWNoV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpkZXRhY2hXaW5kb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorICAgICAgICAqIGRvY3Mvd2Via2l0
c25pcHBldHMvcXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcDogQWRkZWQuCisgICAg
ICAgICh3cmFwSW5GdW5jdGlvbik6CisKIDIwMDktMDktMDUgIEpha3ViIFdpZWN6b3JlayAgPGZh
dzIxN0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYg
LS1naXQgV2ViS2l0L3F0L1F0TGF1bmNoZXIvbWFpbi5jcHAgV2ViS2l0L3F0L1F0TGF1bmNoZXIv
bWFpbi5jcHAKaW5kZXggMzc5MDlhZi4uYWVkMjlkOCAxMDA2NDQKLS0tIFdlYktpdC9xdC9RdExh
dW5jaGVyL21haW4uY3BwCisrKyBXZWJLaXQvcXQvUXRMYXVuY2hlci9tYWluLmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgogI2luY2x1ZGUgPHF3ZWJzZXR0aW5n
cy5oPgogI2luY2x1ZGUgPHF3ZWJlbGVtZW50Lmg+CisjaW5jbHVkZSA8cXdlYmluc3BlY3Rvci5o
PgogCiAjaW5jbHVkZSA8UXRHdWk+CiAjaW5jbHVkZSA8UURlYnVnPgpAQCAtNzEsMTIgKzcyLDEy
IEBAIHB1YmxpYzoKICAgICBNYWluV2luZG93KFFTdHJpbmcgdXJsID0gUVN0cmluZygpKTogY3Vy
cmVudFpvb20oMTAwKSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRlT25DbG9z
ZSk7CiAKLSAgICAgICAgdmlldyA9IG5ldyBRV2ViVmlldyh0aGlzKTsKLSAgICAgICAgc2V0Q2Vu
dHJhbFdpZGdldCh2aWV3KTsKKyAgICAgICAgUVNwbGl0dGVyKiBzcGxpdHRlciA9IG5ldyBRU3Bs
aXR0ZXIoUXQ6OlZlcnRpY2FsLCB0aGlzKTsKKyAgICAgICAgc2V0Q2VudHJhbFdpZGdldChzcGxp
dHRlcik7CiAKKyAgICAgICAgdmlldyA9IG5ldyBRV2ViVmlldyhzcGxpdHRlcik7CiAgICAgICAg
IFdlYlBhZ2UqIHBhZ2UgPSBuZXcgV2ViUGFnZSh2aWV3KTsKICAgICAgICAgdmlldy0+c2V0UGFn
ZShwYWdlKTsKLSAgICAgICAgCiAgICAgICAgIGNvbm5lY3QodmlldywgU0lHTkFMKGxvYWRGaW5p
c2hlZChib29sKSksCiAgICAgICAgICAgICAgICAgdGhpcywgU0xPVChsb2FkRmluaXNoZWQoKSkp
OwogICAgICAgICBjb25uZWN0KHZpZXcsIFNJR05BTCh0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmlu
ZyYpKSwKQEAgLTg1LDYgKzg2LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB0aGlzLCBT
TE9UKHNob3dMaW5rSG92ZXIoY29uc3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmKSkpOwogICAg
ICAgICBjb25uZWN0KHZpZXctPnBhZ2UoKSwgU0lHTkFMKHdpbmRvd0Nsb3NlUmVxdWVzdGVkKCkp
LCB0aGlzLCBTTE9UKGNsb3NlKCkpKTsKIAorICAgICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0
b3IgPSBuZXcgUVdlYkluc3BlY3RvcihzcGxpdHRlcik7CisgICAgICAgIGluc3BlY3Rvci0+c2V0
UGFnZShwYWdlKTsKKyAgICAgICAgaW5zcGVjdG9yLT5kb2NrKCk7CisgICAgICAgIGluc3BlY3Rv
ci0+aGlkZSgpOworICAgICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChkZXN0cm95ZWQoKSksIGlu
c3BlY3RvciwgU0xPVChkZWxldGVMYXRlcigpKSk7CisgICAgICAgIGNvbm5lY3QocGFnZSwgU0lH
TkFMKGluc3BlY3RFbGVtZW50VHJpZ2dlcmVkKCkpLCBpbnNwZWN0b3IsIFNMT1Qoc2hvdygpKSk7
CisgICAgICAgIGNvbm5lY3QoaW5zcGVjdG9yLCBTSUdOQUwoZG9ja1JlcXVlc3RlZCgpKSwgdGhp
cywgU0xPVChkb2NrSW5zcGVjdG9yKCkpKTsKKyAgICAgICAgY29ubmVjdChpbnNwZWN0b3IsIFNJ
R05BTCh1bmRvY2tSZXF1ZXN0ZWQoKSksIHRoaXMsIFNMT1QodW5kb2NrSW5zcGVjdG9yKCkpKTsK
KwogICAgICAgICBzZXR1cFVJKCk7CiAKICAgICAgICAgLy8gc2V0IHRoZSBwcm94eSB0byB0aGUg
aHR0cF9wcm94eSBlbnYgdmFyaWFibGUgLSBpZiBwcmVzZW50ICAgICAgICAKQEAgLTIxNSw2ICsy
MjUsMTggQEAgcHJvdGVjdGVkIHNsb3RzOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBk
b2NrSW5zcGVjdG9yKCkgeworICAgICAgICB2aWV3LT5wYWdlKCktPmluc3BlY3RvcigpLT5zZXRQ
YXJlbnQoY2VudHJhbFdpZGdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHVuZG9ja0luc3BlY3Rv
cigpIHsKKyAgICAgICAgUVdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gdmlldy0+cGFnZSgpLT5p
bnNwZWN0b3IoKTsKKyAgICAgICAgYm9vbCB2aXNpYmxlID0gaW5zcGVjdG9yLT5pc1Zpc2libGUo
KTsKKyAgICAgICAgaW5zcGVjdG9yLT5zZXRQYXJlbnQoMCk7CisgICAgICAgIGluc3BlY3Rvci0+
cmVzaXplKGluc3BlY3Rvci0+c2l6ZSgpLmV4cGFuZGVkVG8oaW5zcGVjdG9yLT5zaXplSGludCgp
KSk7CisgICAgICAgIGluc3BlY3Rvci0+c2V0VmlzaWJsZSh2aXNpYmxlKTsKKyAgICB9CisKIHB1
YmxpYyBzbG90czoKIAogICAgIHZvaWQgbmV3V2luZG93KGNvbnN0IFFTdHJpbmcgJnVybCA9IFFT
dHJpbmcoKSkgewpkaWZmIC0tZ2l0IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5jcHAgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNw
cAppbmRleCA1NmY2MTAxLi5mZjllZGI3IDEwMDY0NAotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0LmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudFF0LmgiCiAKKyNpbmNsdWRlICJxd2ViaW5zcGVj
dG9yLmgiCisjaW5jbHVkZSAicXdlYmluc3BlY3Rvcl9wLmgiCiAjaW5jbHVkZSAicXdlYnBhZ2Uu
aCIKICNpbmNsdWRlICJxd2VicGFnZV9wLmgiCiAjaW5jbHVkZSAicXdlYnZpZXcuaCIKQEAgLTQ0
LDQ4ICs0NiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3RvckNs
aWVudFdlYlBhZ2UgOiBwdWJsaWMgUVdlYlBhZ2UKLXsKK2NsYXNzIEluc3BlY3RvckNsaWVudFdl
YlBhZ2UgOiBwdWJsaWMgUVdlYlBhZ2UgewogICAgIFFfT0JKRUNUCiAgICAgZnJpZW5kIGNsYXNz
IEluc3BlY3RvckNsaWVudFF0OwogcHVibGljOgotICAgIFFXZWJQYWdlKiBjcmVhdGVXaW5kb3co
UVdlYlBhZ2U6OldlYldpbmRvd1R5cGUpCi0gICAgewotICAgICAgICBRV2lkZ2V0ICp3ID0gbmV3
IFFXZWJWaWV3KDApOwotICAgICAgICBRV2ViUGFnZSAqcGFnZSA9IG5ldyBRV2ViUGFnZSh3KTsK
LSAgICAgICAgcGFnZS0+c2V0Vmlldyh3KTsKLSAgICAgICAgY29ubmVjdChwYWdlLCBTSUdOQUwo
ZGVzdHJveWVkKCkpLCB3LCBTTE9UKGRlbGV0ZUxhdGVyKCkpKTsKLSAgICAgICAgcmV0dXJuIHBh
Z2U7Ci0gICAgfQotCi1RX1NJR05BTFM6Ci0gICAgdm9pZCBhdHRhY2hSZXF1ZXN0ZWQoKTsKLSAg
ICB2b2lkIGRldGFjaFJlcXVlc3RlZCgpOwotfTsKLQotCi1jbGFzcyBJbnNwZWN0b3JDbGllbnRW
aWV3IDogcHVibGljIFFXZWJWaWV3IHsKLQotcHVibGljOgotICAgIEluc3BlY3RvckNsaWVudFZp
ZXcoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKLSAgICAgICAgOiBRV2ViVmlldygw
KQotICAgICAgICAsIG1fY29udHJvbGxlcihjb250cm9sbGVyKQorICAgIEluc3BlY3RvckNsaWVu
dFdlYlBhZ2UoUU9iamVjdCogcGFyZW50ID0gMCkKKyAgICA6IFFXZWJQYWdlKHBhcmVudCkKICAg
ICB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRlT25DbG9zZSwgdHJ1ZSk7Ci0g
ICAgICAgIHNldFBhZ2UobmV3IEluc3BlY3RvckNsaWVudFdlYlBhZ2UpOwotICAgICAgICBjb25u
ZWN0KHBhZ2UoKSwgU0lHTkFMKGRlc3Ryb3llZCgpKSwgdGhpcywgU0xPVChjbG9zZSgpKSk7Cisg
ICAgICAgIHNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4
dHJhc0VuYWJsZWQsIGZhbHNlKTsKICAgICB9CiAKLXByb3RlY3RlZDoKLQotICAgIHZvaWQgY2xv
c2VFdmVudChRQ2xvc2VFdmVudCogZXYpCisgICAgUVdlYlBhZ2UqIGNyZWF0ZVdpbmRvdyhRV2Vi
UGFnZTo6V2ViV2luZG93VHlwZSkKICAgICB7Ci0gICAgICAgIFFXaWRnZXQ6OmNsb3NlRXZlbnQo
ZXYpOwotICAgICAgICBtX2NvbnRyb2xsZXItPnNldFdpbmRvd1Zpc2libGUoZmFsc2UpOworICAg
ICAgICBRV2ViVmlldyogdmlldyA9IG5ldyBRV2ViVmlldzsKKyAgICAgICAgUVdlYlBhZ2UqIHBh
Z2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgICAgIHZpZXctPnNldFBhZ2UocGFnZSk7CisgICAgICAg
IHZpZXctPnNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRlT25DbG9zZSk7CisgICAgICAgIHJldHVy
biBwYWdlOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBtX2Nv
bnRyb2xsZXI7CiB9OwogCiAKQEAgLTEwMCwxNCArNzgsMTkgQEAgdm9pZCBJbnNwZWN0b3JDbGll
bnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogUGFnZSogSW5zcGVjdG9yQ2xpZW50UXQ6OmNy
ZWF0ZVBhZ2UoKQogewotICAgIGlmIChtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVybiBtX3dlYlBh
Z2UtPmQtPnBhZ2U7CisgICAgaWYgKG1faW5zcGVjdG9yVmlldykKKyAgICAgICAgcmV0dXJuIG1f
aW5zcGVjdG9yVmlldy0+cGFnZSgpLT5kLT5wYWdlOworCisgICAgUVdlYlZpZXcqIGluc3BlY3Rv
clZpZXcgPSBuZXcgUVdlYlZpZXc7CisgICAgSW5zcGVjdG9yQ2xpZW50V2ViUGFnZSogaW5zcGVj
dG9yUGFnZSA9IG5ldyBJbnNwZWN0b3JDbGllbnRXZWJQYWdlKGluc3BlY3RvclZpZXcpOworICAg
IGluc3BlY3RvclZpZXctPnNldFBhZ2UoaW5zcGVjdG9yUGFnZSk7CisgICAgbV9pbnNwZWN0b3JW
aWV3LnNldChpbnNwZWN0b3JWaWV3KTsKIAotICAgIEluc3BlY3RvckNsaWVudFZpZXcqIHZpZXcg
PSBuZXcgSW5zcGVjdG9yQ2xpZW50VmlldyhtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPnBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKSk7Ci0gICAgbV93ZWJQYWdlLnNldChxb2JqZWN0X2Nhc3Q8SW5z
cGVjdG9yQ2xpZW50V2ViUGFnZSo+KHZpZXctPnBhZ2UoKSkpOwotICAgIG1fd2ViUGFnZS0+bWFp
bkZyYW1lKCktPmxvYWQoUVN0cmluZzo6ZnJvbUxhdGluMSgicXJjOi93ZWJraXQvaW5zcGVjdG9y
L2luc3BlY3Rvci5odG1sIikpOwotICAgIG1fd2ViUGFnZS0+dmlldygpLT5zZXRNaW5pbXVtU2l6
ZSg0MDAsMzAwKTsKLSAgICByZXR1cm4gbV93ZWJQYWdlLT5kLT5wYWdlOworICAgIGluc3BlY3Rv
clBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkKFFTdHJpbmc6OmZyb21MYXRpbjEoInFyYzovd2Via2l0
L2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbCIpKTsKKyAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQt
Pmluc3BlY3RvckZyb250ZW5kID0gaW5zcGVjdG9yVmlldzsKKyAgICBtX2luc3BlY3RlZFdlYlBh
Z2UtPmQtPmdldE9yQ3JlYXRlSW5zcGVjdG9yKCktPmQtPnNldEZyb250ZW5kKGluc3BlY3RvclZp
ZXcpOworCisgICAgcmV0dXJuIG1faW5zcGVjdG9yVmlldy0+cGFnZSgpLT5kLT5wYWdlOwogfQog
CiBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50UXQ6OmxvY2FsaXplZFN0cmluZ3NVUkwoKQpAQCAtMTI0
LDQ0ICsxMDcsMzEgQEAgU3RyaW5nIEluc3BlY3RvckNsaWVudFF0OjpoaWRkZW5QYW5lbHMoKQog
CiB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpzaG93V2luZG93KCkKIHsKLSAgICBpZiAoIW1fd2Vi
UGFnZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgdXBkYXRlV2luZG93VGl0bGUoKTsKLSAgICBt
X3dlYlBhZ2UtPnZpZXcoKS0+c2hvdygpOwotICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+cGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5kb3dWaXNpYmxlKHRydWUpOwotfQogCi12
b2lkIEluc3BlY3RvckNsaWVudFF0OjpjbG9zZVdpbmRvdygpCi17Ci0gICAgaWYgKCFtX3dlYlBh
Z2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2ViUGFnZS0+dmlldygpLT5oaWRlKCk7Ci0g
ICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNl
dFdpbmRvd1Zpc2libGUoZmFsc2UpOworICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBpbnNwZWN0
b3IgdG8gYXNrIGZvciB2aXNpYmlsaXR5IGl0c2VsZi4KKyAgICAvLyBJbnNwZWN0aW5nIGFuIGVs
ZW1lbnQgb3IgY2FsbGluZyBRV2ViSW5zcGVjdG9yOjpzaG93KCkgc2hvdWxkIGFscmVhZHkgaGF2
ZSBtYWRlIHRoZQorICAgIC8vIHdpbmRvdyB2aXNpYmxlLgorICAgIGJvb2wgYXR0YWNoZWQgPSBt
X2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3RvciA/IG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+
aW5zcGVjdG9yLT5pc0RvY2tlZCgpIDogZmFsc2U7CisgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5k
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdpbmRvd1Zpc2libGUodHJ1ZSwgYXR0YWNoZWQp
OwogfQogCi1ib29sIEluc3BlY3RvckNsaWVudFF0Ojp3aW5kb3dWaXNpYmxlKCkKK3ZvaWQgSW5z
cGVjdG9yQ2xpZW50UXQ6OmNsb3NlV2luZG93KCkKIHsKLSAgICBpZiAoIW1fd2ViUGFnZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX3dlYlBhZ2UtPnZpZXcoKS0+aXNWaXNp
YmxlKCk7CisgICAgaWYgKG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yKQorICAgICAg
ICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3Rvci0+Y2xvc2UoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDbGllbnRRdDo6YXR0YWNoV2luZG93KCkKIHsKLSAgICBpZiAoIW1fd2ViUGFnZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgZW1pdCBtX3dlYlBhZ2UtPmF0dGFjaFJlcXVlc3RlZCgp
OworICAgIGlmIChtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3RvcikKKyAgICAgICAgbV9p
bnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3ItPmQtPnNldERvY2tlZCh0cnVlKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6ZGV0YWNoV2luZG93KCkKIHsKLSAgICBpZiAoIW1fd2Vi
UGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW1pdCBtX3dlYlBhZ2UtPmRldGFjaFJlcXVl
c3RlZCgpOworICAgIGlmIChtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3RvcikKKyAgICAg
ICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3ItPmQtPnNldERvY2tlZChmYWxzZSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVu
c2lnbmVkIGhlaWdodCkKQEAgLTE5MiwxMSArMTYyLDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50
UXQ6Omluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQoKQogCiB2b2lkIEluc3BlY3RvckNsaWVu
dFF0Ojp1cGRhdGVXaW5kb3dUaXRsZSgpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFFTdHJpbmcgY2FwdGlvbiA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiV2ViIEluc3BlY3RvciAtICUyIik7Ci0gICAgbV93ZWJQYWdlLT52
aWV3KCktPnNldFdpbmRvd1RpdGxlKGNhcHRpb24uYXJnKG1faW5zcGVjdGVkVVJMKSk7CisgICAg
aWYgKG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yKSB7CisgICAgICAgIFFTdHJpbmcg
Y2FwdGlvbiA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiV2ViIElu
c3BlY3RvciAtICUyIikuYXJnKG1faW5zcGVjdGVkVVJMKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRX
ZWJQYWdlLT5kLT5pbnNwZWN0b3ItPnNldFdpbmRvd1RpdGxlKGNhcHRpb24pOworICAgICAgICBl
bWl0IG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yLT53aW5kb3dUaXRsZUNoYW5nZWQo
Y2FwdGlvbik7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudFF0Ojpwb3B1bGF0ZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3RvckNvbnRyb2xsZXI6OlNldHRpbmcmIHNl
dHRpbmcpCmRpZmYgLS1naXQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmggV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKaW5kZXgg
MDNjNjg0YS4uY2NmOGI2OSAxMDA2NDQKLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5oCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50UXQuaApAQCAtMzUsMTIgKzM1LDEyIEBACiAjaW5jbHVkZSA8UXRDb3JlL1FTdHJpbmc+CiAK
IGNsYXNzIFFXZWJQYWdlOworY2xhc3MgUVdlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgU3RyaW5nOwotICAg
IGNsYXNzIEluc3BlY3RvckNsaWVudFdlYlBhZ2U7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JDbGll
bnRRdCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQgewogICAgIHB1YmxpYzoKQEAgLTU2LDcgKzU2
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93V2lu
ZG93KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOwotICAgICAgICB2aXJ0
dWFsIGJvb2wgd2luZG93VmlzaWJsZSgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hX
aW5kb3coKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwpAQCAtNzYsNyAr
NzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB1
cGRhdGVXaW5kb3dUaXRsZSgpOwogICAgICAgICBRV2ViUGFnZSogbV9pbnNwZWN0ZWRXZWJQYWdl
OwotICAgICAgICBPd25QdHI8SW5zcGVjdG9yQ2xpZW50V2ViUGFnZT4gbV93ZWJQYWdlOworICAg
ICAgICBPd25QdHI8UVdlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKICAgICAgICAgUVN0cmluZyBt
X2luc3BlY3RlZFVSTDsKICAgICB9OwogfQpkaWZmIC0tZ2l0IFdlYktpdC9xdC9kb2NzL3dlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBldC5jcHAgV2ViS2l0L3F0L2Rv
Y3Mvd2Via2l0c25pcHBldHMvcXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWNlZjQwCi0tLSAvZGV2L251bGwKKysr
IFdlYktpdC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25p
cHBldC5jcHAKQEAgLTAsMCArMSwxNyBAQAorCit2b2lkIHdyYXBJbkZ1bmN0aW9uKCkKK3sKKwor
Ly8hIFswXQorICAgIC8vIC4uLgorICAgIFFXZWJQYWdlICpwYWdlID0gbmV3IFFXZWJQYWdlOwor
ICAgIC8vIC4uLgorCisgICAgUVdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gbmV3IFFXZWJJbnNw
ZWN0b3I7CisgICAgaW5zcGVjdG9yLT5zZXRQYWdlKHBhZ2UpOworCisgICAgY29ubmVjdChwYWdl
LCBTSUdOQUwoaW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQoKSksIGluc3BlY3RvciwgU0xPVChzaG93
KCkpKTsKKy8vISBbMF0KKworfQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39174</attachid>
            <date>2009-09-08 01:20:22 -0700</date>
            <delta_ts>2009-09-09 01:38:39 -0700</delta_ts>
            <desc>Changes v0.3</desc>
            <filename>qwebinspector.patch</filename>
            <type>text/plain</type>
            <size>32607</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGJmMmM2MS4uY2RhZmY3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0wOS0wNyAgSm9jZWx5biBUdXJj
b3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gTWFrZSB0aGUgV2ViSW5zcGVjdG9yIGF2
YWlsYWJsZSBhcyBhIHdpZGdldCBjbGFzcy4KKworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisKIDIwMDktMDktMDcgIE1p
Y2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggNjEzNTYyYy4uZDg0NGM3OCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yMzcxLDYgKzIzNzEs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJwbHVnaW5mYWN0b3J5
LmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIFwKICAg
ICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJkYXRhYmFzZS5jcHAgXAorICAgIC4uL1dlYktpdC9xdC9B
cGkvcXdlYmluc3BlY3Rvci5jcHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmtpdHZlcnNp
b24uY3BwCiAKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDI3
Y2QwMDQuLmM5ZGI3MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTE4OCw2ICsxODgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGF0dGFjaFdpbmRvdygpOwog
ICAgIHZvaWQgZGV0YWNoV2luZG93KCk7CisgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvdyhib29s
KTsKIAogICAgIHZvaWQgdG9nZ2xlU2VhcmNoRm9yTm9kZUluUGFnZSgpOwogICAgIGJvb2wgc2Vh
cmNoaW5nRm9yTm9kZUluUGFnZSgpIHsgcmV0dXJuIG1fc2VhcmNoaW5nRm9yTm9kZTsgfTsKQEAg
LTI3Myw3ICsyNzQsNiBAQCBwcml2YXRlOgogICAgIC8vIEZvbGxvd2luZyBhcmUgdXNlZCBmcm9t
IEluc3BlY3RvckJhY2tlbmQgYW5kIGludGVybmFsbHkuCiAgICAgdm9pZCBzY3JpcHRPYmplY3RS
ZWFkeSgpOwogICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0Owot
ICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3coYm9vbCk7CiAgICAgdm9pZCBzZXRBdHRhY2hlZFdp
bmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpOwogICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFu
ZWwoY29uc3QgU3RyaW5nJiBwYW5lbE5hbWUpOwogICAgIHZvaWQgY2xvc2VXaW5kb3coKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkgYi9XZWJLaXQvcXQvQXBpL2hlYWRl
cnMucHJpCmluZGV4IDkyYTEyMGQuLmNhOWNmOTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkv
aGVhZGVycy5wcmkKKysrIGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQpAQCAtMTAsNCArMTAs
NSBAQCBXRUJLSVRfQVBJX0hFQURFUlMgPSAkJFBXRC9xd2ViZnJhbWUuaCBcCiAgICAgICAgICAg
ICAgICAgICAgICAkJFBXRC9xd2VicGx1Z2luZGF0YWJhc2UuaCBcCiAgICAgICAgICAgICAgICAg
ICAgICAkJFBXRC9xd2VicGx1Z2luZmFjdG9yeS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQk
UFdEL3F3ZWJoaXN0b3J5LmggXAorICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYmluc3Bl
Y3Rvci5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJraXR2ZXJzaW9uLmgKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuaCBiL1dlYktpdC9xdC9BcGkvcXdl
YmVsZW1lbnQuaAppbmRleCBiYzZmOGE5Li4wYmU4YzVhIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
QXBpL3F3ZWJlbGVtZW50LmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5oCkBAIC0x
NDIsNiArMTQyLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBRV2ViRWxlbWVudChXZWJDb3Jl
OjpOb2RlKik7CiAKICAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lOworICAgIGZyaWVuZCBjbGFz
cyBRV2ViUGFnZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYkhpdFRlc3RSZXN1bHQ7CiAgICAgZnJp
ZW5kIGNsYXNzIFFXZWJIaXRUZXN0UmVzdWx0UHJpdmF0ZTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmluc3BlY3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxZGUzMgotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYmluc3BlY3Rvci5jcHAKQEAgLTAsMCArMSwyNDkg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJx
d2ViaW5zcGVjdG9yLmgiCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUgInF3ZWJlbGVtZW50LmgiCisjaW5jbHVkZSAicXdl
Ymluc3BlY3Rvcl9wLmgiCisjaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgorCisjaW5jbHVkZSA8UVJl
c2l6ZUV2ZW50PgorCisvLyBUT0RPOiBoYW5kbGUgdGhlICJBbHdheXMgZW5hYmxlIiBjb21tYW5k
cyB3aXRoIFFXZWJTZXR0aW5ncworLy8gVE9ETzogYWRkIGFwaSB0byBjaGFuZ2UgYW5kIGdldCB0
aGUgYWN0aXZlIHRhYj8KKy8vIFRPRE86IGZpbGwgb3IgZGlzYWJsZSB0aGUgRGF0YWJhc2VzIHRh
Yj8KKworLyohCisgICAgXGNsYXNzIFFXZWJJbnNwZWN0b3IKKyAgICBcc2luY2UgNC42CisgICAg
XGJyaWVmIFRoZSBRV2ViSW5zcGVjdG9yIGNsYXNzIGFsbG93cyB0aGUgcGxhY2VtZW50IGFuZCBj
b250cm9sIG9mIGEKKyAgICBRV2ViUGFnZSdzIGluc3BlY3Rvci4KKyAgICBBbiBpbnNwZWN0b3Ig
YWxsb3dzIHlvdSB0byBzZWUgYSBwYWdlIGN1cnJlbnQgaGllcmFyY2h5IGFuZCBsb2FkaW5nCisg
ICAgc3RhdGlzdGljcy4KKworICAgIFRoZSBRV2ViUGFnZSB0byBiZSBpbnNwZWN0ZWQgaXMgZGV0
ZXJtaW5lZCB3aXRoIHRoZSBzZXRQYWdlKCkgbWV0aG9kLgorCisgICAgQSB0eXBpY2FsIHVzZSBv
ZiBRV2ViSW5zcGVjdG9yIGZvbGxvd3M6CisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9x
dHdlYmtpdF9xd2ViaW5zcGVjdG9yX3NuaXBwZXQuY3BwIDAKKworICAgIFRoaXMgY2xhc3MgYWN0
cyBtb3N0bHkgYXMgYSBjb250YWluZXIgYW5kIGEgY29udHJvbGxlciBmb3IgdGhlIGluc3BlY3Rv
ci4KKyAgICBNb3N0IG9mIHRoZSByZXNvdXJjZXMgbmVlZGVkIGZvciB0aGUgaW5zcGVjdG9yIGFy
ZSBiaW5kZWQgdG8gUVdlYlBhZ2UsCisgICAgYW5kIGFyZSBhbGxvY2F0ZWQgdGhlIGZpcnN0IHRp
bWUgdGhhdDoKKyAgICBcbGlzdAorICAgICAgICBcbyBhbiBlbGVtZW50IGlzIGluc3BlY3RlZAor
ICAgICAgICBcbyB0aGUgUVdlYkluc3BlY3RvciBpcyBzaG93bi4KKyAgICBcZW5kbGlzdAorCisg
ICAgXG5vdGUgQSBRV2ViSW5zcGVjdG9yIHdpbGwgZGlzcGxheSBhIGJsYW5rIHdpZGdldCBpZiBl
aXRoZXI6CisgICAgXGxpc3QKKyAgICAgICAgXG8gcGFnZSgpIGlzIG51bGwKKyAgICAgICAgXG8g
UVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkIGlzIGZhbHNlCisgICAgXGVuZGxp
c3QKKyovCisKKy8qIQorICAgIENvbnN0cnVjdHMgYW4gZW1wdHkgUVdlYkluc3BlY3RvciB3aXRo
IHBhcmVudCBcYSBwYXJlbnQuCisqLworUVdlYkluc3BlY3Rvcjo6UVdlYkluc3BlY3RvcihRV2lk
Z2V0KiBwYXJlbnQpCisgICAgOiBRV2lkZ2V0KHBhcmVudCkKKyAgICAsIGQobmV3IFFXZWJJbnNw
ZWN0b3JQcml2YXRlKHRoaXMpKQoreworfQorCisvKiEKKyAgICBEZXN0cm95cyB0aGUgaW5zcGVj
dG9yLgorKi8KK1FXZWJJbnNwZWN0b3I6On5RV2ViSW5zcGVjdG9yKCkKK3sKKyAgICAvLyBSZW1v
dmUgYXNzb2NpYXRpb24gcHJpbmNpcGFsbHkgdG8gcHJldmVudCBkZWxldGluZyBhIGNoaWxkIGZy
b250ZW5kCisgICAgc2V0UGFnZSgwKTsKK30KKworLyohCisgICAgU2V0cyB0aGUgUVdlYlBhZ2Ug
dG8gYmUgaW5zcGVjdGVkLgorCisgICAgRWZmZWN0cyB3aWxsIGJlIHJlZmxlY3RlZCBvbiBRV2Vi
UGFnZTo6aW5zcGVjdG9yKCkuCisgICAgVGhlcmUgY2FuIG9ubHkgYmUgb25lIFFXZWJJbnNwZWN0
b3IgYXNzb2NpYXRlZCB3aXRoIGEgUVdlYlBhZ2UKKyAgICBhbmQgdmljZXMgdmVyc2EuCisKKyAg
ICBDYWxsaW5nIHdpdGggXGEgcGFnZSBhcyBudWxsIHdpbGwgYnJlYWsgdGhlIGN1cnJlbnQgYXNz
b2NpYXRpb24sIGlmIGFueS4KKworICAgIFxzYSBwYWdlKCksIFFXZWJQYWdlOjppbnNwZWN0b3Io
KQorKi8KK3ZvaWQgUVdlYkluc3BlY3Rvcjo6c2V0UGFnZShRV2ViUGFnZSogcGFnZSkKK3sKKyAg
ICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+ZC0+c2V0SW5zcGVjdG9yKDApOworCisg
ICAgZC0+cGFnZSA9IHBhZ2U7CisKKyAgICBpZiAocGFnZSkgeworICAgICAgICAvLyBTZXR1cCB0
aGUgcmVjaXByb2NhbCBhc3NvY2lhdGlvbgorICAgICAgICBwYWdlLT5kLT5zZXRJbnNwZWN0b3Io
dGhpcyk7CisKKyAgICAgICAgcGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRBdHRh
Y2hlZFdpbmRvdyhpc0RvY2tlZCgpKTsKKyAgICB9Cit9CisKKy8qIQorICAgIFJldHVybnMgdGhl
IGluc3BlY3RlZCBRV2ViUGFnZS4KKyAgICBJZiBubyB3ZWIgcGFnZSBpcyBjdXJyZW50bHkgYXNz
b2NpYXRlZCwgYSBudWxsIHBvaW50ZXIgaXMgcmV0dXJuZWQuCisqLworUVdlYlBhZ2UqIFFXZWJJ
bnNwZWN0b3I6OnBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBkLT5wYWdlOworfQorCisvKiEK
KyAgICBUaGlzIG1ldGhvZCBjaGFuZ2VzIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBpbnNwZWN0b3Ig
dG8gbWF0Y2ggYSBkb2NrZWQgc3RhdGUuCisgICAgVGhpcyBvbmx5IGNvbnRyb2xzIHRoZSBhcHBl
YXJhbmNlLCB0aGUgYWN0dWFsIGRvY2tpbmcgb2YgdGhlIFFXZWJJbnNwZWN0b3IKKyAgICB3aWRn
ZXQgdG8gdGhlIHVzZXIgaW50ZXJmYWNlIG11c3QgYmUgZG9uZSBzZXBhcmF0ZWx5LgorCisgICAg
XHNhIHVuZG9jaygpLCBpc0RvY2tlZCgpLCBkb2NrUmVxdWVzdGVkKCksIHVuZG9ja1JlcXVlc3Rl
ZCgpCisqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpkb2NrKCkKK3sKKyAgICBkLT5pc0RvY2tlZCA9
IHRydWU7CisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+c2V0QXR0YWNoZWRXaW5kb3codHJ1ZSk7Cit9CisKKy8qIQorICAgIFRoaXMg
bWV0aG9kIGNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIGluc3BlY3RvciB0byBtYXRjaCBh
biB1bmRvY2tlZCBzdGF0ZS4KKyAgICBUaGlzIG9ubHkgY29udHJvbHMgdGhlIGFwcGVhcmFuY2Us
IHRoZSBhY3R1YWwgdW5kb2NraW5nIG9mIHRoZSBRV2ViSW5zcGVjdG9yCisgICAgd2lkZ2V0IGZy
b20gdGhlIHVzZXIgaW50ZXJmYWNlIG11c3QgYmUgZG9uZSBzZXBhcmF0ZWx5LgorCisgICAgXHNh
IGRvY2soKSwgaXNEb2NrZWQoKSwgZG9ja1JlcXVlc3RlZCgpLCB1bmRvY2tSZXF1ZXN0ZWQoKQor
Ki8KK3ZvaWQgUVdlYkluc3BlY3Rvcjo6dW5kb2NrKCkKK3sKKyAgICBkLT5pc0RvY2tlZCA9IGZh
bHNlOworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5kLT5pbnNwZWN0b3JDb250
cm9sbGVyKCktPnNldEF0dGFjaGVkV2luZG93KGZhbHNlKTsKK30KKworLyohCisgICAgUmV0dXJu
cyB0cnVlIGlmIHRoZSBpbnNwZWN0b3IgYXBwZWFyYW5jZSBpcyBjdXJyZW50bHkgaW4gYSBkb2Nr
ZWQgc3RhdGUuCisKKyAgICBcc2EgZG9jaygpLCB1bmRvY2soKSwgZG9ja1JlcXVlc3RlZCgpLCB1
bmRvY2tSZXF1ZXN0ZWQoKQorKi8KK2Jvb2wgUVdlYkluc3BlY3Rvcjo6aXNEb2NrZWQoKSBjb25z
dAoreworICAgIHJldHVybiBkLT5pc0RvY2tlZDsKK30KKworLyohIFxyZWltcCAqLworUVNpemUg
UVdlYkluc3BlY3Rvcjo6c2l6ZUhpbnQoKSBjb25zdAoreworICAgIHJldHVybiBRU2l6ZSg0NTAs
IDMwMCk7Cit9CisKKy8qISBccmVpbXAgKi8KK2Jvb2wgUVdlYkluc3BlY3Rvcjo6ZXZlbnQoUUV2
ZW50KiBldikKK3sKKyAgICByZXR1cm4gUVdpZGdldDo6ZXZlbnQoZXYpOworfQorCisvKiEgXHJl
aW1wICovCit2b2lkIFFXZWJJbnNwZWN0b3I6OnJlc2l6ZUV2ZW50KFFSZXNpemVFdmVudCogZXZl
bnQpCit7CisgICAgZC0+YWRqdXN0RnJvbnRlbmRTaXplKGV2ZW50LT5zaXplKCkpOworfQorCisv
KiEgXHJlaW1wICovCit2b2lkIFFXZWJJbnNwZWN0b3I6OnNob3dFdmVudChRU2hvd0V2ZW50KiBl
dmVudCkKK3sKKyAgICAvLyBBbGxvd3MgUVdlYkluc3BlY3Rvcjo6c2hvdygpIHRvIGluaXQgdGhl
IGluc3BlY3Rvci4KKyAgICBpZiAoZC0+cGFnZSkgeworICAgICAgICBkLT5wYWdlLT5kLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICB9Cit9CisKKy8qISBccmVpbXAgKi8KK3Zv
aWQgUVdlYkluc3BlY3Rvcjo6aGlkZUV2ZW50KFFIaWRlRXZlbnQqIGV2ZW50KQoreworICAgIGlm
IChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNl
dFdpbmRvd1Zpc2libGUoZmFsc2UpOworfQorCisvKiEgXGludGVybmFsICovCit2b2lkIFFXZWJJ
bnNwZWN0b3JQcml2YXRlOjpzZXRGcm9udGVuZChRV2lkZ2V0KiB2YWx1ZSkKK3sKKyAgICBpZiAo
ZnJvbnRlbmQpCisgICAgICAgIGZyb250ZW5kLT5zZXRQYXJlbnQoMCk7CisKKyAgICBmcm9udGVu
ZCA9IHZhbHVlOworCisgICAgaWYgKGZyb250ZW5kKSB7CisgICAgICAgIGZyb250ZW5kLT5zZXRQ
YXJlbnQocSk7CisgICAgICAgIGZyb250ZW5kLT5zaG93KCk7CisgICAgICAgIGFkanVzdEZyb250
ZW5kU2l6ZShxLT5zaXplKCkpOworICAgIH0KK30KKworLyohCisgICAgXGludGVybmFsCisgICAg
Q2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGluc3BlY3Rvci4KKyovCit2b2lkIFFXZWJJbnNwZWN0
b3JQcml2YXRlOjpzZXREb2NrZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBib29sIGNoYW5nZWQgPSBp
c0RvY2tlZCAhPSB2YWx1ZTsKKyAgICB0aGlzLT5pc0RvY2tlZCA9IHZhbHVlOworICAgIGlmIChj
aGFuZ2VkKSB7CisgICAgICAgIGlmIChpc0RvY2tlZCkKKyAgICAgICAgICAgIGVtaXQgcS0+ZG9j
a1JlcXVlc3RlZCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0IHEtPnVuZG9ja1Jl
cXVlc3RlZCgpOworICAgIH0KK30KKwordm9pZCBRV2ViSW5zcGVjdG9yUHJpdmF0ZTo6YWRqdXN0
RnJvbnRlbmRTaXplKGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIGlmIChmcm9udGVuZCkKKyAg
ICAgICAgZnJvbnRlbmQtPnJlc2l6ZShzaXplKTsKK30KKworLyohCisgICAgXGZuIHZvaWQgUVdl
Ykluc3BlY3Rvcjo6d2luZG93VGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmIG5ld1RpdGxlKTsK
KworICAgIFRoaXMgaXMgZW1pdHRlZCB0byBzaWduYWwgdGhhdCB0aGlzIHdpZGdldCdzIHRpdGxl
IGNoYW5nZWQgdG8gXGEgbmV3VGl0bGUuCisqLworCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViSW5z
cGVjdG9yOjpkb2NrUmVxdWVzdGVkKCk7CisKKyAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW4gdGhlIHVzZXIgcHJlc3NlZCB0aGUgZG9jayBidXR0b24gaW4gdGhlCisgICAgaW5zcGVjdG9y
IGFuZCBjaGFuZ2VkIHRoZSBhcHBlYXJhbmNlIHRvIGEgZG9ja2VkIHN0YXRlLgorCisgICAgXHNh
IGRvY2soKSwgdW5kb2NrKCksIGlzRG9ja2VkKCksIHVuZG9ja1JlcXVlc3RlZCgpCisqLworCisv
KiEKKyAgICBcZm4gdm9pZCBRV2ViSW5zcGVjdG9yOjp1bmRvY2tSZXF1ZXN0ZWQoKTsKKworICAg
IFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBwcmVzc2VkIHRoZSBkb2NrIGJ1
dHRvbiBpbiB0aGUKKyAgICBpbnNwZWN0b3IgYW5kIGNoYW5nZWQgdGhlIGFwcGVhcmFuY2UgdG8g
YW4gZG9ja2VkIHN0YXRlLgorCisgICAgXHNhIGRvY2soKSwgdW5kb2NrKCksIGlzRG9ja2VkKCks
IGRvY2tSZXF1ZXN0ZWQoKQorKi8KKwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0FwaS9xd2ViaW5z
cGVjdG9yLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mZmFiYjdlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0
L0FwaS9xd2ViaW5zcGVjdG9yLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBRV0VCSU5TUEVDVE9SX0gKKyNkZWZpbmUgUVdFQklOU1BFQ1RPUl9ICisKKyNp
bmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSAicXdlYnBhZ2UuaCIKKworI2luY2x1
ZGUgInF3ZWJ2aWV3LmgiCisKK2NsYXNzIFFXZWJJbnNwZWN0b3JQcml2YXRlOworY2xhc3MgUVdl
YkVsZW1lbnQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBOb2RlOworfTsKKwor
CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViSW5zcGVjdG9yIDogcHVibGljIFFXaWRnZXQgewor
ICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYkluc3BlY3RvcihRV2lkZ2V0KiBwYXJlbnQg
PSAwKTsKKyAgICB+UVdlYkluc3BlY3RvcigpOworCisgICAgdm9pZCBzZXRQYWdlKFFXZWJQYWdl
KiBwYWdlKTsKKyAgICBRV2ViUGFnZSogcGFnZSgpIGNvbnN0OworCisgICAgdm9pZCBkb2NrKCk7
CisgICAgdm9pZCB1bmRvY2soKTsKKyAgICBib29sIGlzRG9ja2VkKCkgY29uc3Q7CisKKyAgICBR
U2l6ZSBzaXplSGludCgpIGNvbnN0OworICAgIGJvb2wgZXZlbnQoUUV2ZW50Kik7CisKK1FfU0lH
TkFMUzoKKyAgICB2b2lkIHdpbmRvd1RpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5nJiBuZXdUaXRs
ZSk7CisgICAgdm9pZCBkb2NrUmVxdWVzdGVkKCk7CisgICAgdm9pZCB1bmRvY2tSZXF1ZXN0ZWQo
KTsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgcmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVu
dCk7CisgICAgdm9pZCBzaG93RXZlbnQoUVNob3dFdmVudCogZXZlbnQpOworICAgIHZvaWQgaGlk
ZUV2ZW50KFFIaWRlRXZlbnQqIGV2ZW50KTsKKworcHJpdmF0ZToKKyAgICBRV2ViSW5zcGVjdG9y
UHJpdmF0ZSogZDsKKworICAgIGZyaWVuZCBjbGFzcyBRV2ViSW5zcGVjdG9yUHJpdmF0ZTsKKyAg
ICBmcmllbmQgY2xhc3MgUVdlYlBhZ2U7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlUHJpdmF0
ZTsKKyAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ7Cit9OworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3JfcC5oIGIvV2ViS2l0
L3F0L0FwaS9xd2ViaW5zcGVjdG9yX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40MjdkNzFiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVj
dG9yX3AuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFX
RUJJTlNQRUNUT1JfUF9ICisjZGVmaW5lIFFXRUJJTlNQRUNUT1JfUF9ICisKK2NsYXNzIFFTaXpl
OworY2xhc3MgUVdlYkluc3BlY3RvcjsKK2NsYXNzIFFXZWJQYWdlOworY2xhc3MgUVdpZGdldDsK
KworY2xhc3MgUVdlYkluc3BlY3RvclByaXZhdGUgeworcHVibGljOgorICAgIFFXZWJJbnNwZWN0
b3JQcml2YXRlKFFXZWJJbnNwZWN0b3IqIHFxKQorICAgIDogcShxcSkKKyAgICAsIHBhZ2UoMCkK
KyAgICAsIGZyb250ZW5kKDApCisgICAgLCBpc0RvY2tlZChmYWxzZSkKKyAgICB7fQorCisgICAg
dm9pZCBzZXRGcm9udGVuZChRV2lkZ2V0KiB2YWx1ZSk7CisgICAgdm9pZCBzZXREb2NrZWQoYm9v
bCB2YWx1ZSk7CisgICAgdm9pZCBhZGp1c3RGcm9udGVuZFNpemUoY29uc3QgUVNpemUmIHNpemUp
OworCisgICAgUVdlYkluc3BlY3RvciogcTsKKyAgICBRV2ViUGFnZSogcGFnZTsKKyAgICBRV2lk
Z2V0KiBmcm9udGVuZDsKKyAgICBib29sIGlzRG9ja2VkOworfTsKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
Y3BwCmluZGV4IDE0YmI4ZDAuLjc2MTQxN2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0yOCw2ICsyOCw4
IEBACiAjaW5jbHVkZSAicXdlYmhpc3RvcnkuaCIKICNpbmNsdWRlICJxd2ViaGlzdG9yeV9wLmgi
CiAjaW5jbHVkZSAicXdlYnNldHRpbmdzLmgiCisjaW5jbHVkZSAicXdlYmluc3BlY3Rvci5oIgor
I2luY2x1ZGUgInF3ZWJpbnNwZWN0b3JfcC5oIgogI2luY2x1ZGUgInF3ZWJraXR2ZXJzaW9uLmgi
CiAKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMjk5LDYgKzMwMSw5IEBAIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVBcHBsaWNhdGlvbkNhY2hlUGF0aElmTmVjZXNzYXJ5KCkKIFFXZWJQYWdlUHJpdmF0
ZTo6UVdlYlBhZ2VQcml2YXRlKFFXZWJQYWdlICpxcSkKICAgICA6IHEocXEpCiAgICAgLCB2aWV3
KDApCisgICAgLCBpbnNwZWN0b3JGcm9udGVuZCgwKQorICAgICwgaW5zcGVjdG9yKDApCisgICAg
LCBpbnNwZWN0b3JJc0ludGVybmFsT25seShmYWxzZSkKICAgICAsIHZpZXdwb3J0U2l6ZShRU2l6
ZSgwLCAwKSkKIHsKICAgICBXZWJDb3JlOjpJbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNl
c3NhcnkoKTsKQEAgLTExMjUsNiArMTEzMCw1NCBAQCBRVmFyaWFudCBRV2ViUGFnZTo6aW5wdXRN
ZXRob2RRdWVyeShRdDo6SW5wdXRNZXRob2RRdWVyeSBwcm9wZXJ0eSkgY29uc3QKIH0KIAogLyoh
CisgICAgXGludGVybmFsCisqLwordm9pZCBRV2ViUGFnZVByaXZhdGU6OnNldEluc3BlY3RvcihR
V2ViSW5zcGVjdG9yKiBpbnNwKQoreworICAgIGlmIChpbnNwZWN0b3IpCisgICAgICAgIGluc3Bl
Y3Rvci0+ZC0+c2V0RnJvbnRlbmQoMCk7CisKKyAgICBpZiAoaW5zcGVjdG9ySXNJbnRlcm5hbE9u
bHkpIHsKKyAgICAgICAgUVdlYkluc3BlY3RvciogaW5zcFRvRGVsZXRlID0gaW5zcGVjdG9yOwor
ICAgICAgICBpbnNwZWN0b3IgPSAwOworICAgICAgICBpbnNwZWN0b3JJc0ludGVybmFsT25seSA9
IGZhbHNlOworICAgICAgICBkZWxldGUgaW5zcFRvRGVsZXRlOyAgICAvLyBEZWxldGUgYWZ0ZXIg
dG8gcHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24KKyAgICB9CisKKyAgICBpbnNwZWN0b3IgPSBp
bnNwOworCisgICAgLy8gR2l2ZSBpbnNwZWN0b3IgZnJvbnRlbmQgd2ViIHZpZXcgaWYgcHJldmlv
dXNseSBjcmVhdGVkCisgICAgaWYgKGluc3BlY3RvciAmJiBpbnNwZWN0b3JGcm9udGVuZCkKKyAg
ICAgICAgaW5zcGVjdG9yLT5kLT5zZXRGcm9udGVuZChpbnNwZWN0b3JGcm9udGVuZCk7Cit9CisK
Ky8qIQorICAgIFxpbnRlcm5hbAorICAgIFJldHVybnMgdGhlIGluc3BlY3RvciBhbmQgY3JlYXRl
cyBpdCBpZiBpdCB3YXNuJ3QgY3JlYXRlZCB5ZXQuCisgICAgVGhlIGluc3RhbmNlIGNyZWF0ZWQg
aGVyZSB3aWxsIG5vdCBiZSBhdmFpbGFibGUgdGhyb3VnaCBRV2ViUGFnZSdzIEFQSS4KKyovCitR
V2ViSW5zcGVjdG9yKiBRV2ViUGFnZVByaXZhdGU6OmdldE9yQ3JlYXRlSW5zcGVjdG9yKCkKK3sK
KyAgICBpZiAoIWluc3BlY3RvcikgeworICAgICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwID0gbmV3
IFFXZWJJbnNwZWN0b3I7CisgICAgICAgIGluc3AtPnNldFBhZ2UocSk7CisgICAgICAgIGluc3At
PmNvbm5lY3QocSwgU0lHTkFMKGluc3BlY3RFbGVtZW50VHJpZ2dlcmVkKCkpLCBTTE9UKHNob3co
KSkpOworICAgICAgICBpbnNwLT5zaG93KCk7CisgICAgICAgIGluc3BlY3RvcklzSW50ZXJuYWxP
bmx5ID0gdHJ1ZTsKKworICAgICAgICBRX0FTU0VSVChpbnNwZWN0b3IpOyAvLyBBc3NvY2lhdGVk
IHRocm91Z2ggUVdlYkluc3BlY3Rvcjo6c2V0UGFnZSh0aGlzKQorICAgIH0KKyAgICByZXR1cm4g
aW5zcGVjdG9yOworfQorCisvKiEgXGludGVybmFsICovCitJbnNwZWN0b3JDb250cm9sbGVyKiBR
V2ViUGFnZVByaXZhdGU6Omluc3BlY3RvckNvbnRyb2xsZXIoKQoreworICAgIHJldHVybiBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Cit9CisKKworLyohCiAgICBcZW51bSBRV2ViUGFnZTo6
RmluZEZsYWcKIAogICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUgb3B0aW9ucyBhdmFpbGFibGUg
dG8gUVdlYlBhZ2UncyBmaW5kVGV4dCgpIGZ1bmN0aW9uLiBUaGUgb3B0aW9ucwpAQCAtMTMzNCw2
ICsxMzg3LDggQEAgUVdlYlBhZ2U6On5RV2ViUGFnZSgpCiAgICAgRnJhbWVMb2FkZXIgKmxvYWRl
ciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGlmIChsb2FkZXIpCiAg
ICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBhcmVudCgpOworICAgIGlmIChkLT5pbnNwZWN0b3Ip
CisgICAgICAgIGQtPmluc3BlY3Rvci0+c2V0UGFnZSgwKTsKICAgICBkZWxldGUgZDsKIH0KIApA
QCAtMTQwOCw2ICsxNDYzLDIzIEBAIFFXaWRnZXQgKlFXZWJQYWdlOjp2aWV3KCkgY29uc3QKIH0K
IAogLyohCisgICAgUmV0dXJucyB0aGUgd2ViIGluc3BlY3RvciB3aWRnZXQgYXNzb2NpYXRlZCB3
aXRoIHRoZSB3ZWIgcGFnZS4KKworICAgIFRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBpZiBubyBR
V2ViSW5zcGVjdG9yIGhhcyBiZWVuIGF0dGFjaGVkIHRvIHRoaXMKKyAgICBwYWdlLiBBbiBpbnRl
cm5hbCBpbnNwZWN0b3IgaXMgdXNlZCBpZiB0aGUgdXNlciBzZWxlY3QgSW5zcGVjdCBmcm9tIHRo
ZQorICAgIGNvbnRleHQgbWVudSBtZWFud2hpbGUuCisKKyAgICBcc2EgUVdlYkluc3BlY3Rvcjo6
c2V0UGFnZSgpLCBRV2ViSW5zcGVjdG9yOjpwYWdlKCkKKyAgICBcc2luY2UgNC42CisqLworUVdl
Ykluc3BlY3RvciogUVdlYlBhZ2U6Omluc3BlY3RvcigpIGNvbnN0Cit7CisgICAgaWYgKGQtPmlu
c3BlY3RvcklzSW50ZXJuYWxPbmx5KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZC0+
aW5zcGVjdG9yOworfQorCisvKiEKICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuZXZl
ciBhIEphdmFTY3JpcHQgcHJvZ3JhbSB0cmllcyB0byBwcmludCBhIFxhIG1lc3NhZ2UgdG8gdGhl
IHdlYiBicm93c2VyJ3MgY29uc29sZS4KIAogICAgIEZvciBleGFtcGxlIGluIGNhc2Ugb2YgZXZh
bHVhdGlvbiBlcnJvcnMgdGhlIHNvdXJjZSBVUkwgbWF5IGJlIHByb3ZpZGVkIGluIFxhIHNvdXJj
ZUlEIGFzIHdlbGwgYXMgdGhlIFxhIGxpbmVOdW1iZXIuCkBAIC0xNjMwLDEwICsxNzAyLDExIEBA
IHZvaWQgUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGFjdGlvbiwgYm9vbCBjaGVj
a2VkKQogICAgICAgICAgICAgZWRpdG9yLT5zZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihSaWdodFRv
TGVmdFdyaXRpbmdEaXJlY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
SW5zcGVjdEVsZW1lbnQ6Ci0gICAgICAgICAgICBpZiAoIWQtPmhpdFRlc3RSZXN1bHQuaXNOdWxs
KCkpCisgICAgICAgICAgICBlbWl0IGluc3BlY3RFbGVtZW50VHJpZ2dlcmVkKCk7CisgICAgICAg
ICAgICBpZiAoIWQtPmhpdFRlc3RSZXN1bHQuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBk
LT5nZXRPckNyZWF0ZUluc3BlY3RvcigpOwogICAgICAgICAgICAgICAgIGQtPnBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+aW5zcGVjdChkLT5oaXRUZXN0UmVzdWx0LmQtPmlubmVyTm9uU2hh
cmVkTm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZC0+cGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zaG93KCk7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbW1hbmQgPSBRV2Vi
UGFnZVByaXZhdGU6OmVkaXRvckNvbW1hbmRGb3JXZWJBY3Rpb25zKGFjdGlvbik7CkBAIC0yOTQ2
LDYgKzMwMTksMTYgQEAgcXVpbnQ2NCBRV2ViUGFnZTo6Ynl0ZXNSZWNlaXZlZCgpIGNvbnN0CiAq
LwogCiAvKiEKKyAgICBcZm4gdm9pZCBRV2ViUGFnZTo6aW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQo
KQorICAgIFxzaW5jZSA0LjYKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0cmln
Z2VyQWN0aW9uKCkgaXMgY2FsbGVkIHdpdGggYSBXZWJBY3Rpb246Okluc3BlY3RFbGVtZW50Lgor
ICAgIEluc3BlY3RpbmcgYW4gZWxlbWVudCB0aHJvdWdoIHRoZSBwYWdlJ3MgY29udGV4dCBtZW51
IHdpbGwgYWxzbyBlbWl0IHRoaXMgc2lnbmFsLgorCisgICAgXHNhIFFXZWJJbnNwZWN0b3IKKyov
CisKKy8qIQogICAgIFxmbiB2b2lkIFFXZWJQYWdlOjp0b29sQmFyVmlzaWJpbGl0eUNoYW5nZVJl
cXVlc3RlZChib29sIHZpc2libGUpCiAKICAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5l
dmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB0b29sYmFyIGluIGEgd2ViIGJyb3dzZXIKZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Uu
aAppbmRleCAyNDc0MWExLi4xODFjYTQ0IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJw
YWdlLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCkBAIC00NywxMiArNDcsMTUgQEAg
Y2xhc3MgUVdlYk5ldHdvcmtJbnRlcmZhY2U7CiBjbGFzcyBRV2ViUGx1Z2luRmFjdG9yeTsKIGNs
YXNzIFFXZWJIaXRUZXN0UmVzdWx0OwogY2xhc3MgUVdlYkhpc3RvcnlJdGVtOworY2xhc3MgUVdl
Ykluc3BlY3RvcjsKK2NsYXNzIFFXZWJFbGVtZW50OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgQ2hyb21lQ2xpZW50UXQ7CiAgICAgY2xhc3MgRWRpdG9yQ2xpZW50UXQ7CiAgICAg
Y2xhc3MgRnJhbWVMb2FkZXJDbGllbnRRdDsKICAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnRRdDsK
KyAgICBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxl
OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiAKQEAgLTIwMSw2ICsyMDQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRWaWV3KFFXaWRnZXQgKnZpZXcpOwogICAgIFFXaWRnZXQgKnZpZXcoKSBj
b25zdDsKIAorICAgIFFXZWJJbnNwZWN0b3IqIGluc3BlY3RvcigpIGNvbnN0OwogICAgIGJvb2wg
aXNNb2RpZmllZCgpIGNvbnN0OwogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBRVW5kb1N0
YWNrICp1bmRvU3RhY2soKSBjb25zdDsKQEAgLTMwNiw2ICszMTAsNyBAQCBRX1NJR05BTFM6CiAg
ICAgdm9pZCB3aW5kb3dDbG9zZVJlcXVlc3RlZCgpOwogICAgIHZvaWQgcHJpbnRSZXF1ZXN0ZWQo
UVdlYkZyYW1lICpmcmFtZSk7CiAgICAgdm9pZCBsaW5rQ2xpY2tlZChjb25zdCBRVXJsICZ1cmwp
OworICAgIHZvaWQgaW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQoKTsKIAogICAgIHZvaWQgdG9vbEJh
clZpc2liaWxpdHlDaGFuZ2VSZXF1ZXN0ZWQoYm9vbCB2aXNpYmxlKTsKICAgICB2b2lkIHN0YXR1
c0JhclZpc2liaWxpdHlDaGFuZ2VSZXF1ZXN0ZWQoYm9vbCB2aXNpYmxlKTsKQEAgLTM0NiwxMSAr
MzUxLDEzIEBAIHByaXZhdGU6CiAjaWZuZGVmIE5ERUJVRwogICAgIFFfUFJJVkFURV9TTE9UKGQs
IHZvaWQgX3FfY2xlYW51cExlYWtNZXNzYWdlcygpKQogI2VuZGlmCisKICAgICBRV2ViUGFnZVBy
aXZhdGUgKmQ7CiAKICAgICBmcmllbmQgY2xhc3MgUVdlYkZyYW1lOwogICAgIGZyaWVuZCBjbGFz
cyBRV2ViUGFnZVByaXZhdGU7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJWaWV3OworICAgIGZyaWVu
ZCBjbGFzcyBRV2ViSW5zcGVjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVD
bGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCmlu
ZGV4IDg3YzYyNGQuLmE4YzY4OWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2Vf
cC5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCkBAIC02NSw2ICs2NSw4IEBAIGNs
YXNzIFFNZW51OwogY2xhc3MgUUJpdEFycmF5OwogUVRfRU5EX05BTUVTUEFDRQogCitjbGFzcyBR
V2ViSW5zcGVjdG9yOworCiBjbGFzcyBRV2ViUGFnZVByaXZhdGUgewogcHVibGljOgogICAgIFFX
ZWJQYWdlUHJpdmF0ZShRV2ViUGFnZSopOwpAQCAtMTExLDYgKzExMywxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsZWF2ZUV2ZW50KFFFdmVudCAqKTsKICAgICBib29sIGhhbmRsZVNjcm9sbGluZyhR
S2V5RXZlbnQqLCBXZWJDb3JlOjpGcmFtZSopOwogCisgICAgdm9pZCBzZXRJbnNwZWN0b3IoUVdl
Ykluc3BlY3RvciopOworICAgIFFXZWJJbnNwZWN0b3IqIGdldE9yQ3JlYXRlSW5zcGVjdG9yKCk7
CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcigp
OworCiAjaWZuZGVmIFFUX05PX1NIT1JUQ1VUCiAgICAgc3RhdGljIFFXZWJQYWdlOjpXZWJBY3Rp
b24gZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoUUtleUV2ZW50KiBldmVudCk7CiAjZW5kaWYKQEAg
LTE2OCw2ICsxNzQsMTAgQEAgcHVibGljOgogCiAgICAgUVdlYlBsdWdpbkZhY3RvcnkgKnBsdWdp
bkZhY3Rvcnk7CiAKKyAgICBRV2lkZ2V0KiBpbnNwZWN0b3JGcm9udGVuZDsKKyAgICBRV2ViSW5z
cGVjdG9yKiBpbnNwZWN0b3I7CisgICAgYm9vbCBpbnNwZWN0b3JJc0ludGVybmFsT25seTsgLy8g
VHJ1ZSBpZiBjcmVhdGVkIHRocm91Z2ggdGhlIEluc3BlY3QgY29udGV4dCBtZW51IGFjdGlvbgor
CiAgICAgc3RhdGljIGJvb2wgZHJ0UnVuOwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0Fw
aS9xd2Vic2V0dGluZ3MuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCmluZGV4
IDE1NzE0NzAuLjQ5NDU3YTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdz
LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKQEAgLTMyMSw4ICszMjEs
OSBAQCBRV2ViU2V0dGluZ3MqIFFXZWJTZXR0aW5nczo6Z2xvYmFsU2V0dGluZ3MoKQogICAgIFx2
YWx1ZSBKYXZhc2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkIFNwZWNpZmllcyB3aGV0aGVyIEphdmFT
Y3JpcHQgcHJvZ3JhbXMKICAgICAgICAgY2FuIHJlYWQgb3Igd3JpdGUgdG8gdGhlIGNsaXBib2Fy
ZC4KICAgICBcdmFsdWUgRGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCBFbmFibGVzIGV4dHJhIHRvb2xz
IGZvciBXZWIgZGV2ZWxvcGVycy4KLSAgICAgICAgQ3VycmVudGx5IHRoaXMgZW5hYmxlcyB0aGUg
Ikluc3BlY3QiIGVsZW1lbnQgaW4gdGhlIGNvbnRleHQgbWVudSwKLSAgICB3aGljaCBzaG93cyB0
aGUgV2ViS2l0IFdlYkluc3BlY3RvciBmb3Igd2ViIHNpdGUgZGVidWdnaW5nLgorICAgICAgICBD
dXJyZW50bHkgdGhpcyBlbmFibGVzIHRoZSAiSW5zcGVjdCIgZWxlbWVudCBpbiB0aGUgY29udGV4
dCBtZW51IGFzCisgICAgICAgIHdlbGwgYXMgdGhlIHVzZSBvZiBRV2ViSW5zcGVjdG9yIHdoaWNo
IGNvbnRyb2xzIHRoZSBXZWJLaXQgV2ViSW5zcGVjdG9yCisgICAgICAgIGZvciB3ZWIgc2l0ZSBk
ZWJ1Z2dpbmcuCiAgICAgXHZhbHVlIExpbmtzSW5jbHVkZWRJbkZvY3VzQ2hhaW4gU3BlY2lmaWVz
IHdoZXRoZXIgaHlwZXJsaW5rcyBzaG91bGQgYmUKICAgICAgICAgaW5jbHVkZWQgaW4gdGhlIGtl
eWJvYXJkIGZvY3VzIGNoYWluLgogICAgIFx2YWx1ZSBab29tVGV4dE9ubHkgU3BlY2lmaWVzIHdo
ZXRoZXIgdGhlIHpvb20gZmFjdG9yIG9uIGEgZnJhbWUgYXBwbGllcyB0bwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYzFkYTYzMi4u
MTQ1ODE0ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMDktMDktMDcgIEpvY2VseW4gVHVyY290dGUg
IDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIE1ha2UgdGhlIFdlYkluc3BlY3RvciBhdmFpbGFi
bGUgYXMgYSB3aWRnZXQgY2xhc3MuCisKKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAg
ICAgICogQXBpL3F3ZWJlbGVtZW50Lmg6CisgICAgICAgICogQXBpL3F3ZWJpbnNwZWN0b3IuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OlFXZWJJbnNwZWN0b3IpOgorICAgICAg
ICAoUVdlYkluc3BlY3Rvcjo6flFXZWJJbnNwZWN0b3IpOgorICAgICAgICAoUVdlYkluc3BlY3Rv
cjo6c2V0UGFnZSk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpwYWdlKToKKyAgICAgICAgKFFX
ZWJJbnNwZWN0b3I6OmRvY2spOgorICAgICAgICAoUVdlYkluc3BlY3Rvcjo6dW5kb2NrKToKKyAg
ICAgICAgKFFXZWJJbnNwZWN0b3I6OmlzRG9ja2VkKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6
OnNpemVIaW50KToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OmV2ZW50KToKKyAgICAgICAgKFFX
ZWJJbnNwZWN0b3I6OnJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3I6OnNob3dF
dmVudCk6CisgICAgICAgIChRV2ViSW5zcGVjdG9yOjpoaWRlRXZlbnQpOgorICAgICAgICAoUVdl
Ykluc3BlY3RvclByaXZhdGU6OnNldEZyb250ZW5kKToKKyAgICAgICAgKFFXZWJJbnNwZWN0b3JQ
cml2YXRlOjpzZXREb2NrZWQpOgorICAgICAgICAoUVdlYkluc3BlY3RvclByaXZhdGU6OmFkanVz
dEZyb250ZW5kU2l6ZSk6CisgICAgICAgICogQXBpL3F3ZWJpbnNwZWN0b3IuaDogQWRkZWQuCisg
ICAgICAgICogQXBpL3F3ZWJpbnNwZWN0b3JfcC5oOiBBZGRlZC4KKyAgICAgICAgKFFXZWJJbnNw
ZWN0b3JQcml2YXRlOjpRV2ViSW5zcGVjdG9yUHJpdmF0ZSk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAg
ICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6c2V0SW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJQYWdl
UHJpdmF0ZTo6Z2V0T3JDcmVhdGVJbnNwZWN0b3IpOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRl
OjppbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFFXZWJQYWdlOjp+UVdlYlBhZ2UpOgor
ICAgICAgICAoUVdlYlBhZ2U6Omluc3BlY3Rvcik6CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dl
ckFjdGlvbik6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKiBRdExh
dW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6TWFpbldpbmRvdyk6CisgICAg
ICAgIChNYWluV2luZG93Ojpkb2NrSW5zcGVjdG9yKToKKyAgICAgICAgKE1haW5XaW5kb3c6OnVu
ZG9ja0luc3BlY3Rvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6SW5zcGVj
dG9yQ2xpZW50V2ViUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXZWJQ
YWdlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6
OmNyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OnNob3dX
aW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmNsb3NlV2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjphdHRhY2hXaW5kb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmRldGFjaFdpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6dXBkYXRlV2luZG93VGl0bGUpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisgICAgICAgICogZG9j
cy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2ViaW5zcGVjdG9yX3NuaXBwZXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKHdyYXBJbkZ1bmN0aW9uKToKKwogMjAwOS0wOS0wNSAgSmFrdWIgV2llY3pv
cmVrICA8ZmF3MjE3QGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRl
bC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwIGIvV2ViS2l0L3F0
L1F0TGF1bmNoZXIvbWFpbi5jcHAKaW5kZXggMzc5MDlhZi4uYWVkMjlkOCAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L1F0TGF1bmNoZXIvbWFpbi5jcHAKKysrIGIvV2ViS2l0L3F0L1F0TGF1bmNoZXIv
bWFpbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KICNpbmNs
dWRlIDxxd2Vic2V0dGluZ3MuaD4KICNpbmNsdWRlIDxxd2ViZWxlbWVudC5oPgorI2luY2x1ZGUg
PHF3ZWJpbnNwZWN0b3IuaD4KIAogI2luY2x1ZGUgPFF0R3VpPgogI2luY2x1ZGUgPFFEZWJ1Zz4K
QEAgLTcxLDEyICs3MiwxMiBAQCBwdWJsaWM6CiAgICAgTWFpbldpbmRvdyhRU3RyaW5nIHVybCA9
IFFTdHJpbmcoKSk6IGN1cnJlbnRab29tKDEwMCkgewogICAgICAgICBzZXRBdHRyaWJ1dGUoUXQ6
OldBX0RlbGV0ZU9uQ2xvc2UpOwogCi0gICAgICAgIHZpZXcgPSBuZXcgUVdlYlZpZXcodGhpcyk7
Ci0gICAgICAgIHNldENlbnRyYWxXaWRnZXQodmlldyk7CisgICAgICAgIFFTcGxpdHRlciogc3Bs
aXR0ZXIgPSBuZXcgUVNwbGl0dGVyKFF0OjpWZXJ0aWNhbCwgdGhpcyk7CisgICAgICAgIHNldENl
bnRyYWxXaWRnZXQoc3BsaXR0ZXIpOwogCisgICAgICAgIHZpZXcgPSBuZXcgUVdlYlZpZXcoc3Bs
aXR0ZXIpOwogICAgICAgICBXZWJQYWdlKiBwYWdlID0gbmV3IFdlYlBhZ2Uodmlldyk7CiAgICAg
ICAgIHZpZXctPnNldFBhZ2UocGFnZSk7Ci0gICAgICAgIAogICAgICAgICBjb25uZWN0KHZpZXcs
IFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLAogICAgICAgICAgICAgICAgIHRoaXMsIFNMT1Qo
bG9hZEZpbmlzaGVkKCkpKTsKICAgICAgICAgY29ubmVjdCh2aWV3LCBTSUdOQUwodGl0bGVDaGFu
Z2VkKGNvbnN0IFFTdHJpbmcmKSksCkBAIC04NSw2ICs4NiwxNSBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgdGhpcywgU0xPVChzaG93TGlua0hvdmVyKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBR
U3RyaW5nJikpKTsKICAgICAgICAgY29ubmVjdCh2aWV3LT5wYWdlKCksIFNJR05BTCh3aW5kb3dD
bG9zZVJlcXVlc3RlZCgpKSwgdGhpcywgU0xPVChjbG9zZSgpKSk7CiAKKyAgICAgICAgUVdlYklu
c3BlY3RvciogaW5zcGVjdG9yID0gbmV3IFFXZWJJbnNwZWN0b3Ioc3BsaXR0ZXIpOworICAgICAg
ICBpbnNwZWN0b3ItPnNldFBhZ2UocGFnZSk7CisgICAgICAgIGluc3BlY3Rvci0+ZG9jaygpOwor
ICAgICAgICBpbnNwZWN0b3ItPmhpZGUoKTsKKyAgICAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwo
ZGVzdHJveWVkKCkpLCBpbnNwZWN0b3IsIFNMT1QoZGVsZXRlTGF0ZXIoKSkpOworICAgICAgICBj
b25uZWN0KHBhZ2UsIFNJR05BTChpbnNwZWN0RWxlbWVudFRyaWdnZXJlZCgpKSwgaW5zcGVjdG9y
LCBTTE9UKHNob3coKSkpOworICAgICAgICBjb25uZWN0KGluc3BlY3RvciwgU0lHTkFMKGRvY2tS
ZXF1ZXN0ZWQoKSksIHRoaXMsIFNMT1QoZG9ja0luc3BlY3RvcigpKSk7CisgICAgICAgIGNvbm5l
Y3QoaW5zcGVjdG9yLCBTSUdOQUwodW5kb2NrUmVxdWVzdGVkKCkpLCB0aGlzLCBTTE9UKHVuZG9j
a0luc3BlY3RvcigpKSk7CisKICAgICAgICAgc2V0dXBVSSgpOwogCiAgICAgICAgIC8vIHNldCB0
aGUgcHJveHkgdG8gdGhlIGh0dHBfcHJveHkgZW52IHZhcmlhYmxlIC0gaWYgcHJlc2VudCAgICAg
ICAgCkBAIC0yMTUsNiArMjI1LDE4IEBAIHByb3RlY3RlZCBzbG90czoKICAgICAgICAgfQogICAg
IH0KIAorICAgIHZvaWQgZG9ja0luc3BlY3RvcigpIHsKKyAgICAgICAgdmlldy0+cGFnZSgpLT5p
bnNwZWN0b3IoKS0+c2V0UGFyZW50KGNlbnRyYWxXaWRnZXQoKSk7CisgICAgfQorCisgICAgdm9p
ZCB1bmRvY2tJbnNwZWN0b3IoKSB7CisgICAgICAgIFFXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9
IHZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yKCk7CisgICAgICAgIGJvb2wgdmlzaWJsZSA9IGluc3Bl
Y3Rvci0+aXNWaXNpYmxlKCk7CisgICAgICAgIGluc3BlY3Rvci0+c2V0UGFyZW50KDApOworICAg
ICAgICBpbnNwZWN0b3ItPnJlc2l6ZShpbnNwZWN0b3ItPnNpemUoKS5leHBhbmRlZFRvKGluc3Bl
Y3Rvci0+c2l6ZUhpbnQoKSkpOworICAgICAgICBpbnNwZWN0b3ItPnNldFZpc2libGUodmlzaWJs
ZSk7CisgICAgfQorCiBwdWJsaWMgc2xvdHM6CiAKICAgICB2b2lkIG5ld1dpbmRvdyhjb25zdCBR
U3RyaW5nICZ1cmwgPSBRU3RyaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDU2ZjYxMDEuLmZmOWVkYjcgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKKysrIGIvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcApAQCAtMzEsNiArMzEs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudFF0Lmgi
CiAKKyNpbmNsdWRlICJxd2ViaW5zcGVjdG9yLmgiCisjaW5jbHVkZSAicXdlYmluc3BlY3Rvcl9w
LmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKICNpbmNsdWRlICJxd2VicGFnZV9wLmgiCiAjaW5j
bHVkZSAicXdlYnZpZXcuaCIKQEAgLTQ0LDQ4ICs0NiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudFdlYlBhZ2UgOiBwdWJsaWMgUVdlYlBhZ2UKLXsK
K2NsYXNzIEluc3BlY3RvckNsaWVudFdlYlBhZ2UgOiBwdWJsaWMgUVdlYlBhZ2UgewogICAgIFFf
T0JKRUNUCiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3RvckNsaWVudFF0OwogcHVibGljOgotICAg
IFFXZWJQYWdlKiBjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRvd1R5cGUpCi0gICAgewot
ICAgICAgICBRV2lkZ2V0ICp3ID0gbmV3IFFXZWJWaWV3KDApOwotICAgICAgICBRV2ViUGFnZSAq
cGFnZSA9IG5ldyBRV2ViUGFnZSh3KTsKLSAgICAgICAgcGFnZS0+c2V0Vmlldyh3KTsKLSAgICAg
ICAgY29ubmVjdChwYWdlLCBTSUdOQUwoZGVzdHJveWVkKCkpLCB3LCBTTE9UKGRlbGV0ZUxhdGVy
KCkpKTsKLSAgICAgICAgcmV0dXJuIHBhZ2U7Ci0gICAgfQotCi1RX1NJR05BTFM6Ci0gICAgdm9p
ZCBhdHRhY2hSZXF1ZXN0ZWQoKTsKLSAgICB2b2lkIGRldGFjaFJlcXVlc3RlZCgpOwotfTsKLQot
Ci1jbGFzcyBJbnNwZWN0b3JDbGllbnRWaWV3IDogcHVibGljIFFXZWJWaWV3IHsKLQotcHVibGlj
OgotICAgIEluc3BlY3RvckNsaWVudFZpZXcoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxl
cikKLSAgICAgICAgOiBRV2ViVmlldygwKQotICAgICAgICAsIG1fY29udHJvbGxlcihjb250cm9s
bGVyKQorICAgIEluc3BlY3RvckNsaWVudFdlYlBhZ2UoUU9iamVjdCogcGFyZW50ID0gMCkKKyAg
ICA6IFFXZWJQYWdlKHBhcmVudCkKICAgICB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZShRdDo6V0Ff
RGVsZXRlT25DbG9zZSwgdHJ1ZSk7Ci0gICAgICAgIHNldFBhZ2UobmV3IEluc3BlY3RvckNsaWVu
dFdlYlBhZ2UpOwotICAgICAgICBjb25uZWN0KHBhZ2UoKSwgU0lHTkFMKGRlc3Ryb3llZCgpKSwg
dGhpcywgU0xPVChjbG9zZSgpKSk7CisgICAgICAgIHNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShR
V2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIGZhbHNlKTsKICAgICB9CiAKLXBy
b3RlY3RlZDoKLQotICAgIHZvaWQgY2xvc2VFdmVudChRQ2xvc2VFdmVudCogZXYpCisgICAgUVdl
YlBhZ2UqIGNyZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSkKICAgICB7Ci0gICAg
ICAgIFFXaWRnZXQ6OmNsb3NlRXZlbnQoZXYpOwotICAgICAgICBtX2NvbnRyb2xsZXItPnNldFdp
bmRvd1Zpc2libGUoZmFsc2UpOworICAgICAgICBRV2ViVmlldyogdmlldyA9IG5ldyBRV2ViVmll
dzsKKyAgICAgICAgUVdlYlBhZ2UqIHBhZ2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgICAgIHZpZXct
PnNldFBhZ2UocGFnZSk7CisgICAgICAgIHZpZXctPnNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRl
T25DbG9zZSk7CisgICAgICAgIHJldHVybiBwYWdlOwogICAgIH0KLQotcHJpdmF0ZToKLSAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7CiB9OwogCiAKQEAgLTEwMCwxNCArNzgs
MTkgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKIAogUGFn
ZSogSW5zcGVjdG9yQ2xpZW50UXQ6OmNyZWF0ZVBhZ2UoKQogewotICAgIGlmIChtX3dlYlBhZ2Up
Ci0gICAgICAgIHJldHVybiBtX3dlYlBhZ2UtPmQtPnBhZ2U7CisgICAgaWYgKG1faW5zcGVjdG9y
VmlldykKKyAgICAgICAgcmV0dXJuIG1faW5zcGVjdG9yVmlldy0+cGFnZSgpLT5kLT5wYWdlOwor
CisgICAgUVdlYlZpZXcqIGluc3BlY3RvclZpZXcgPSBuZXcgUVdlYlZpZXc7CisgICAgSW5zcGVj
dG9yQ2xpZW50V2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IG5ldyBJbnNwZWN0b3JDbGllbnRXZWJQ
YWdlKGluc3BlY3RvclZpZXcpOworICAgIGluc3BlY3RvclZpZXctPnNldFBhZ2UoaW5zcGVjdG9y
UGFnZSk7CisgICAgbV9pbnNwZWN0b3JWaWV3LnNldChpbnNwZWN0b3JWaWV3KTsKIAotICAgIElu
c3BlY3RvckNsaWVudFZpZXcqIHZpZXcgPSBuZXcgSW5zcGVjdG9yQ2xpZW50VmlldyhtX2luc3Bl
Y3RlZFdlYlBhZ2UtPmQtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKSk7Ci0gICAgbV93ZWJQ
YWdlLnNldChxb2JqZWN0X2Nhc3Q8SW5zcGVjdG9yQ2xpZW50V2ViUGFnZSo+KHZpZXctPnBhZ2Uo
KSkpOwotICAgIG1fd2ViUGFnZS0+bWFpbkZyYW1lKCktPmxvYWQoUVN0cmluZzo6ZnJvbUxhdGlu
MSgicXJjOi93ZWJraXQvaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sIikpOwotICAgIG1fd2ViUGFn
ZS0+dmlldygpLT5zZXRNaW5pbXVtU2l6ZSg0MDAsMzAwKTsKLSAgICByZXR1cm4gbV93ZWJQYWdl
LT5kLT5wYWdlOworICAgIGluc3BlY3RvclBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkKFFTdHJpbmc6
OmZyb21MYXRpbjEoInFyYzovd2Via2l0L2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbCIpKTsKKyAg
ICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3RvckZyb250ZW5kID0gaW5zcGVjdG9yVmll
dzsKKyAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmdldE9yQ3JlYXRlSW5zcGVjdG9yKCktPmQt
PnNldEZyb250ZW5kKGluc3BlY3RvclZpZXcpOworCisgICAgcmV0dXJuIG1faW5zcGVjdG9yVmll
dy0+cGFnZSgpLT5kLT5wYWdlOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50UXQ6OmxvY2Fs
aXplZFN0cmluZ3NVUkwoKQpAQCAtMTI0LDQ0ICsxMDcsMzEgQEAgU3RyaW5nIEluc3BlY3RvckNs
aWVudFF0OjpoaWRkZW5QYW5lbHMoKQogCiB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpzaG93V2lu
ZG93KCkKIHsKLSAgICBpZiAoIW1fd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgdXBk
YXRlV2luZG93VGl0bGUoKTsKLSAgICBtX3dlYlBhZ2UtPnZpZXcoKS0+c2hvdygpOwotICAgIG1f
aW5zcGVjdGVkV2ViUGFnZS0+ZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5k
b3dWaXNpYmxlKHRydWUpOwotfQogCi12b2lkIEluc3BlY3RvckNsaWVudFF0OjpjbG9zZVdpbmRv
dygpCi17Ci0gICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fd2Vi
UGFnZS0+dmlldygpLT5oaWRlKCk7Ci0gICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5wYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdpbmRvd1Zpc2libGUoZmFsc2UpOworICAgIC8vIFdl
IGRvbid0IGFsbG93IHRoZSBpbnNwZWN0b3IgdG8gYXNrIGZvciB2aXNpYmlsaXR5IGl0c2VsZi4K
KyAgICAvLyBJbnNwZWN0aW5nIGFuIGVsZW1lbnQgb3IgY2FsbGluZyBRV2ViSW5zcGVjdG9yOjpz
aG93KCkgc2hvdWxkIGFscmVhZHkgaGF2ZSBtYWRlIHRoZQorICAgIC8vIHdpbmRvdyB2aXNpYmxl
LgorICAgIGJvb2wgYXR0YWNoZWQgPSBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3RvciA/
IG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yLT5pc0RvY2tlZCgpIDogZmFsc2U7Cisg
ICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdpbmRv
d1Zpc2libGUodHJ1ZSwgYXR0YWNoZWQpOwogfQogCi1ib29sIEluc3BlY3RvckNsaWVudFF0Ojp3
aW5kb3dWaXNpYmxlKCkKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmNsb3NlV2luZG93KCkKIHsK
LSAgICBpZiAoIW1fd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBt
X3dlYlBhZ2UtPnZpZXcoKS0+aXNWaXNpYmxlKCk7CisgICAgaWYgKG1faW5zcGVjdGVkV2ViUGFn
ZS0+ZC0+aW5zcGVjdG9yKQorICAgICAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3Rv
ci0+Y2xvc2UoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6YXR0YWNoV2luZG93KCkK
IHsKLSAgICBpZiAoIW1fd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW1pdCBtX3dl
YlBhZ2UtPmF0dGFjaFJlcXVlc3RlZCgpOworICAgIGlmIChtX2luc3BlY3RlZFdlYlBhZ2UtPmQt
Pmluc3BlY3RvcikKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3ItPmQt
PnNldERvY2tlZCh0cnVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6ZGV0YWNoV2lu
ZG93KCkKIHsKLSAgICBpZiAoIW1fd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW1p
dCBtX3dlYlBhZ2UtPmRldGFjaFJlcXVlc3RlZCgpOworICAgIGlmIChtX2luc3BlY3RlZFdlYlBh
Z2UtPmQtPmluc3BlY3RvcikKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0
b3ItPmQtPnNldERvY2tlZChmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnNl
dEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKQEAgLTE5MiwxMSArMTYyLDEx
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Omluc3BlY3RvcldpbmRvd09iamVjdENsZWFyZWQo
KQogCiB2b2lkIEluc3BlY3RvckNsaWVudFF0Ojp1cGRhdGVXaW5kb3dUaXRsZSgpCiB7Ci0gICAg
aWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIFFTdHJpbmcgY2FwdGlvbiA9
IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVdlYlBhZ2UiLCAiV2ViIEluc3BlY3RvciAt
ICUyIik7Ci0gICAgbV93ZWJQYWdlLT52aWV3KCktPnNldFdpbmRvd1RpdGxlKGNhcHRpb24uYXJn
KG1faW5zcGVjdGVkVVJMKSk7CisgICAgaWYgKG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVj
dG9yKSB7CisgICAgICAgIFFTdHJpbmcgY2FwdGlvbiA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5z
bGF0ZSgiUVdlYlBhZ2UiLCAiV2ViIEluc3BlY3RvciAtICUyIikuYXJnKG1faW5zcGVjdGVkVVJM
KTsKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3ItPnNldFdpbmRvd1Rp
dGxlKGNhcHRpb24pOworICAgICAgICBlbWl0IG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVj
dG9yLT53aW5kb3dUaXRsZUNoYW5nZWQoY2FwdGlvbik7CisgICAgfQogfQogCiB2b2lkIEluc3Bl
Y3RvckNsaWVudFF0Ojpwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OlNldHRpbmcmIHNldHRpbmcpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRRdC5oCmluZGV4IDAzYzY4NGEuLmNjZjhiNjkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCisrKyBiL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCkBAIC0zNSwxMiArMzUsMTIg
QEAKICNpbmNsdWRlIDxRdENvcmUvUVN0cmluZz4KIAogY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBR
V2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xh
c3MgUGFnZTsKICAgICBjbGFzcyBTdHJpbmc7Ci0gICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50V2Vi
UGFnZTsKIAogICAgIGNsYXNzIEluc3BlY3RvckNsaWVudFF0IDogcHVibGljIEluc3BlY3RvckNs
aWVudCB7CiAgICAgcHVibGljOgpAQCAtNTYsNyArNTYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNob3dXaW5kb3coKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGNsb3NlV2luZG93KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB3aW5kb3dWaXNpYmxlKCk7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdygpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoV2luZG93KCk7CkBAIC03Niw3ICs3NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHVwZGF0ZVdpbmRvd1RpdGxlKCk7CiAgICAg
ICAgIFFXZWJQYWdlKiBtX2luc3BlY3RlZFdlYlBhZ2U7Ci0gICAgICAgIE93blB0cjxJbnNwZWN0
b3JDbGllbnRXZWJQYWdlPiBtX3dlYlBhZ2U7CisgICAgICAgIE93blB0cjxRV2ViVmlldz4gbV9p
bnNwZWN0b3JWaWV3OwogICAgICAgICBRU3RyaW5nIG1faW5zcGVjdGVkVVJMOwogICAgIH07CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2Vi
aW5zcGVjdG9yX3NuaXBwZXQuY3BwIGIvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMvcXR3
ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42YWNlZjQwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L2RvY3Mvd2Vi
a2l0c25pcHBldHMvcXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcApAQCAtMCwwICsx
LDE3IEBACisKK3ZvaWQgd3JhcEluRnVuY3Rpb24oKQoreworCisvLyEgWzBdCisgICAgLy8gLi4u
CisgICAgUVdlYlBhZ2UgKnBhZ2UgPSBuZXcgUVdlYlBhZ2U7CisgICAgLy8gLi4uCisKKyAgICBR
V2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBuZXcgUVdlYkluc3BlY3RvcjsKKyAgICBpbnNwZWN0
b3ItPnNldFBhZ2UocGFnZSk7CisKKyAgICBjb25uZWN0KHBhZ2UsIFNJR05BTChpbnNwZWN0RWxl
bWVudFRyaWdnZXJlZCgpKSwgaW5zcGVjdG9yLCBTTE9UKHNob3coKSkpOworLy8hIFswXQorCit9
CisK
</data>
<flag name="review"
          id="20233"
          type_id="1"
          status="-"
          setter="ariya.hidayat"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39254</attachid>
            <date>2009-09-09 01:38:39 -0700</date>
            <delta_ts>2009-09-10 07:26:57 -0700</delta_ts>
            <desc>Changes v0.4</desc>
            <filename>qwebinspector.patch</filename>
            <type>text/plain</type>
            <size>31537</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGJmMmM2MS4uODY0NGZlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0wOS0wNyAgSm9jZWx5biBUdXJj
b3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gTWFrZSB0aGUgV2ViSW5zcGVjdG9yIGF2
YWlsYWJsZSBhcyBhIFFXaWRnZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorCiAyMDA5LTA5LTA3ICBNaWNoYWVs
IE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dl
YkNvcmUucHJvCmluZGV4IDYxMzU2MmMuLmQ4NDRjNzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjM3MSw2ICsyMzcxLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2VicGx1Z2luZmFjdG9yeS5jcHAg
XAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnNlY3VyaXR5b3JpZ2luLmNwcCBcCiAgICAgLi4v
V2ViS2l0L3F0L0FwaS9xd2ViZGF0YWJhc2UuY3BwIFwKKyAgICAuLi9XZWJLaXQvcXQvQXBpL3F3
ZWJpbnNwZWN0b3IuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJraXR2ZXJzaW9uLmNw
cAogCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAyN2NkMDA0
Li5jOWRiNzJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0x
ODgsNiArMTg4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhdHRhY2hXaW5kb3coKTsKICAgICB2
b2lkIGRldGFjaFdpbmRvdygpOworICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3coYm9vbCk7CiAK
ICAgICB2b2lkIHRvZ2dsZVNlYXJjaEZvck5vZGVJblBhZ2UoKTsKICAgICBib29sIHNlYXJjaGlu
Z0Zvck5vZGVJblBhZ2UoKSB7IHJldHVybiBtX3NlYXJjaGluZ0Zvck5vZGU7IH07CkBAIC0yNzMs
NyArMjc0LDYgQEAgcHJpdmF0ZToKICAgICAvLyBGb2xsb3dpbmcgYXJlIHVzZWQgZnJvbSBJbnNw
ZWN0b3JCYWNrZW5kIGFuZCBpbnRlcm5hbGx5LgogICAgIHZvaWQgc2NyaXB0T2JqZWN0UmVhZHko
KTsKICAgICB2b2lkIG1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdDsKLSAgICB2
b2lkIHNldEF0dGFjaGVkV2luZG93KGJvb2wpOwogICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KTsKICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGNv
bnN0IFN0cmluZyYgcGFuZWxOYW1lKTsKICAgICB2b2lkIGNsb3NlV2luZG93KCk7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpIGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnBy
aQppbmRleCA5MmExMjBkLi5jYTljZjkwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL2hlYWRl
cnMucHJpCisrKyBiL1dlYktpdC9xdC9BcGkvaGVhZGVycy5wcmkKQEAgLTEwLDQgKzEwLDUgQEAg
V0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0QvcXdlYmZyYW1lLmggXAogICAgICAgICAgICAgICAg
ICAgICAgJCRQV0QvcXdlYnBsdWdpbmRhdGFiYXNlLmggXAogICAgICAgICAgICAgICAgICAgICAg
JCRQV0QvcXdlYnBsdWdpbmZhY3RvcnkuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9x
d2ViaGlzdG9yeS5oIFwKKyAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJpbnNwZWN0b3Iu
aCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Via2l0dmVyc2lvbi5oCmRpZmYgLS1n
aXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3IuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2Vi
aW5zcGVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWNjZmZm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcApAQCAt
MCwwICsxLDI0OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgInF3ZWJpbnNwZWN0b3IuaCIKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAicXdlYmVsZW1lbnQuaCIKKyNp
bmNsdWRlICJxd2ViaW5zcGVjdG9yX3AuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCisKKyNp
bmNsdWRlIDxRUmVzaXplRXZlbnQ+CisKKy8vIFRPRE86IGhhbmRsZSB0aGUgIkFsd2F5cyBlbmFi
bGUiIGNvbW1hbmRzIHdpdGggUVdlYlNldHRpbmdzCisvLyBUT0RPOiBhZGQgYXBpIHRvIGNoYW5n
ZSBhbmQgZ2V0IHRoZSBhY3RpdmUgdGFiPworLy8gVE9ETzogZmlsbCBvciBkaXNhYmxlIHRoZSBE
YXRhYmFzZXMgdGFiPworCisvKiEKKyAgICBcY2xhc3MgUVdlYkluc3BlY3RvcgorICAgIFxzaW5j
ZSA0LjYKKyAgICBcYnJpZWYgVGhlIFFXZWJJbnNwZWN0b3IgY2xhc3MgYWxsb3dzIHRoZSBwbGFj
ZW1lbnQgYW5kIGNvbnRyb2wgb2YgYQorICAgIFFXZWJQYWdlJ3MgaW5zcGVjdG9yLgorICAgIEFu
IGluc3BlY3RvciBhbGxvd3MgeW91IHRvIHNlZSBhIHBhZ2UgY3VycmVudCBoaWVyYXJjaHkgYW5k
IGxvYWRpbmcKKyAgICBzdGF0aXN0aWNzLgorCisgICAgVGhlIFFXZWJQYWdlIHRvIGJlIGluc3Bl
Y3RlZCBpcyBkZXRlcm1pbmVkIHdpdGggdGhlIHNldFBhZ2UoKSBtZXRob2QuCisKKyAgICBBIHR5
cGljYWwgdXNlIG9mIFFXZWJJbnNwZWN0b3IgZm9sbG93czoKKworICAgIFxzbmlwcGV0IHdlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBldC5jcHAgMAorCisgICAgVGhp
cyBjbGFzcyBhY3RzIG1vc3RseSBhcyBhIGNvbnRhaW5lciBhbmQgYSBjb250cm9sbGVyIGZvciB0
aGUgaW5zcGVjdG9yLgorICAgIE1vc3Qgb2YgdGhlIHJlc291cmNlcyBuZWVkZWQgZm9yIHRoZSBp
bnNwZWN0b3IgYXJlIGJpbmRlZCB0byBRV2ViUGFnZSwKKyAgICBhbmQgYXJlIGFsbG9jYXRlZCB0
aGUgZmlyc3QgdGltZSB0aGF0OgorICAgIFxsaXN0CisgICAgICAgIFxvIGFuIGVsZW1lbnQgaXMg
aW5zcGVjdGVkCisgICAgICAgIFxvIHRoZSBRV2ViSW5zcGVjdG9yIGlzIHNob3duLgorICAgIFxl
bmRsaXN0CisKKyAgICBcbm90ZSBBIFFXZWJJbnNwZWN0b3Igd2lsbCBkaXNwbGF5IGEgYmxhbmsg
d2lkZ2V0IGlmIGVpdGhlcjoKKyAgICBcbGlzdAorICAgICAgICBcbyBwYWdlKCkgaXMgbnVsbAor
ICAgICAgICBcbyBRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQgaXMgZmFsc2UK
KyAgICBcZW5kbGlzdAorKi8KKworLyohCisgICAgQ29uc3RydWN0cyBhbiBlbXB0eSBRV2ViSW5z
cGVjdG9yIHdpdGggcGFyZW50IFxhIHBhcmVudC4KKyovCitRV2ViSW5zcGVjdG9yOjpRV2ViSW5z
cGVjdG9yKFFXaWRnZXQqIHBhcmVudCkKKyAgICA6IFFXaWRnZXQocGFyZW50KQorICAgICwgZChu
ZXcgUVdlYkluc3BlY3RvclByaXZhdGUodGhpcykpCit7Cit9CisKKy8qIQorICAgIERlc3Ryb3lz
IHRoZSBpbnNwZWN0b3IuCisqLworUVdlYkluc3BlY3Rvcjo6flFXZWJJbnNwZWN0b3IoKQorewor
ICAgIC8vIFJlbW92ZSBhc3NvY2lhdGlvbiBwcmluY2lwYWxseSB0byBwcmV2ZW50IGRlbGV0aW5n
IGEgY2hpbGQgZnJvbnRlbmQKKyAgICBzZXRQYWdlKDApOworfQorCisvKiEKKyAgICBTZXRzIHRo
ZSBRV2ViUGFnZSB0byBiZSBpbnNwZWN0ZWQuCisKKyAgICBFZmZlY3RzIHdpbGwgYmUgcmVmbGVj
dGVkIG9uIFFXZWJQYWdlOjppbnNwZWN0b3IoKS4KKyAgICBUaGVyZSBjYW4gb25seSBiZSBvbmUg
UVdlYkluc3BlY3RvciBhc3NvY2lhdGVkIHdpdGggYSBRV2ViUGFnZQorICAgIGFuZCB2aWNlcyB2
ZXJzYS4KKworICAgIENhbGxpbmcgd2l0aCBcYSBwYWdlIGFzIG51bGwgd2lsbCBicmVhayB0aGUg
Y3VycmVudCBhc3NvY2lhdGlvbiwgaWYgYW55LgorCisgICAgXHNhIHBhZ2UoKSwgUVdlYlBhZ2U6
Omluc3BlY3RvcigpCisqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpzZXRQYWdlKFFXZWJQYWdlKiBw
YWdlKQoreworICAgIGlmIChkLT5wYWdlKQorICAgICAgICBkLT5wYWdlLT5kLT5zZXRJbnNwZWN0
b3IoMCk7CisKKyAgICBkLT5wYWdlID0gcGFnZTsKKworICAgIGlmIChwYWdlKSB7CisgICAgICAg
IC8vIFNldHVwIHRoZSByZWNpcHJvY2FsIGFzc29jaWF0aW9uCisgICAgICAgIHBhZ2UtPmQtPnNl
dEluc3BlY3Rvcih0aGlzKTsKKworICAgICAgICBwYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNldEF0dGFjaGVkV2luZG93KGlzRG9ja2VkKCkpOworICAgIH0KK30KKworLyohCisgICAg
UmV0dXJucyB0aGUgaW5zcGVjdGVkIFFXZWJQYWdlLgorICAgIElmIG5vIHdlYiBwYWdlIGlzIGN1
cnJlbnRseSBhc3NvY2lhdGVkLCBhIG51bGwgcG9pbnRlciBpcyByZXR1cm5lZC4KKyovCitRV2Vi
UGFnZSogUVdlYkluc3BlY3Rvcjo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnBhZ2U7
Cit9CisKKy8qIQorICAgIFRoaXMgbWV0aG9kIGNoYW5nZXMgdGhlIGFwcGVhcmFuY2Ugb2YgdGhl
IGluc3BlY3RvciB0byBtYXRjaCBhIGRvY2tlZCBzdGF0ZS4KKyAgICBUaGlzIG9ubHkgY29udHJv
bHMgdGhlIGFwcGVhcmFuY2UsIHRoZSBhY3R1YWwgZG9ja2luZyBvZiB0aGUgUVdlYkluc3BlY3Rv
cgorICAgIHdpZGdldCB0byB0aGUgdXNlciBpbnRlcmZhY2UgbXVzdCBiZSBkb25lIHNlcGFyYXRl
bHkuCisKKyAgICBcc2EgdW5kb2NrKCksIGlzRG9ja2VkKCksIGRvY2tSZXF1ZXN0ZWQoKSwgdW5k
b2NrUmVxdWVzdGVkKCkKKyovCit2b2lkIFFXZWJJbnNwZWN0b3I6OmRvY2soKQoreworICAgIGQt
PmlzRG9ja2VkID0gdHJ1ZTsKKyAgICBpZiAoZC0+cGFnZSkKKyAgICAgICAgZC0+cGFnZS0+ZC0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRBdHRhY2hlZFdpbmRvdyh0cnVlKTsKK30KKworLyoh
CisgICAgVGhpcyBtZXRob2QgY2hhbmdlcyB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgaW5zcGVjdG9y
IHRvIG1hdGNoIGFuIHVuZG9ja2VkIHN0YXRlLgorICAgIFRoaXMgb25seSBjb250cm9scyB0aGUg
YXBwZWFyYW5jZSwgdGhlIGFjdHVhbCB1bmRvY2tpbmcgb2YgdGhlIFFXZWJJbnNwZWN0b3IKKyAg
ICB3aWRnZXQgZnJvbSB0aGUgdXNlciBpbnRlcmZhY2UgbXVzdCBiZSBkb25lIHNlcGFyYXRlbHku
CisKKyAgICBcc2EgZG9jaygpLCBpc0RvY2tlZCgpLCBkb2NrUmVxdWVzdGVkKCksIHVuZG9ja1Jl
cXVlc3RlZCgpCisqLwordm9pZCBRV2ViSW5zcGVjdG9yOjp1bmRvY2soKQoreworICAgIGQtPmlz
RG9ja2VkID0gZmFsc2U7CisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPmQtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0QXR0YWNoZWRXaW5kb3coZmFsc2UpOworfQorCisvKiEK
KyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGluc3BlY3RvciBhcHBlYXJhbmNlIGlzIGN1cnJlbnRs
eSBpbiBhIGRvY2tlZCBzdGF0ZS4KKworICAgIFxzYSBkb2NrKCksIHVuZG9jaygpLCBkb2NrUmVx
dWVzdGVkKCksIHVuZG9ja1JlcXVlc3RlZCgpCisqLworYm9vbCBRV2ViSW5zcGVjdG9yOjppc0Rv
Y2tlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPmlzRG9ja2VkOworfQorCisvKiEgXHJlaW1w
ICovCitRU2l6ZSBRV2ViSW5zcGVjdG9yOjpzaXplSGludCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFFTaXplKDQ1MCwgMzAwKTsKK30KKworLyohIFxyZWltcCAqLworYm9vbCBRV2ViSW5zcGVjdG9y
OjpldmVudChRRXZlbnQqIGV2KQoreworICAgIHJldHVybiBRV2lkZ2V0OjpldmVudChldik7Cit9
CisKKy8qISBccmVpbXAgKi8KK3ZvaWQgUVdlYkluc3BlY3Rvcjo6cmVzaXplRXZlbnQoUVJlc2l6
ZUV2ZW50KiBldmVudCkKK3sKKyAgICBkLT5hZGp1c3RGcm9udGVuZFNpemUoZXZlbnQtPnNpemUo
KSk7Cit9CisKKy8qISBccmVpbXAgKi8KK3ZvaWQgUVdlYkluc3BlY3Rvcjo6c2hvd0V2ZW50KFFT
aG93RXZlbnQqIGV2ZW50KQoreworICAgIC8vIEFsbG93cyBRV2ViSW5zcGVjdG9yOjpzaG93KCkg
dG8gaW5pdCB0aGUgaW5zcGVjdG9yLgorICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIGQtPnBh
Z2UtPmQtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgIH0KK30KKworLyohIFxy
ZWltcCAqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpoaWRlRXZlbnQoUUhpZGVFdmVudCogZXZlbnQp
Cit7CisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2V0V2luZG93VmlzaWJsZShmYWxzZSk7Cit9CisKKy8qISBcaW50ZXJuYWwgKi8K
K3ZvaWQgUVdlYkluc3BlY3RvclByaXZhdGU6OnNldEZyb250ZW5kKFFXaWRnZXQqIG5ld0Zyb250
ZW5kKQoreworICAgIGlmIChmcm9udGVuZCkKKyAgICAgICAgZnJvbnRlbmQtPnNldFBhcmVudCgw
KTsKKworICAgIGZyb250ZW5kID0gbmV3RnJvbnRlbmQ7CisKKyAgICBpZiAoZnJvbnRlbmQpIHsK
KyAgICAgICAgZnJvbnRlbmQtPnNldFBhcmVudChxKTsKKyAgICAgICAgZnJvbnRlbmQtPnNob3co
KTsKKyAgICAgICAgYWRqdXN0RnJvbnRlbmRTaXplKHEtPnNpemUoKSk7CisgICAgfQorfQorCisv
KiEKKyAgICBcaW50ZXJuYWwKKyAgICBDYWxsZWQgaW50ZXJuYWxseSBieSB0aGUgaW5zcGVjdG9y
LgorKi8KK3ZvaWQgUVdlYkluc3BlY3RvclByaXZhdGU6OnNldERvY2tlZChib29sIGlzRG9ja2Vk
KQoreworICAgIGJvb2wgY2hhbmdlZCA9IHRoaXMtPmlzRG9ja2VkICE9IGlzRG9ja2VkOworICAg
IHRoaXMtPmlzRG9ja2VkID0gaXNEb2NrZWQ7CisgICAgaWYgKGNoYW5nZWQpIHsKKyAgICAgICAg
aWYgKGlzRG9ja2VkKQorICAgICAgICAgICAgZW1pdCBxLT5kb2NrUmVxdWVzdGVkKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXQgcS0+dW5kb2NrUmVxdWVzdGVkKCk7CisgICAgfQor
fQorCit2b2lkIFFXZWJJbnNwZWN0b3JQcml2YXRlOjphZGp1c3RGcm9udGVuZFNpemUoY29uc3Qg
UVNpemUmIHNpemUpCit7CisgICAgaWYgKGZyb250ZW5kKQorICAgICAgICBmcm9udGVuZC0+cmVz
aXplKHNpemUpOworfQorCisvKiEKKyAgICBcZm4gdm9pZCBRV2ViSW5zcGVjdG9yOjp3aW5kb3dU
aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYgbmV3VGl0bGUpOworCisgICAgVGhpcyBpcyBlbWl0
dGVkIHRvIHNpZ25hbCB0aGF0IHRoaXMgd2lkZ2V0J3MgdGl0bGUgY2hhbmdlZCB0byBcYSBuZXdU
aXRsZS4KKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFXZWJJbnNwZWN0b3I6OmRvY2tSZXF1ZXN0
ZWQoKTsKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBwcmVzc2Vk
IHRoZSBkb2NrIGJ1dHRvbiBpbiB0aGUKKyAgICBpbnNwZWN0b3IgYW5kIGNoYW5nZWQgdGhlIGFw
cGVhcmFuY2UgdG8gYSBkb2NrZWQgc3RhdGUuCisKKyAgICBcc2EgZG9jaygpLCB1bmRvY2soKSwg
aXNEb2NrZWQoKSwgdW5kb2NrUmVxdWVzdGVkKCkKKyovCisKKy8qIQorICAgIFxmbiB2b2lkIFFX
ZWJJbnNwZWN0b3I6OnVuZG9ja1JlcXVlc3RlZCgpOworCisgICAgVGhpcyBzaWduYWwgaXMgZW1p
dHRlZCB3aGVuIHRoZSB1c2VyIHByZXNzZWQgdGhlIGRvY2sgYnV0dG9uIGluIHRoZQorICAgIGlu
c3BlY3RvciBhbmQgY2hhbmdlZCB0aGUgYXBwZWFyYW5jZSB0byBhbiBkb2NrZWQgc3RhdGUuCisK
KyAgICBcc2EgZG9jaygpLCB1bmRvY2soKSwgaXNEb2NrZWQoKSwgZG9ja1JlcXVlc3RlZCgpCisq
LworCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3IuaCBiL1dlYktpdC9x
dC9BcGkvcXdlYmluc3BlY3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmZmYWJiN2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3Iu
aApAQCAtMCwwICsxLDcwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFFXRUJJTlNQ
RUNUT1JfSAorI2RlZmluZSBRV0VCSU5TUEVDVE9SX0gKKworI2luY2x1ZGUgInF3ZWJraXRnbG9i
YWwuaCIKKyNpbmNsdWRlICJxd2VicGFnZS5oIgorCisjaW5jbHVkZSAicXdlYnZpZXcuaCIKKwor
Y2xhc3MgUVdlYkluc3BlY3RvclByaXZhdGU7CitjbGFzcyBRV2ViRWxlbWVudDsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIGNsYXNzIE5vZGU7Cit9OworCisKK2NsYXNzIFFXRUJLSVRfRVhQ
T1JUIFFXZWJJbnNwZWN0b3IgOiBwdWJsaWMgUVdpZGdldCB7CisgICAgUV9PQkpFQ1QKK3B1Ymxp
YzoKKyAgICBRV2ViSW5zcGVjdG9yKFFXaWRnZXQqIHBhcmVudCA9IDApOworICAgIH5RV2ViSW5z
cGVjdG9yKCk7CisKKyAgICB2b2lkIHNldFBhZ2UoUVdlYlBhZ2UqIHBhZ2UpOworICAgIFFXZWJQ
YWdlKiBwYWdlKCkgY29uc3Q7CisKKyAgICB2b2lkIGRvY2soKTsKKyAgICB2b2lkIHVuZG9jaygp
OworICAgIGJvb2wgaXNEb2NrZWQoKSBjb25zdDsKKworICAgIFFTaXplIHNpemVIaW50KCkgY29u
c3Q7CisgICAgYm9vbCBldmVudChRRXZlbnQqKTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgd2lu
ZG93VGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmIG5ld1RpdGxlKTsKKyAgICB2b2lkIGRvY2tS
ZXF1ZXN0ZWQoKTsKKyAgICB2b2lkIHVuZG9ja1JlcXVlc3RlZCgpOworCitwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2ZW50KTsKKyAgICB2b2lkIHNob3dF
dmVudChRU2hvd0V2ZW50KiBldmVudCk7CisgICAgdm9pZCBoaWRlRXZlbnQoUUhpZGVFdmVudCog
ZXZlbnQpOworCitwcml2YXRlOgorICAgIFFXZWJJbnNwZWN0b3JQcml2YXRlKiBkOworCisgICAg
ZnJpZW5kIGNsYXNzIFFXZWJJbnNwZWN0b3JQcml2YXRlOworICAgIGZyaWVuZCBjbGFzcyBRV2Vi
UGFnZTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2YXRlOworICAgIGZyaWVuZCBjbGFz
cyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDsKK307CisjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YktpdC9xdC9BcGkvcXdlYmluc3BlY3Rvcl9wLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0
b3JfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZWViMDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3JfcC5oCkBAIC0wLDAgKzEs
NDcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAg
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgUVdFQklOU1BFQ1RPUl9Q
X0gKKyNkZWZpbmUgUVdFQklOU1BFQ1RPUl9QX0gKKworY2xhc3MgUVNpemU7CitjbGFzcyBRV2Vi
SW5zcGVjdG9yOworY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBRV2lkZ2V0OworCitjbGFzcyBRV2Vi
SW5zcGVjdG9yUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgUVdlYkluc3BlY3RvclByaXZhdGUoUVdl
Ykluc3BlY3RvciogcXEpCisgICAgOiBxKHFxKQorICAgICwgcGFnZSgwKQorICAgICwgZnJvbnRl
bmQoMCkKKyAgICAsIGlzRG9ja2VkKGZhbHNlKQorICAgIHt9CisKKyAgICB2b2lkIHNldEZyb250
ZW5kKFFXaWRnZXQqIG5ld0Zyb250ZW5kKTsKKyAgICB2b2lkIHNldERvY2tlZChib29sIGlzRG9j
a2VkKTsKKyAgICB2b2lkIGFkanVzdEZyb250ZW5kU2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSk7CisK
KyAgICBRV2ViSW5zcGVjdG9yKiBxOworICAgIFFXZWJQYWdlKiBwYWdlOworICAgIFFXaWRnZXQq
IGZyb250ZW5kOworICAgIGJvb2wgaXNEb2NrZWQ7Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAK
aW5kZXggMTRiYjhkMC4uYmViMDZlMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
ICNpbmNsdWRlICJxd2ViaGlzdG9yeS5oIgogI2luY2x1ZGUgInF3ZWJoaXN0b3J5X3AuaCIKICNp
bmNsdWRlICJxd2Vic2V0dGluZ3MuaCIKKyNpbmNsdWRlICJxd2ViaW5zcGVjdG9yLmgiCisjaW5j
bHVkZSAicXdlYmluc3BlY3Rvcl9wLmgiCiAjaW5jbHVkZSAicXdlYmtpdHZlcnNpb24uaCIKIAog
I2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yOTksNiArMzAxLDkgQEAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZUFwcGxpY2F0aW9uQ2FjaGVQYXRoSWZOZWNlc3NhcnkoKQogUVdlYlBhZ2VQcml2YXRlOjpR
V2ViUGFnZVByaXZhdGUoUVdlYlBhZ2UgKnFxKQogICAgIDogcShxcSkKICAgICAsIHZpZXcoMCkK
KyAgICAsIGluc3BlY3RvckZyb250ZW5kKDApCisgICAgLCBpbnNwZWN0b3IoMCkKKyAgICAsIGlu
c3BlY3RvcklzSW50ZXJuYWxPbmx5KGZhbHNlKQogICAgICwgdmlld3BvcnRTaXplKFFTaXplKDAs
IDApKQogewogICAgIFdlYkNvcmU6OkluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJZk5lY2Vzc2Fy
eSgpOwpAQCAtMTEyNSw2ICsxMTMwLDU0IEBAIFFWYXJpYW50IFFXZWJQYWdlOjppbnB1dE1ldGhv
ZFF1ZXJ5KFF0OjpJbnB1dE1ldGhvZFF1ZXJ5IHByb3BlcnR5KSBjb25zdAogfQogCiAvKiEKKyAg
ICBcaW50ZXJuYWwKKyovCit2b2lkIFFXZWJQYWdlUHJpdmF0ZTo6c2V0SW5zcGVjdG9yKFFXZWJJ
bnNwZWN0b3IqIGluc3ApCit7CisgICAgaWYgKGluc3BlY3RvcikKKyAgICAgICAgaW5zcGVjdG9y
LT5kLT5zZXRGcm9udGVuZCgwKTsKKworICAgIGlmIChpbnNwZWN0b3JJc0ludGVybmFsT25seSkg
eworICAgICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwVG9EZWxldGUgPSBpbnNwZWN0b3I7CisgICAg
ICAgIGluc3BlY3RvciA9IDA7CisgICAgICAgIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5ID0gZmFs
c2U7CisgICAgICAgIGRlbGV0ZSBpbnNwVG9EZWxldGU7ICAgIC8vIERlbGV0ZSBhZnRlciB0byBw
cmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbgorICAgIH0KKworICAgIGluc3BlY3RvciA9IGluc3A7
CisKKyAgICAvLyBHaXZlIGluc3BlY3RvciBmcm9udGVuZCB3ZWIgdmlldyBpZiBwcmV2aW91c2x5
IGNyZWF0ZWQKKyAgICBpZiAoaW5zcGVjdG9yICYmIGluc3BlY3RvckZyb250ZW5kKQorICAgICAg
ICBpbnNwZWN0b3ItPmQtPnNldEZyb250ZW5kKGluc3BlY3RvckZyb250ZW5kKTsKK30KKworLyoh
CisgICAgXGludGVybmFsCisgICAgUmV0dXJucyB0aGUgaW5zcGVjdG9yIGFuZCBjcmVhdGVzIGl0
IGlmIGl0IHdhc24ndCBjcmVhdGVkIHlldC4KKyAgICBUaGUgaW5zdGFuY2UgY3JlYXRlZCBoZXJl
IHdpbGwgbm90IGJlIGF2YWlsYWJsZSB0aHJvdWdoIFFXZWJQYWdlJ3MgQVBJLgorKi8KK1FXZWJJ
bnNwZWN0b3IqIFFXZWJQYWdlUHJpdmF0ZTo6Z2V0T3JDcmVhdGVJbnNwZWN0b3IoKQoreworICAg
IGlmICghaW5zcGVjdG9yKSB7CisgICAgICAgIFFXZWJJbnNwZWN0b3IqIGluc3AgPSBuZXcgUVdl
Ykluc3BlY3RvcjsKKyAgICAgICAgaW5zcC0+c2V0UGFnZShxKTsKKyAgICAgICAgaW5zcC0+Y29u
bmVjdChxLCBTSUdOQUwoaW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQoKSksIFNMT1Qoc2hvdygpKSk7
CisgICAgICAgIGluc3AtPnNob3coKTsKKyAgICAgICAgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkg
PSB0cnVlOworCisgICAgICAgIFFfQVNTRVJUKGluc3BlY3Rvcik7IC8vIEFzc29jaWF0ZWQgdGhy
b3VnaCBRV2ViSW5zcGVjdG9yOjpzZXRQYWdlKHEpCisgICAgfQorICAgIHJldHVybiBpbnNwZWN0
b3I7Cit9CisKKy8qISBcaW50ZXJuYWwgKi8KK0luc3BlY3RvckNvbnRyb2xsZXIqIFFXZWJQYWdl
UHJpdmF0ZTo6aW5zcGVjdG9yQ29udHJvbGxlcigpCit7CisgICAgcmV0dXJuIHBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKTsKK30KKworCisvKiEKICAgIFxlbnVtIFFXZWJQYWdlOjpGaW5kRmxh
ZwogCiAgICBUaGlzIGVudW0gZGVzY3JpYmVzIHRoZSBvcHRpb25zIGF2YWlsYWJsZSB0byBRV2Vi
UGFnZSdzIGZpbmRUZXh0KCkgZnVuY3Rpb24uIFRoZSBvcHRpb25zCkBAIC0xMzM0LDYgKzEzODcs
OCBAQCBRV2ViUGFnZTo6flFXZWJQYWdlKCkKICAgICBGcmFtZUxvYWRlciAqbG9hZGVyID0gZC0+
bWFpbkZyYW1lLT5kLT5mcmFtZS0+bG9hZGVyKCk7CiAgICAgaWYgKGxvYWRlcikKICAgICAgICAg
bG9hZGVyLT5kZXRhY2hGcm9tUGFyZW50KCk7CisgICAgaWYgKGQtPmluc3BlY3RvcikKKyAgICAg
ICAgZC0+aW5zcGVjdG9yLT5zZXRQYWdlKDApOwogICAgIGRlbGV0ZSBkOwogfQogCkBAIC0xNDA4
LDYgKzE0NjMsMjMgQEAgUVdpZGdldCAqUVdlYlBhZ2U6OnZpZXcoKSBjb25zdAogfQogCiAvKiEK
KyAgICBSZXR1cm5zIHRoZSB3ZWIgaW5zcGVjdG9yIHdpZGdldCBhc3NvY2lhdGVkIHdpdGggdGhl
IHdlYiBwYWdlLgorCisgICAgVGhpcyBtZXRob2QgcmV0dXJucyBudWxsIGlmIG5vIFFXZWJJbnNw
ZWN0b3IgaGFzIGJlZW4gYXR0YWNoZWQgdG8gdGhpcworICAgIHBhZ2UuIEFuIGludGVybmFsIGlu
c3BlY3RvciBpcyB1c2VkIGlmIHRoZSB1c2VyIHNlbGVjdCBJbnNwZWN0IGZyb20gdGhlCisgICAg
Y29udGV4dCBtZW51IG1lYW53aGlsZS4KKworICAgIFxzYSBRV2ViSW5zcGVjdG9yOjpzZXRQYWdl
KCksIFFXZWJJbnNwZWN0b3I6OnBhZ2UoKQorICAgIFxzaW5jZSA0LjYKKyovCitRV2ViSW5zcGVj
dG9yKiBRV2ViUGFnZTo6aW5zcGVjdG9yKCkgY29uc3QKK3sKKyAgICBpZiAoZC0+aW5zcGVjdG9y
SXNJbnRlcm5hbE9ubHkpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBkLT5pbnNwZWN0
b3I7Cit9CisKKy8qIQogICAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW5ldmVyIGEgSmF2
YVNjcmlwdCBwcm9ncmFtIHRyaWVzIHRvIHByaW50IGEgXGEgbWVzc2FnZSB0byB0aGUgd2ViIGJy
b3dzZXIncyBjb25zb2xlLgogCiAgICAgRm9yIGV4YW1wbGUgaW4gY2FzZSBvZiBldmFsdWF0aW9u
IGVycm9ycyB0aGUgc291cmNlIFVSTCBtYXkgYmUgcHJvdmlkZWQgaW4gXGEgc291cmNlSUQgYXMg
d2VsbCBhcyB0aGUgXGEgbGluZU51bWJlci4KQEAgLTE2MzAsMTAgKzE3MDIsMTEgQEAgdm9pZCBR
V2ViUGFnZTo6dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYWN0aW9uLCBib29sIGNoZWNrZWQpCiAg
ICAgICAgICAgICBlZGl0b3ItPnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3Jp
dGluZ0RpcmVjdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnNwZWN0
RWxlbWVudDoKLSAgICAgICAgICAgIGlmICghZC0+aGl0VGVzdFJlc3VsdC5pc051bGwoKSkKKyAg
ICAgICAgICAgIGVtaXQgaW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQoKTsKKyAgICAgICAgICAgIGlm
ICghZC0+aGl0VGVzdFJlc3VsdC5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIGQtPmdldE9y
Q3JlYXRlSW5zcGVjdG9yKCk7CiAgICAgICAgICAgICAgICAgZC0+cGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5pbnNwZWN0KGQtPmhpdFRlc3RSZXN1bHQuZC0+aW5uZXJOb25TaGFyZWROb2Rl
LmdldCgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkLT5wYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPnNob3coKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29tbWFuZCA9IFFXZWJQYWdlUHJp
dmF0ZTo6ZWRpdG9yQ29tbWFuZEZvcldlYkFjdGlvbnMoYWN0aW9uKTsKQEAgLTI5NDYsNiArMzAx
OSwxNiBAQCBxdWludDY0IFFXZWJQYWdlOjpieXRlc1JlY2VpdmVkKCkgY29uc3QKICovCiAKIC8q
IQorICAgIFxmbiB2b2lkIFFXZWJQYWdlOjppbnNwZWN0RWxlbWVudFRyaWdnZXJlZCgpCisgICAg
XHNpbmNlIDQuNgorCisgICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRyaWdnZXJBY3Rp
b24oKSBpcyBjYWxsZWQgd2l0aCBhIFdlYkFjdGlvbjo6SW5zcGVjdEVsZW1lbnQuCisgICAgSW5z
cGVjdGluZyBhbiBlbGVtZW50IHRocm91Z2ggdGhlIHBhZ2UncyBjb250ZXh0IG1lbnUgd2lsbCBh
bHNvIGVtaXQgdGhpcyBzaWduYWwuCisKKyAgICBcc2EgUVdlYkluc3BlY3RvcgorKi8KKworLyoh
CiAgICAgXGZuIHZvaWQgUVdlYlBhZ2U6OnRvb2xCYXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVzdGVk
KGJvb2wgdmlzaWJsZSkKIAogICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbmV2ZXIgdGhl
IHZpc2liaWxpdHkgb2YgdGhlIHRvb2xiYXIgaW4gYSB3ZWIgYnJvd3NlcgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCmluZGV4
IDI0NzQxYTEuLjE4MWNhNDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAor
KysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKQEAgLTQ3LDEyICs0NywxNSBAQCBjbGFzcyBR
V2ViTmV0d29ya0ludGVyZmFjZTsKIGNsYXNzIFFXZWJQbHVnaW5GYWN0b3J5OwogY2xhc3MgUVdl
YkhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBRV2ViSGlzdG9yeUl0ZW07CitjbGFzcyBRV2ViSW5zcGVj
dG9yOworY2xhc3MgUVdlYkVsZW1lbnQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBDaHJvbWVDbGllbnRRdDsKICAgICBjbGFzcyBFZGl0b3JDbGllbnRRdDsKICAgICBjbGFzcyBG
cmFtZUxvYWRlckNsaWVudFF0OwogICAgIGNsYXNzIEluc3BlY3RvckNsaWVudFF0OworICAgIGNs
YXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VIYW5kbGU7CiAgICAg
Y2xhc3MgSGl0VGVzdFJlc3VsdDsKIApAQCAtMjAxLDYgKzIwNCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFZpZXcoUVdpZGdldCAqdmlldyk7CiAgICAgUVdpZGdldCAqdmlldygpIGNvbnN0Owog
CisgICAgUVdlYkluc3BlY3RvciogaW5zcGVjdG9yKCkgY29uc3Q7CiAgICAgYm9vbCBpc01vZGlm
aWVkKCkgY29uc3Q7CiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIFFVbmRvU3RhY2sgKnVu
ZG9TdGFjaygpIGNvbnN0OwpAQCAtMzA2LDYgKzMxMCw3IEBAIFFfU0lHTkFMUzoKICAgICB2b2lk
IHdpbmRvd0Nsb3NlUmVxdWVzdGVkKCk7CiAgICAgdm9pZCBwcmludFJlcXVlc3RlZChRV2ViRnJh
bWUgKmZyYW1lKTsKICAgICB2b2lkIGxpbmtDbGlja2VkKGNvbnN0IFFVcmwgJnVybCk7CisgICAg
dm9pZCBpbnNwZWN0RWxlbWVudFRyaWdnZXJlZCgpOwogCiAgICAgdm9pZCB0b29sQmFyVmlzaWJp
bGl0eUNoYW5nZVJlcXVlc3RlZChib29sIHZpc2libGUpOwogICAgIHZvaWQgc3RhdHVzQmFyVmlz
aWJpbGl0eUNoYW5nZVJlcXVlc3RlZChib29sIHZpc2libGUpOwpAQCAtMzQ2LDExICszNTEsMTMg
QEAgcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgUV9QUklWQVRFX1NMT1QoZCwgdm9pZCBf
cV9jbGVhbnVwTGVha01lc3NhZ2VzKCkpCiAjZW5kaWYKKwogICAgIFFXZWJQYWdlUHJpdmF0ZSAq
ZDsKIAogICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWU7CiAgICAgZnJpZW5kIGNsYXNzIFFXZWJQ
YWdlUHJpdmF0ZTsKICAgICBmcmllbmQgY2xhc3MgUVdlYlZpZXc7CisgICAgZnJpZW5kIGNsYXNz
IFFXZWJJbnNwZWN0b3I7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkNocm9tZUNsaWVudFF0
OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDsKICAgICBmcmllbmQg
Y2xhc3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDsKZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9BcGkvcXdlYnBhZ2VfcC5oIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKaW5kZXggODdj
NjI0ZC4uYThjNjg5YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKKysr
IGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKQEAgLTY1LDYgKzY1LDggQEAgY2xhc3MgUU1l
bnU7CiBjbGFzcyBRQml0QXJyYXk7CiBRVF9FTkRfTkFNRVNQQUNFCiAKK2NsYXNzIFFXZWJJbnNw
ZWN0b3I7CisKIGNsYXNzIFFXZWJQYWdlUHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAgUVdlYlBhZ2VQ
cml2YXRlKFFXZWJQYWdlKik7CkBAIC0xMTEsNiArMTEzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGxlYXZlRXZlbnQoUUV2ZW50ICopOwogICAgIGJvb2wgaGFuZGxlU2Nyb2xsaW5nKFFLZXlFdmVu
dCosIFdlYkNvcmU6OkZyYW1lKik7CiAKKyAgICB2b2lkIHNldEluc3BlY3RvcihRV2ViSW5zcGVj
dG9yKik7CisgICAgUVdlYkluc3BlY3RvciogZ2V0T3JDcmVhdGVJbnNwZWN0b3IoKTsKKyAgICBX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CisKICNp
Zm5kZWYgUVRfTk9fU0hPUlRDVVQKICAgICBzdGF0aWMgUVdlYlBhZ2U6OldlYkFjdGlvbiBlZGl0
b3JBY3Rpb25Gb3JLZXlFdmVudChRS2V5RXZlbnQqIGV2ZW50KTsKICNlbmRpZgpAQCAtMTY4LDYg
KzE3NCwxMCBAQCBwdWJsaWM6CiAKICAgICBRV2ViUGx1Z2luRmFjdG9yeSAqcGx1Z2luRmFjdG9y
eTsKIAorICAgIFFXaWRnZXQqIGluc3BlY3RvckZyb250ZW5kOworICAgIFFXZWJJbnNwZWN0b3Iq
IGluc3BlY3RvcjsKKyAgICBib29sIGluc3BlY3RvcklzSW50ZXJuYWxPbmx5OyAvLyBUcnVlIGlm
IGNyZWF0ZWQgdGhyb3VnaCB0aGUgSW5zcGVjdCBjb250ZXh0IG1lbnUgYWN0aW9uCisKICAgICBz
dGF0aWMgYm9vbCBkcnRSdW47CiB9OwogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJz
ZXR0aW5ncy5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMTU3MTQ3
MC4uNDk0NTdhNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcApAQCAtMzIxLDggKzMyMSw5IEBAIFFX
ZWJTZXR0aW5ncyogUVdlYlNldHRpbmdzOjpnbG9iYWxTZXR0aW5ncygpCiAgICAgXHZhbHVlIEph
dmFzY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQgU3BlY2lmaWVzIHdoZXRoZXIgSmF2YVNjcmlwdCBw
cm9ncmFtcwogICAgICAgICBjYW4gcmVhZCBvciB3cml0ZSB0byB0aGUgY2xpcGJvYXJkLgogICAg
IFx2YWx1ZSBEZXZlbG9wZXJFeHRyYXNFbmFibGVkIEVuYWJsZXMgZXh0cmEgdG9vbHMgZm9yIFdl
YiBkZXZlbG9wZXJzLgotICAgICAgICBDdXJyZW50bHkgdGhpcyBlbmFibGVzIHRoZSAiSW5zcGVj
dCIgZWxlbWVudCBpbiB0aGUgY29udGV4dCBtZW51LAotICAgIHdoaWNoIHNob3dzIHRoZSBXZWJL
aXQgV2ViSW5zcGVjdG9yIGZvciB3ZWIgc2l0ZSBkZWJ1Z2dpbmcuCisgICAgICAgIEN1cnJlbnRs
eSB0aGlzIGVuYWJsZXMgdGhlICJJbnNwZWN0IiBlbGVtZW50IGluIHRoZSBjb250ZXh0IG1lbnUg
YXMKKyAgICAgICAgd2VsbCBhcyB0aGUgdXNlIG9mIFFXZWJJbnNwZWN0b3Igd2hpY2ggY29udHJv
bHMgdGhlIFdlYktpdCBXZWJJbnNwZWN0b3IKKyAgICAgICAgZm9yIHdlYiBzaXRlIGRlYnVnZ2lu
Zy4KICAgICBcdmFsdWUgTGlua3NJbmNsdWRlZEluRm9jdXNDaGFpbiBTcGVjaWZpZXMgd2hldGhl
ciBoeXBlcmxpbmtzIHNob3VsZCBiZQogICAgICAgICBpbmNsdWRlZCBpbiB0aGUga2V5Ym9hcmQg
Zm9jdXMgY2hhaW4uCiAgICAgXHZhbHVlIFpvb21UZXh0T25seSBTcGVjaWZpZXMgd2hldGhlciB0
aGUgem9vbSBmYWN0b3Igb24gYSBmcmFtZSBhcHBsaWVzIHRvCmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjMWRhNjMyLi5iODk4MDUz
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MSBAQAorMjAwOS0wOS0wNyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2Vs
eW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtRdF0gTWFrZSB0aGUgV2ViSW5zcGVjdG9yIGF2YWlsYWJsZSBhcyBh
IFFXaWRnZXQuCisKKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6CisgICAgICAgICogQXBpL3F3
ZWJlbGVtZW50Lmg6CisgICAgICAgICogQXBpL3F3ZWJpbnNwZWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBBcGkvcXdlYmluc3BlY3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdlYmlu
c3BlY3Rvcl9wLmg6IEFkZGVkLgorICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAg
IChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZSk6CisgICAgICAgIChRV2ViUGFnZVBy
aXZhdGU6OnNldEluc3BlY3Rvcik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmdldE9yQ3Jl
YXRlSW5zcGVjdG9yKToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6aW5zcGVjdG9yQ29udHJv
bGxlcik6CisgICAgICAgIChRV2ViUGFnZTo6flFXZWJQYWdlKToKKyAgICAgICAgKFFXZWJQYWdl
OjppbnNwZWN0b3IpOgorICAgICAgICAoUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24pOgorICAgICAg
ICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIEFwaS9xd2VicGFnZV9wLmg6CisgICAgICAg
ICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoK
KyAgICAgICAgKE1haW5XaW5kb3c6Ok1haW5XaW5kb3cpOgorICAgICAgICAoTWFpbldpbmRvdzo6
ZG9ja0luc3BlY3Rvcik6CisgICAgICAgIChNYWluV2luZG93Ojp1bmRvY2tJbnNwZWN0b3IpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFdlYlBhZ2U6Okluc3BlY3RvckNsaWVudFdlYlBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6Y3JlYXRlV2luZG93
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzaG93V2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpjbG9zZVdpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6YXR0YWNoV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpkZXRhY2hXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oOgorICAgICAgICAqIGRvY3Mvd2Via2l0c25pcHBldHMv
cXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcDogQWRkZWQuCisKIDIwMDktMDktMDUg
IEpha3ViIFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvUXRMYXVuY2hlci9tYWluLmNw
cCBiL1dlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwCmluZGV4IDM3OTA5YWYuLmFlZDI5ZDgg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9RdExhdW5jaGVyL21haW4uY3BwCisrKyBiL1dlYktpdC9x
dC9RdExhdW5jaGVyL21haW4uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8cXdlYmZy
YW1lLmg+CiAjaW5jbHVkZSA8cXdlYnNldHRpbmdzLmg+CiAjaW5jbHVkZSA8cXdlYmVsZW1lbnQu
aD4KKyNpbmNsdWRlIDxxd2ViaW5zcGVjdG9yLmg+CiAKICNpbmNsdWRlIDxRdEd1aT4KICNpbmNs
dWRlIDxRRGVidWc+CkBAIC03MSwxMiArNzIsMTIgQEAgcHVibGljOgogICAgIE1haW5XaW5kb3co
UVN0cmluZyB1cmwgPSBRU3RyaW5nKCkpOiBjdXJyZW50Wm9vbSgxMDApIHsKICAgICAgICAgc2V0
QXR0cmlidXRlKFF0OjpXQV9EZWxldGVPbkNsb3NlKTsKIAotICAgICAgICB2aWV3ID0gbmV3IFFX
ZWJWaWV3KHRoaXMpOwotICAgICAgICBzZXRDZW50cmFsV2lkZ2V0KHZpZXcpOworICAgICAgICBR
U3BsaXR0ZXIqIHNwbGl0dGVyID0gbmV3IFFTcGxpdHRlcihRdDo6VmVydGljYWwsIHRoaXMpOwor
ICAgICAgICBzZXRDZW50cmFsV2lkZ2V0KHNwbGl0dGVyKTsKIAorICAgICAgICB2aWV3ID0gbmV3
IFFXZWJWaWV3KHNwbGl0dGVyKTsKICAgICAgICAgV2ViUGFnZSogcGFnZSA9IG5ldyBXZWJQYWdl
KHZpZXcpOwogICAgICAgICB2aWV3LT5zZXRQYWdlKHBhZ2UpOwotICAgICAgICAKICAgICAgICAg
Y29ubmVjdCh2aWV3LCBTSUdOQUwobG9hZEZpbmlzaGVkKGJvb2wpKSwKICAgICAgICAgICAgICAg
ICB0aGlzLCBTTE9UKGxvYWRGaW5pc2hlZCgpKSk7CiAgICAgICAgIGNvbm5lY3QodmlldywgU0lH
TkFMKHRpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5nJikpLApAQCAtODUsNiArODYsMTUgQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgIHRoaXMsIFNMT1Qoc2hvd0xpbmtIb3Zlcihjb25zdCBRU3Ry
aW5nJiwgY29uc3QgUVN0cmluZyYpKSk7CiAgICAgICAgIGNvbm5lY3Qodmlldy0+cGFnZSgpLCBT
SUdOQUwod2luZG93Q2xvc2VSZXF1ZXN0ZWQoKSksIHRoaXMsIFNMT1QoY2xvc2UoKSkpOwogCisg
ICAgICAgIFFXZWJJbnNwZWN0b3IqIGluc3BlY3RvciA9IG5ldyBRV2ViSW5zcGVjdG9yKHNwbGl0
dGVyKTsKKyAgICAgICAgaW5zcGVjdG9yLT5zZXRQYWdlKHBhZ2UpOworICAgICAgICBpbnNwZWN0
b3ItPmRvY2soKTsKKyAgICAgICAgaW5zcGVjdG9yLT5oaWRlKCk7CisgICAgICAgIGNvbm5lY3Qo
dGhpcywgU0lHTkFMKGRlc3Ryb3llZCgpKSwgaW5zcGVjdG9yLCBTTE9UKGRlbGV0ZUxhdGVyKCkp
KTsKKyAgICAgICAgY29ubmVjdChwYWdlLCBTSUdOQUwoaW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQo
KSksIGluc3BlY3RvciwgU0xPVChzaG93KCkpKTsKKyAgICAgICAgY29ubmVjdChpbnNwZWN0b3Is
IFNJR05BTChkb2NrUmVxdWVzdGVkKCkpLCB0aGlzLCBTTE9UKGRvY2tJbnNwZWN0b3IoKSkpOwor
ICAgICAgICBjb25uZWN0KGluc3BlY3RvciwgU0lHTkFMKHVuZG9ja1JlcXVlc3RlZCgpKSwgdGhp
cywgU0xPVCh1bmRvY2tJbnNwZWN0b3IoKSkpOworCiAgICAgICAgIHNldHVwVUkoKTsKIAogICAg
ICAgICAvLyBzZXQgdGhlIHByb3h5IHRvIHRoZSBodHRwX3Byb3h5IGVudiB2YXJpYWJsZSAtIGlm
IHByZXNlbnQgICAgICAgIApAQCAtMjE1LDYgKzIyNSwxOCBAQCBwcm90ZWN0ZWQgc2xvdHM6CiAg
ICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGRvY2tJbnNwZWN0b3IoKSB7CisgICAgICAgIHZp
ZXctPnBhZ2UoKS0+aW5zcGVjdG9yKCktPnNldFBhcmVudChjZW50cmFsV2lkZ2V0KCkpOworICAg
IH0KKworICAgIHZvaWQgdW5kb2NrSW5zcGVjdG9yKCkgeworICAgICAgICBRV2ViSW5zcGVjdG9y
KiBpbnNwZWN0b3IgPSB2aWV3LT5wYWdlKCktPmluc3BlY3RvcigpOworICAgICAgICBib29sIHZp
c2libGUgPSBpbnNwZWN0b3ItPmlzVmlzaWJsZSgpOworICAgICAgICBpbnNwZWN0b3ItPnNldFBh
cmVudCgwKTsKKyAgICAgICAgaW5zcGVjdG9yLT5yZXNpemUoaW5zcGVjdG9yLT5zaXplKCkuZXhw
YW5kZWRUbyhpbnNwZWN0b3ItPnNpemVIaW50KCkpKTsKKyAgICAgICAgaW5zcGVjdG9yLT5zZXRW
aXNpYmxlKHZpc2libGUpOworICAgIH0KKwogcHVibGljIHNsb3RzOgogCiAgICAgdm9pZCBuZXdX
aW5kb3coY29uc3QgUVN0cmluZyAmdXJsID0gUVN0cmluZygpKSB7CmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAppbmRleCA1NmY2MTAxLi5mZjllZGI3
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
Y3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAK
QEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDbGllbnRRdC5oIgogCisjaW5jbHVkZSAicXdlYmluc3BlY3Rvci5oIgorI2luY2x1ZGUgInF3
ZWJpbnNwZWN0b3JfcC5oIgogI2luY2x1ZGUgInF3ZWJwYWdlLmgiCiAjaW5jbHVkZSAicXdlYnBh
Z2VfcC5oIgogI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCkBAIC00NCw0OCArNDYsMjQgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNwZWN0b3JDbGllbnRXZWJQYWdlIDogcHVibGlj
IFFXZWJQYWdlCi17CitjbGFzcyBJbnNwZWN0b3JDbGllbnRXZWJQYWdlIDogcHVibGljIFFXZWJQ
YWdlIHsKICAgICBRX09CSkVDVAogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JDbGllbnRRdDsK
IHB1YmxpYzoKLSAgICBRV2ViUGFnZSogY3JlYXRlV2luZG93KFFXZWJQYWdlOjpXZWJXaW5kb3dU
eXBlKQotICAgIHsKLSAgICAgICAgUVdpZGdldCAqdyA9IG5ldyBRV2ViVmlldygwKTsKLSAgICAg
ICAgUVdlYlBhZ2UgKnBhZ2UgPSBuZXcgUVdlYlBhZ2Uodyk7Ci0gICAgICAgIHBhZ2UtPnNldFZp
ZXcodyk7Ci0gICAgICAgIGNvbm5lY3QocGFnZSwgU0lHTkFMKGRlc3Ryb3llZCgpKSwgdywgU0xP
VChkZWxldGVMYXRlcigpKSk7Ci0gICAgICAgIHJldHVybiBwYWdlOwotICAgIH0KLQotUV9TSUdO
QUxTOgotICAgIHZvaWQgYXR0YWNoUmVxdWVzdGVkKCk7Ci0gICAgdm9pZCBkZXRhY2hSZXF1ZXN0
ZWQoKTsKLX07Ci0KLQotY2xhc3MgSW5zcGVjdG9yQ2xpZW50VmlldyA6IHB1YmxpYyBRV2ViVmll
dyB7Ci0KLXB1YmxpYzoKLSAgICBJbnNwZWN0b3JDbGllbnRWaWV3KEluc3BlY3RvckNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpCi0gICAgICAgIDogUVdlYlZpZXcoMCkKLSAgICAgICAgLCBtX2NvbnRy
b2xsZXIoY29udHJvbGxlcikKKyAgICBJbnNwZWN0b3JDbGllbnRXZWJQYWdlKFFPYmplY3QqIHBh
cmVudCA9IDApCisgICAgOiBRV2ViUGFnZShwYXJlbnQpCiAgICAgewotICAgICAgICBzZXRBdHRy
aWJ1dGUoUXQ6OldBX0RlbGV0ZU9uQ2xvc2UsIHRydWUpOwotICAgICAgICBzZXRQYWdlKG5ldyBJ
bnNwZWN0b3JDbGllbnRXZWJQYWdlKTsKLSAgICAgICAgY29ubmVjdChwYWdlKCksIFNJR05BTChk
ZXN0cm95ZWQoKSksIHRoaXMsIFNMT1QoY2xvc2UoKSkpOworICAgICAgICBzZXR0aW5ncygpLT5z
ZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCBmYWxzZSk7
CiAgICAgfQogCi1wcm90ZWN0ZWQ6Ci0KLSAgICB2b2lkIGNsb3NlRXZlbnQoUUNsb3NlRXZlbnQq
IGV2KQorICAgIFFXZWJQYWdlKiBjcmVhdGVXaW5kb3coUVdlYlBhZ2U6OldlYldpbmRvd1R5cGUp
CiAgICAgewotICAgICAgICBRV2lkZ2V0OjpjbG9zZUV2ZW50KGV2KTsKLSAgICAgICAgbV9jb250
cm9sbGVyLT5zZXRXaW5kb3dWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgUVdlYlZpZXcqIHZpZXcg
PSBuZXcgUVdlYlZpZXc7CisgICAgICAgIFFXZWJQYWdlKiBwYWdlID0gbmV3IFFXZWJQYWdlOwor
ICAgICAgICB2aWV3LT5zZXRQYWdlKHBhZ2UpOworICAgICAgICB2aWV3LT5zZXRBdHRyaWJ1dGUo
UXQ6OldBX0RlbGV0ZU9uQ2xvc2UpOworICAgICAgICByZXR1cm4gcGFnZTsKICAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgSW5zcGVjdG9yQ29udHJvbGxlciogbV9jb250cm9sbGVyOwogfTsKIAogCkBA
IC0xMDAsMTQgKzc4LDE5IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Omluc3BlY3RvckRlc3Ry
b3llZCgpCiAKIFBhZ2UqIEluc3BlY3RvckNsaWVudFF0OjpjcmVhdGVQYWdlKCkKIHsKLSAgICBp
ZiAobV93ZWJQYWdlKQotICAgICAgICByZXR1cm4gbV93ZWJQYWdlLT5kLT5wYWdlOworICAgIGlm
IChtX2luc3BlY3RvclZpZXcpCisgICAgICAgIHJldHVybiBtX2luc3BlY3RvclZpZXctPnBhZ2Uo
KS0+ZC0+cGFnZTsKKworICAgIFFXZWJWaWV3KiBpbnNwZWN0b3JWaWV3ID0gbmV3IFFXZWJWaWV3
OworICAgIEluc3BlY3RvckNsaWVudFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UgPSBuZXcgSW5zcGVj
dG9yQ2xpZW50V2ViUGFnZShpbnNwZWN0b3JWaWV3KTsKKyAgICBpbnNwZWN0b3JWaWV3LT5zZXRQ
YWdlKGluc3BlY3RvclBhZ2UpOworICAgIG1faW5zcGVjdG9yVmlldy5zZXQoaW5zcGVjdG9yVmll
dyk7CiAKLSAgICBJbnNwZWN0b3JDbGllbnRWaWV3KiB2aWV3ID0gbmV3IEluc3BlY3RvckNsaWVu
dFZpZXcobV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkp
OwotICAgIG1fd2ViUGFnZS5zZXQocW9iamVjdF9jYXN0PEluc3BlY3RvckNsaWVudFdlYlBhZ2Uq
Pih2aWV3LT5wYWdlKCkpKTsKLSAgICBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkKFFTdHJp
bmc6OmZyb21MYXRpbjEoInFyYzovd2Via2l0L2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbCIpKTsK
LSAgICBtX3dlYlBhZ2UtPnZpZXcoKS0+c2V0TWluaW11bVNpemUoNDAwLDMwMCk7Ci0gICAgcmV0
dXJuIG1fd2ViUGFnZS0+ZC0+cGFnZTsKKyAgICBpbnNwZWN0b3JQYWdlLT5tYWluRnJhbWUoKS0+
bG9hZChRU3RyaW5nOjpmcm9tTGF0aW4xKCJxcmM6L3dlYmtpdC9pbnNwZWN0b3IvaW5zcGVjdG9y
Lmh0bWwiKSk7CisgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3JGcm9udGVuZCA9
IGluc3BlY3RvclZpZXc7CisgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5nZXRPckNyZWF0ZUlu
c3BlY3RvcigpLT5kLT5zZXRGcm9udGVuZChpbnNwZWN0b3JWaWV3KTsKKworICAgIHJldHVybiBt
X2luc3BlY3RvclZpZXctPnBhZ2UoKS0+ZC0+cGFnZTsKIH0KIAogU3RyaW5nIEluc3BlY3RvckNs
aWVudFF0Ojpsb2NhbGl6ZWRTdHJpbmdzVVJMKCkKQEAgLTEyNCw0NCArMTA3LDMxIEBAIFN0cmlu
ZyBJbnNwZWN0b3JDbGllbnRRdDo6aGlkZGVuUGFuZWxzKCkKIAogdm9pZCBJbnNwZWN0b3JDbGll
bnRRdDo6c2hvd1dpbmRvdygpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVy
bjsKLQogICAgIHVwZGF0ZVdpbmRvd1RpdGxlKCk7Ci0gICAgbV93ZWJQYWdlLT52aWV3KCktPnNo
b3coKTsKLSAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2V0V2luZG93VmlzaWJsZSh0cnVlKTsKLX0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnRR
dDo6Y2xvc2VXaW5kb3coKQotewotICAgIGlmICghbV93ZWJQYWdlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX3dlYlBhZ2UtPnZpZXcoKS0+aGlkZSgpOwotICAgIG1faW5zcGVjdGVkV2ViUGFn
ZS0+ZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5kb3dWaXNpYmxlKGZhbHNl
KTsKKyAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgaW5zcGVjdG9yIHRvIGFzayBmb3IgdmlzaWJp
bGl0eSBpdHNlbGYuCisgICAgLy8gSW5zcGVjdGluZyBhbiBlbGVtZW50IG9yIGNhbGxpbmcgUVdl
Ykluc3BlY3Rvcjo6c2hvdygpIHNob3VsZCBhbHJlYWR5IGhhdmUgbWFkZSB0aGUKKyAgICAvLyB3
aW5kb3cgdmlzaWJsZS4KKyAgICBib29sIGF0dGFjaGVkID0gbV9pbnNwZWN0ZWRXZWJQYWdlLT5k
LT5pbnNwZWN0b3IgPyBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3Rvci0+aXNEb2NrZWQo
KSA6IGZhbHNlOworICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5zZXRXaW5kb3dWaXNpYmxlKHRydWUsIGF0dGFjaGVkKTsKIH0KIAotYm9vbCBJbnNwZWN0
b3JDbGllbnRRdDo6d2luZG93VmlzaWJsZSgpCit2b2lkIEluc3BlY3RvckNsaWVudFF0OjpjbG9z
ZVdpbmRvdygpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gbV93ZWJQYWdlLT52aWV3KCktPmlzVmlzaWJsZSgpOworICAgIGlmIChtX2lu
c3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3RvcikKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJQYWdl
LT5kLT5pbnNwZWN0b3ItPmNsb3NlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmF0
dGFjaFdpbmRvdygpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGVtaXQgbV93ZWJQYWdlLT5hdHRhY2hSZXF1ZXN0ZWQoKTsKKyAgICBpZiAobV9pbnNwZWN0
ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3IpCisgICAgICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+
aW5zcGVjdG9yLT5kLT5zZXREb2NrZWQodHJ1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50
UXQ6OmRldGFjaFdpbmRvdygpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGVtaXQgbV93ZWJQYWdlLT5kZXRhY2hSZXF1ZXN0ZWQoKTsKKyAgICBpZiAobV9p
bnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3IpCisgICAgICAgIG1faW5zcGVjdGVkV2ViUGFn
ZS0+ZC0+aW5zcGVjdG9yLT5kLT5zZXREb2NrZWQoZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNsaWVudFF0OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCkBAIC0x
OTIsMTEgKzE2MiwxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JXaW5kb3dP
YmplY3RDbGVhcmVkKCkKIAogdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6dXBkYXRlV2luZG93VGl0
bGUoKQogewotICAgIGlmICghbV93ZWJQYWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBRU3Ry
aW5nIGNhcHRpb24gPSBRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIldl
YiBJbnNwZWN0b3IgLSAlMiIpOwotICAgIG1fd2ViUGFnZS0+dmlldygpLT5zZXRXaW5kb3dUaXRs
ZShjYXB0aW9uLmFyZyhtX2luc3BlY3RlZFVSTCkpOworICAgIGlmIChtX2luc3BlY3RlZFdlYlBh
Z2UtPmQtPmluc3BlY3RvcikgeworICAgICAgICBRU3RyaW5nIGNhcHRpb24gPSBRQ29yZUFwcGxp
Y2F0aW9uOjp0cmFuc2xhdGUoIlFXZWJQYWdlIiwgIldlYiBJbnNwZWN0b3IgLSAlMiIpLmFyZyht
X2luc3BlY3RlZFVSTCk7CisgICAgICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9y
LT5zZXRXaW5kb3dUaXRsZShjYXB0aW9uKTsKKyAgICAgICAgZW1pdCBtX2luc3BlY3RlZFdlYlBh
Z2UtPmQtPmluc3BlY3Rvci0+d2luZG93VGl0bGVDaGFuZ2VkKGNhcHRpb24pOworICAgIH0KIH0K
IAogdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBJbnNwZWN0b3JDb250cm9sbGVyOjpTZXR0aW5nJiBzZXR0aW5nKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmggYi9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAppbmRleCAwM2M2ODRhLi5jY2Y4YjY5
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
aAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaApAQCAt
MzUsMTIgKzM1LDEyIEBACiAjaW5jbHVkZSA8UXRDb3JlL1FTdHJpbmc+CiAKIGNsYXNzIFFXZWJQ
YWdlOworY2xhc3MgUVdlYlZpZXc7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBO
b2RlOwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIEluc3Bl
Y3RvckNsaWVudFdlYlBhZ2U7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnRRdCA6IHB1Ymxp
YyBJbnNwZWN0b3JDbGllbnQgewogICAgIHB1YmxpYzoKQEAgLTU2LDcgKzU2LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBzaG93V2luZG93KCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgd2lu
ZG93VmlzaWJsZSgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwpAQCAtNzYsNyArNzUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCB1cGRhdGVXaW5kb3dU
aXRsZSgpOwogICAgICAgICBRV2ViUGFnZSogbV9pbnNwZWN0ZWRXZWJQYWdlOwotICAgICAgICBP
d25QdHI8SW5zcGVjdG9yQ2xpZW50V2ViUGFnZT4gbV93ZWJQYWdlOworICAgICAgICBPd25QdHI8
UVdlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKICAgICAgICAgUVN0cmluZyBtX2luc3BlY3RlZFVS
TDsKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L2RvY3Mvd2Via2l0c25pcHBldHMv
cXR3ZWJraXRfcXdlYmluc3BlY3Rvcl9zbmlwcGV0LmNwcCBiL1dlYktpdC9xdC9kb2NzL3dlYmtp
dHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBldC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFjZWY0MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3ZWJpbnNwZWN0b3Jfc25pcHBldC5j
cHAKQEAgLTAsMCArMSwxNyBAQAorCit2b2lkIHdyYXBJbkZ1bmN0aW9uKCkKK3sKKworLy8hIFsw
XQorICAgIC8vIC4uLgorICAgIFFXZWJQYWdlICpwYWdlID0gbmV3IFFXZWJQYWdlOworICAgIC8v
IC4uLgorCisgICAgUVdlYkluc3BlY3RvciogaW5zcGVjdG9yID0gbmV3IFFXZWJJbnNwZWN0b3I7
CisgICAgaW5zcGVjdG9yLT5zZXRQYWdlKHBhZ2UpOworCisgICAgY29ubmVjdChwYWdlLCBTSUdO
QUwoaW5zcGVjdEVsZW1lbnRUcmlnZ2VyZWQoKSksIGluc3BlY3RvciwgU0xPVChzaG93KCkpKTsK
Ky8vISBbMF0KKworfQorCg==
</data>
<flag name="review"
          id="20318"
          type_id="1"
          status="-"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39347</attachid>
            <date>2009-09-10 07:26:57 -0700</date>
            <delta_ts>2009-09-11 01:24:20 -0700</delta_ts>
            <desc>Changes v0.5</desc>
            <filename>qwebinspector.patch</filename>
            <type>text/plain</type>
            <size>29091</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGJmMmM2MS4uMWY1N2Y1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMSBAQAorMjAwOS0wOS0xMCAgSm9jZWx5biBUdXJj
b3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gTWFrZSB0aGUgV2ViSW5zcGVjdG9yIGF2
YWlsYWJsZSBhcyBhIFFXaWRnZXQuCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKwogMjAwOS0w
OS0wNyAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJv
IGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA2MTM1NjJjLi5kODQ0Yzc4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTIzNzEs
NiArMjM3MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYnBsdWdp
bmZhY3RvcnkuY3BwIFwKICAgICAuLi9XZWJLaXQvcXQvQXBpL3F3ZWJzZWN1cml0eW9yaWdpbi5j
cHAgXAogICAgIC4uL1dlYktpdC9xdC9BcGkvcXdlYmRhdGFiYXNlLmNwcCBcCisgICAgLi4vV2Vi
S2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmNwcCBcCiAgICAgLi4vV2ViS2l0L3F0L0FwaS9xd2Vi
a2l0dmVyc2lvbi5jcHAKIAogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJp
IGIvV2ViS2l0L3F0L0FwaS9oZWFkZXJzLnByaQppbmRleCA5MmExMjBkLi5jYTljZjkwIDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQXBpL2hlYWRlcnMucHJpCisrKyBiL1dlYktpdC9xdC9BcGkvaGVh
ZGVycy5wcmkKQEAgLTEwLDQgKzEwLDUgQEAgV0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0QvcXdl
YmZyYW1lLmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmRhdGFiYXNl
LmggXAogICAgICAgICAgICAgICAgICAgICAgJCRQV0QvcXdlYnBsdWdpbmZhY3RvcnkuaCBcCiAg
ICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2ViaGlzdG9yeS5oIFwKKyAgICAgICAgICAgICAg
ICAgICAgICQkUFdEL3F3ZWJpbnNwZWN0b3IuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBX
RC9xd2Via2l0dmVyc2lvbi5oCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50
LmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IDA5OWRjMTkuLjA5NDI1
ODggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCisrKyBiL1dlYktp
dC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCkBAIC0xNjYyLDYgKzE2NjIsMjMgQEAgdm9pZCBRV2Vi
RWxlbWVudDo6cmVwbGFjZShjb25zdCBRU3RyaW5nICZtYXJrdXApCiB9CiAKIC8qIQorICAgIFxp
bnRlcm5hbAorICAgIFdhbGsgXGEgbm9kZSdzIHBhcmVudHMgdW50aWwgYSB2YWxpZCBRV2ViRWxl
bWVudCBpcyBmb3VuZC4KKyAgICBGb3IgZXhhbXBsZSwgYSBXZWJDb3JlOjpUZXh0IG5vZGUgaXMg
bm90IGEgdmFsaWQgSHRtbCBRV2ViRWxlbWVudCwgYnV0IGl0cworICAgIGVuY2xvc2luZyBwIHRh
ZyBpcy4KKyovCitRV2ViRWxlbWVudCBRV2ViRWxlbWVudDo6ZW5jbG9zaW5nRWxlbWVudChXZWJD
b3JlOjpOb2RlKiBub2RlKQoreworICAgIFFXZWJFbGVtZW50IGVsZW1lbnQobm9kZSk7CisKKyAg
ICB3aGlsZSAoZWxlbWVudC5pc051bGwoKSAmJiBub2RlKSB7CisgICAgICAgIG5vZGUgPSBub2Rl
LT5wYXJlbnROb2RlKCk7CisgICAgICAgIGVsZW1lbnQgPSBRV2ViRWxlbWVudChub2RlKTsKKyAg
ICB9CisgICAgcmV0dXJuIGVsZW1lbnQ7Cit9CisKKy8qIQogICAgIFxmbiBpbmxpbmUgYm9vbCBR
V2ViRWxlbWVudDo6b3BlcmF0b3I9PShjb25zdCBRV2ViRWxlbWVudCYgbykgY29uc3Q7CiAKICAg
ICBSZXR1cm5zIHRydWUgaWYgdGhpcyBlbGVtZW50IHBvaW50cyB0byB0aGUgc2FtZSB1bmRlcmx5
aW5nIERPTSBvYmplY3QgYXMKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQu
aCBiL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuaAppbmRleCBiYzZmOGE5Li41ZjQ4NzBjIDEw
MDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmgKKysrIGIvV2ViS2l0L3F0L0Fw
aS9xd2ViZWxlbWVudC5oCkBAIC0xNDEsOSArMTQxLDEyIEBAIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgUVdlYkVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopOwogICAgIGV4cGxpY2l0IFFXZWJFbGVt
ZW50KFdlYkNvcmU6Ok5vZGUqKTsKIAorICAgIHN0YXRpYyBRV2ViRWxlbWVudCBlbmNsb3NpbmdF
bGVtZW50KFdlYkNvcmU6Ok5vZGUqKTsKKwogICAgIGZyaWVuZCBjbGFzcyBRV2ViRnJhbWU7CiAg
ICAgZnJpZW5kIGNsYXNzIFFXZWJIaXRUZXN0UmVzdWx0OwogICAgIGZyaWVuZCBjbGFzcyBRV2Vi
SGl0VGVzdFJlc3VsdFByaXZhdGU7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJQYWdlOwogCiAgICAg
UVdlYkVsZW1lbnRQcml2YXRlKiBkOwogICAgIFdlYkNvcmU6OkVsZW1lbnQqIG1fZWxlbWVudDsK
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmluc3BlY3Rvci5jcHAgYi9XZWJLaXQvcXQv
QXBpL3F3ZWJpbnNwZWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmNmNTZiYjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3Iu
Y3BwCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAicXdlYmluc3BlY3Rvci5oIgorCisjaW5jbHVkZSAiRWxlbWVudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJxd2ViZWxlbWVu
dC5oIgorI2luY2x1ZGUgInF3ZWJpbnNwZWN0b3JfcC5oIgorI2luY2x1ZGUgInF3ZWJwYWdlX3Au
aCIKKworI2luY2x1ZGUgPFFSZXNpemVFdmVudD4KKworLy8gVE9ETzogaGFuZGxlIHRoZSAiQWx3
YXlzIGVuYWJsZSIgY29tbWFuZHMgd2l0aCBRV2ViU2V0dGluZ3MKKworLyohCisgICAgXGNsYXNz
IFFXZWJJbnNwZWN0b3IKKyAgICBcc2luY2UgNC42CisgICAgXGJyaWVmIFRoZSBRV2ViSW5zcGVj
dG9yIGNsYXNzIGFsbG93cyB0aGUgcGxhY2VtZW50IGFuZCBjb250cm9sIG9mIGEKKyAgICBRV2Vi
UGFnZSdzIGluc3BlY3Rvci4KKyAgICBBbiBpbnNwZWN0b3IgYWxsb3dzIHlvdSB0byBzZWUgYSBw
YWdlIGN1cnJlbnQgaGllcmFyY2h5IGFuZCBsb2FkaW5nCisgICAgc3RhdGlzdGljcy4KKworICAg
IFRoZSBRV2ViUGFnZSB0byBiZSBpbnNwZWN0ZWQgaXMgZGV0ZXJtaW5lZCB3aXRoIHRoZSBzZXRQ
YWdlKCkgbWV0aG9kLgorCisgICAgQSB0eXBpY2FsIHVzZSBvZiBRV2ViSW5zcGVjdG9yIGZvbGxv
d3M6CisKKyAgICBcc25pcHBldCB3ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2ViaW5zcGVjdG9y
X3NuaXBwZXQuY3BwIDAKKworICAgIE1vc3Qgb2YgdGhlIHJlc291cmNlcyBuZWVkZWQgYnkgdGhl
IGluc3BlY3RvciBhcmUgb3duZWQgYnkgdGhlIGFzc29jaWF0ZWQKKyAgICBRV2ViUGFnZSBhbmQg
YXJlIGFsbG9jYXRlZCB0aGUgZmlyc3QgdGltZSB0aGF0OgorICAgIFxsaXN0CisgICAgICAgIFxv
IGFuIGVsZW1lbnQgaXMgaW5zcGVjdGVkCisgICAgICAgIFxvIHRoZSBRV2ViSW5zcGVjdG9yIGlz
IHNob3duLgorICAgIFxlbmRsaXN0CisKKyAgICBUaGlzIGNsYXNzIGFjdHMgbW9zdGx5IGFzIGEg
Y29udGFpbmVyIGFuZCBhIGNvbnRyb2xsZXIgZm9yIHRoZSBpbnNwZWN0b3IuCisgICAgWW91IGNh
biBkZWZlciB0aGUgY3JlYXRpb24gYW5kIGFzc29jaWF0aW9uIG9mIHRoZSBRV2ViSW5zcGVjdG9y
IHVudGlsCisgICAgdGhlIGZpcnN0IGVtaXNzaW9uIG9mIFFXZWJQYWdlOjp3ZWJJbnNwZWN0b3JU
cmlnZ2VyZWQoKSB0byBzYXZlIGFkZGl0aW9uYWwKKyAgICByZXNvdXJjZXMuCisKKyAgICBcbm90
ZSBBIFFXZWJJbnNwZWN0b3Igd2lsbCBkaXNwbGF5IGEgYmxhbmsgd2lkZ2V0IGlmIGVpdGhlcjoK
KyAgICBcbGlzdAorICAgICAgICBcbyBwYWdlKCkgaXMgbnVsbAorICAgICAgICBcbyBRV2ViU2V0
dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQgaXMgZmFsc2UKKyAgICBcZW5kbGlzdAorCisg
ICAgXHNhIFFXZWJQYWdlOjp3ZWJJbnNwZWN0b3JUcmlnZ2VyZWQoKQorKi8KKworLyohCisgICAg
Q29uc3RydWN0cyBhbiBlbXB0eSBRV2ViSW5zcGVjdG9yIHdpdGggcGFyZW50IFxhIHBhcmVudC4K
KyovCitRV2ViSW5zcGVjdG9yOjpRV2ViSW5zcGVjdG9yKFFXaWRnZXQqIHBhcmVudCkKKyAgICA6
IFFXaWRnZXQocGFyZW50KQorICAgICwgZChuZXcgUVdlYkluc3BlY3RvclByaXZhdGUodGhpcykp
Cit7Cit9CisKKy8qIQorICAgIERlc3Ryb3lzIHRoZSBpbnNwZWN0b3IuCisqLworUVdlYkluc3Bl
Y3Rvcjo6flFXZWJJbnNwZWN0b3IoKQoreworICAgIC8vIFJlbW92ZSBhc3NvY2lhdGlvbiBwcmlu
Y2lwYWxseSB0byBwcmV2ZW50IGRlbGV0aW5nIGEgY2hpbGQgZnJvbnRlbmQKKyAgICBzZXRQYWdl
KDApOworfQorCisvKiEKKyAgICBTZXRzIHRoZSBRV2ViUGFnZSB0byBiZSBpbnNwZWN0ZWQuCisK
KyAgICBUaGVyZSBjYW4gb25seSBiZSBvbmUgUVdlYkluc3BlY3RvciBhc3NvY2lhdGVkIHdpdGgg
YSBRV2ViUGFnZQorICAgIGFuZCB2aWNlcyB2ZXJzYS4KKworICAgIENhbGxpbmcgd2l0aCBcYSBw
YWdlIGFzIG51bGwgd2lsbCBicmVhayB0aGUgY3VycmVudCBhc3NvY2lhdGlvbiwgaWYgYW55Lgor
CisgICAgSWYgXGEgcGFnZSBpcyBhbHJlYWR5IGFzc29jaWF0ZWQgdG8gYW5vdGhlciBRV2ViSW5z
cGVjdG9yLCB0aGUgYXNzb2NpYXRpb24KKyAgICB3aWxsIGJlIHJlcGxhY2VkIGFuZCB0aGUgcHJl
dmlvdXMgUVdlYkluc3BlY3RvciB3aWxsIGhhdmUgbm8gcGFnZQorICAgIGFzc29jaWF0ZWQuCisK
KyAgICBcc2EgcGFnZSgpCisqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpzZXRQYWdlKFFXZWJQYWdl
KiBwYWdlKQoreworICAgIGlmIChkLT5wYWdlKSB7CisgICAgICAgIC8vIEJyZWFrIGN1cnJlbnRQ
YWdlLS0+dGhpcworICAgICAgICBkLT5wYWdlLT5kLT5zZXRJbnNwZWN0b3IoMCk7CisgICAgfQor
ICAgIGlmIChwYWdlICYmIHBhZ2UtPmQtPmluc3BlY3RvciAmJiBwYWdlLT5kLT5pbnNwZWN0b3Ig
IT0gdGhpcykgeworICAgICAgICAvLyBCcmVhayBuZXdQYWdlPC0+bmV3UGFnZUN1cnJlbnRJbnNw
ZWN0b3IKKyAgICAgICAgcGFnZS0+ZC0+aW5zcGVjdG9yLT5zZXRQYWdlKDApOworICAgIH0KKwor
ICAgIGQtPnBhZ2UgPSBwYWdlOworCisgICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgLy8gU2V0dXAg
dGhlIHJlY2lwcm9jYWwgYXNzb2NpYXRpb24KKyAgICAgICAgcGFnZS0+ZC0+c2V0SW5zcGVjdG9y
KHRoaXMpOworICAgIH0KK30KKworLyohCisgICAgUmV0dXJucyB0aGUgaW5zcGVjdGVkIFFXZWJQ
YWdlLgorICAgIElmIG5vIHdlYiBwYWdlIGlzIGN1cnJlbnRseSBhc3NvY2lhdGVkLCBhIG51bGwg
cG9pbnRlciBpcyByZXR1cm5lZC4KKyovCitRV2ViUGFnZSogUVdlYkluc3BlY3Rvcjo6cGFnZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPnBhZ2U7Cit9CisKKy8qISBccmVpbXAgKi8KK1FTaXpl
IFFXZWJJbnNwZWN0b3I6OnNpemVIaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUVNpemUoNDUw
LCAzMDApOworfQorCisvKiEgXHJlaW1wICovCitib29sIFFXZWJJbnNwZWN0b3I6OmV2ZW50KFFF
dmVudCogZXYpCit7CisgICAgcmV0dXJuIFFXaWRnZXQ6OmV2ZW50KGV2KTsKK30KKworLyohIFxy
ZWltcCAqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpyZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2
ZW50KQoreworICAgIGQtPmFkanVzdEZyb250ZW5kU2l6ZShldmVudC0+c2l6ZSgpKTsKK30KKwor
LyohIFxyZWltcCAqLwordm9pZCBRV2ViSW5zcGVjdG9yOjpzaG93RXZlbnQoUVNob3dFdmVudCog
ZXZlbnQpCit7CisgICAgLy8gQWxsb3dzIFFXZWJJbnNwZWN0b3I6OnNob3coKSB0byBpbml0IHRo
ZSBpbnNwZWN0b3IuCisgICAgaWYgKGQtPnBhZ2UpCisgICAgICAgIGQtPnBhZ2UtPmQtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworfQorCisvKiEgXHJlaW1wICovCit2b2lkIFFXZWJJ
bnNwZWN0b3I6OmhpZGVFdmVudChRSGlkZUV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZC0+cGFn
ZSkKKyAgICAgICAgZC0+cGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRXaW5kb3dW
aXNpYmxlKGZhbHNlKTsKK30KKworLyohIFxpbnRlcm5hbCAqLwordm9pZCBRV2ViSW5zcGVjdG9y
UHJpdmF0ZTo6c2V0RnJvbnRlbmQoUVdpZGdldCogbmV3RnJvbnRlbmQpCit7CisgICAgaWYgKGZy
b250ZW5kKQorICAgICAgICBmcm9udGVuZC0+c2V0UGFyZW50KDApOworCisgICAgZnJvbnRlbmQg
PSBuZXdGcm9udGVuZDsKKworICAgIGlmIChmcm9udGVuZCkgeworICAgICAgICBmcm9udGVuZC0+
c2V0UGFyZW50KHEpOworICAgICAgICBmcm9udGVuZC0+c2hvdygpOworICAgICAgICBhZGp1c3RG
cm9udGVuZFNpemUocS0+c2l6ZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgUVdlYkluc3BlY3RvclBy
aXZhdGU6OmFkanVzdEZyb250ZW5kU2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAo
ZnJvbnRlbmQpCisgICAgICAgIGZyb250ZW5kLT5yZXNpemUoc2l6ZSk7Cit9CisKKy8qIQorICAg
IFxmbiB2b2lkIFFXZWJJbnNwZWN0b3I6OndpbmRvd1RpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5n
JiBuZXdUaXRsZSk7CisKKyAgICBUaGlzIGlzIGVtaXR0ZWQgdG8gc2lnbmFsIHRoYXQgdGhpcyB3
aWRnZXQncyB0aXRsZSBjaGFuZ2VkIHRvIFxhIG5ld1RpdGxlLgorKi8KKwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmggYi9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNwZWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjViZDY0Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViaW5zcGVjdG9yLmgKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBRV0VCSU5TUEVDVE9SX0gKKyNkZWZpbmUg
UVdFQklOU1BFQ1RPUl9ICisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisjaW5jbHVkZSAi
cXdlYnBhZ2UuaCIKKworI2luY2x1ZGUgInF3ZWJ2aWV3LmgiCisKK2NsYXNzIFFXZWJJbnNwZWN0
b3JQcml2YXRlOworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRV2ViSW5zcGVjdG9yIDogcHVibGlj
IFFXaWRnZXQgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgUVdlYkluc3BlY3RvcihRV2lk
Z2V0KiBwYXJlbnQgPSAwKTsKKyAgICB+UVdlYkluc3BlY3RvcigpOworCisgICAgdm9pZCBzZXRQ
YWdlKFFXZWJQYWdlKiBwYWdlKTsKKyAgICBRV2ViUGFnZSogcGFnZSgpIGNvbnN0OworCisgICAg
UVNpemUgc2l6ZUhpbnQoKSBjb25zdDsKKyAgICBib29sIGV2ZW50KFFFdmVudCopOworCitRX1NJ
R05BTFM6CisgICAgdm9pZCB3aW5kb3dUaXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYgbmV3VGl0
bGUpOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2
ZW50KTsKKyAgICB2b2lkIHNob3dFdmVudChRU2hvd0V2ZW50KiBldmVudCk7CisgICAgdm9pZCBo
aWRlRXZlbnQoUUhpZGVFdmVudCogZXZlbnQpOworCitwcml2YXRlOgorICAgIFFXZWJJbnNwZWN0
b3JQcml2YXRlKiBkOworCisgICAgZnJpZW5kIGNsYXNzIFFXZWJJbnNwZWN0b3JQcml2YXRlOwor
ICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsKKyAgICBmcmllbmQgY2xhc3MgUVdlYlBhZ2VQcml2
YXRlOworICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDsKK307Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmluc3BlY3Rvcl9wLmggYi9XZWJL
aXQvcXQvQXBpL3F3ZWJpbnNwZWN0b3JfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmI3YWY0ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJpbnNw
ZWN0b3JfcC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNp
Zm5kZWYgUVdFQklOU1BFQ1RPUl9QX0gKKyNkZWZpbmUgUVdFQklOU1BFQ1RPUl9QX0gKKworY2xh
c3MgUVNpemU7CitjbGFzcyBRV2ViSW5zcGVjdG9yOworY2xhc3MgUVdlYlBhZ2U7CitjbGFzcyBR
V2lkZ2V0OworCitjbGFzcyBRV2ViSW5zcGVjdG9yUHJpdmF0ZSB7CitwdWJsaWM6CisgICAgUVdl
Ykluc3BlY3RvclByaXZhdGUoUVdlYkluc3BlY3RvciogcXEpCisgICAgOiBxKHFxKQorICAgICwg
cGFnZSgwKQorICAgICwgZnJvbnRlbmQoMCkKKyAgICB7fQorCisgICAgdm9pZCBzZXRGcm9udGVu
ZChRV2lkZ2V0KiBuZXdGcm9udGVuZCk7CisgICAgdm9pZCBhZGp1c3RGcm9udGVuZFNpemUoY29u
c3QgUVNpemUmIHNpemUpOworCisgICAgUVdlYkluc3BlY3RvciogcTsKKyAgICBRV2ViUGFnZSog
cGFnZTsKKyAgICBRV2lkZ2V0KiBmcm9udGVuZDsKK307CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApp
bmRleCAxNGJiOGQwLi5iZGM5ZTcwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAorKysgYi9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApAQCAtMjcsNiArMjcsOCBAQAog
I2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCiAjaW5jbHVkZSAicXdlYmhpc3RvcnkuaCIKICNpbmNs
dWRlICJxd2ViaGlzdG9yeV9wLmgiCisjaW5jbHVkZSAicXdlYmluc3BlY3Rvci5oIgorI2luY2x1
ZGUgInF3ZWJpbnNwZWN0b3JfcC5oIgogI2luY2x1ZGUgInF3ZWJzZXR0aW5ncy5oIgogI2luY2x1
ZGUgInF3ZWJraXR2ZXJzaW9uLmgiCiAKQEAgLTI5OSw2ICszMDEsOSBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplQXBwbGljYXRpb25DYWNoZVBhdGhJZk5lY2Vzc2FyeSgpCiBRV2ViUGFnZVByaXZh
dGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnZSAqcXEpCiAgICAgOiBxKHFxKQogICAgICwgdmll
dygwKQorICAgICwgaW5zcGVjdG9yRnJvbnRlbmQoMCkKKyAgICAsIGluc3BlY3RvcigwKQorICAg
ICwgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkoZmFsc2UpCiAgICAgLCB2aWV3cG9ydFNpemUoUVNp
emUoMCwgMCkpCiB7CiAgICAgV2ViQ29yZTo6SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVj
ZXNzYXJ5KCk7CkBAIC0xMTI1LDYgKzExMzAsNTQgQEAgUVZhcmlhbnQgUVdlYlBhZ2U6OmlucHV0
TWV0aG9kUXVlcnkoUXQ6OklucHV0TWV0aG9kUXVlcnkgcHJvcGVydHkpIGNvbnN0CiB9CiAKIC8q
IQorICAgIFxpbnRlcm5hbAorKi8KK3ZvaWQgUVdlYlBhZ2VQcml2YXRlOjpzZXRJbnNwZWN0b3Io
UVdlYkluc3BlY3RvciogaW5zcCkKK3sKKyAgICBpZiAoaW5zcGVjdG9yKQorICAgICAgICBpbnNw
ZWN0b3ItPmQtPnNldEZyb250ZW5kKDApOworCisgICAgaWYgKGluc3BlY3RvcklzSW50ZXJuYWxP
bmx5KSB7CisgICAgICAgIFFXZWJJbnNwZWN0b3IqIGluc3BUb0RlbGV0ZSA9IGluc3BlY3RvcjsK
KyAgICAgICAgaW5zcGVjdG9yID0gMDsKKyAgICAgICAgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHkg
PSBmYWxzZTsKKyAgICAgICAgZGVsZXRlIGluc3BUb0RlbGV0ZTsgICAgLy8gRGVsZXRlIGFmdGVy
IHRvIHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uCisgICAgfQorCisgICAgaW5zcGVjdG9yID0g
aW5zcDsKKworICAgIC8vIEdpdmUgaW5zcGVjdG9yIGZyb250ZW5kIHdlYiB2aWV3IGlmIHByZXZp
b3VzbHkgY3JlYXRlZAorICAgIGlmIChpbnNwZWN0b3IgJiYgaW5zcGVjdG9yRnJvbnRlbmQpCisg
ICAgICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoaW5zcGVjdG9yRnJvbnRlbmQpOworfQor
CisvKiEKKyAgICBcaW50ZXJuYWwKKyAgICBSZXR1cm5zIHRoZSBpbnNwZWN0b3IgYW5kIGNyZWF0
ZXMgaXQgaWYgaXQgd2Fzbid0IGNyZWF0ZWQgeWV0LgorICAgIFRoZSBpbnN0YW5jZSBjcmVhdGVk
IGhlcmUgd2lsbCBub3QgYmUgYXZhaWxhYmxlIHRocm91Z2ggUVdlYlBhZ2UncyBBUEkuCisqLwor
UVdlYkluc3BlY3RvciogUVdlYlBhZ2VQcml2YXRlOjpnZXRPckNyZWF0ZUluc3BlY3RvcigpCit7
CisgICAgaWYgKCFpbnNwZWN0b3IpIHsKKyAgICAgICAgUVdlYkluc3BlY3RvciogaW5zcCA9IG5l
dyBRV2ViSW5zcGVjdG9yOworICAgICAgICBpbnNwLT5zZXRQYWdlKHEpOworICAgICAgICBpbnNw
LT5jb25uZWN0KHEsIFNJR05BTCh3ZWJJbnNwZWN0b3JUcmlnZ2VyZWQoY29uc3QgUVdlYkVsZW1l
bnQmKSksIFNMT1Qoc2hvdygpKSk7CisgICAgICAgIGluc3AtPnNob3coKTsgLy8gVGhlIGluc3Bl
Y3RvciBpcyBleHBlY3RlZCB0byBiZSBzaG93biBvbiBpbnNwZWN0aW9uCisgICAgICAgIGluc3Bl
Y3RvcklzSW50ZXJuYWxPbmx5ID0gdHJ1ZTsKKworICAgICAgICBRX0FTU0VSVChpbnNwZWN0b3Ip
OyAvLyBBc3NvY2lhdGVkIHRocm91Z2ggUVdlYkluc3BlY3Rvcjo6c2V0UGFnZShxKQorICAgIH0K
KyAgICByZXR1cm4gaW5zcGVjdG9yOworfQorCisvKiEgXGludGVybmFsICovCitJbnNwZWN0b3JD
b250cm9sbGVyKiBRV2ViUGFnZVByaXZhdGU6Omluc3BlY3RvckNvbnRyb2xsZXIoKQoreworICAg
IHJldHVybiBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7Cit9CisKKworLyohCiAgICBcZW51
bSBRV2ViUGFnZTo6RmluZEZsYWcKIAogICAgVGhpcyBlbnVtIGRlc2NyaWJlcyB0aGUgb3B0aW9u
cyBhdmFpbGFibGUgdG8gUVdlYlBhZ2UncyBmaW5kVGV4dCgpIGZ1bmN0aW9uLiBUaGUgb3B0aW9u
cwpAQCAtMTMzNCw2ICsxMzg3LDggQEAgUVdlYlBhZ2U6On5RV2ViUGFnZSgpCiAgICAgRnJhbWVM
b2FkZXIgKmxvYWRlciA9IGQtPm1haW5GcmFtZS0+ZC0+ZnJhbWUtPmxvYWRlcigpOwogICAgIGlm
IChsb2FkZXIpCiAgICAgICAgIGxvYWRlci0+ZGV0YWNoRnJvbVBhcmVudCgpOworICAgIGlmIChk
LT5pbnNwZWN0b3IpCisgICAgICAgIGQtPmluc3BlY3Rvci0+c2V0UGFnZSgwKTsKICAgICBkZWxl
dGUgZDsKIH0KIApAQCAtMTYyOSwxMiArMTY4NCwxNiBAQCB2b2lkIFFXZWJQYWdlOjp0cmlnZ2Vy
QWN0aW9uKFdlYkFjdGlvbiBhY3Rpb24sIGJvb2wgY2hlY2tlZCkKICAgICAgICAgY2FzZSBTZXRU
ZXh0RGlyZWN0aW9uUmlnaHRUb0xlZnQ6CiAgICAgICAgICAgICBlZGl0b3ItPnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbik7CiAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBJbnNwZWN0RWxlbWVudDoKLSAgICAgICAgICAgIGlmICghZC0+
aGl0VGVzdFJlc3VsdC5pc051bGwoKSkKKyAgICAgICAgY2FzZSBJbnNwZWN0RWxlbWVudDogewor
ICAgICAgICAgICAgUVdlYkVsZW1lbnQgaW5zcGVjdGVkRWxlbWVudChRV2ViRWxlbWVudDo6ZW5j
bG9zaW5nRWxlbWVudChkLT5oaXRUZXN0UmVzdWx0LmQtPmlubmVyTm9uU2hhcmVkTm9kZS5nZXQo
KSkpOworICAgICAgICAgICAgZW1pdCB3ZWJJbnNwZWN0b3JUcmlnZ2VyZWQoaW5zcGVjdGVkRWxl
bWVudCk7CisKKyAgICAgICAgICAgIGlmICghZC0+aGl0VGVzdFJlc3VsdC5pc051bGwoKSkgewor
ICAgICAgICAgICAgICAgIGQtPmdldE9yQ3JlYXRlSW5zcGVjdG9yKCk7IC8vIE1ha2Ugc3VyZSB0
aGUgaW5zcGVjdG9yIGlzIGNyZWF0ZWQKICAgICAgICAgICAgICAgICBkLT5wYWdlLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPmluc3BlY3QoZC0+aGl0VGVzdFJlc3VsdC5kLT5pbm5lck5vblNoYXJl
ZE5vZGUuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGQtPnBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2hvdygpOworICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbW1h
bmQgPSBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckNvbW1hbmRGb3JXZWJBY3Rpb25zKGFjdGlvbik7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI5NDYsNiArMzAwNSwyNCBAQCBxdWludDY0IFFXZWJQ
YWdlOjpieXRlc1JlY2VpdmVkKCkgY29uc3QKICovCiAKIC8qIQorICAgIFxmbiB2b2lkIFFXZWJQ
YWdlOjp3ZWJJbnNwZWN0b3JUcmlnZ2VyZWQoY29uc3QgUVdlYkVsZW1lbnQmIGluc3BlY3RlZEVs
ZW1lbnQpOworICAgIFxzaW5jZSA0LjYKKworICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hl
biB0aGUgdXNlciB0cmlnZ2VyZWQgYW4gaW5zcGVjdGlvbiB0aHJvdWdoIHRoZQorICAgIGNvbnRl
eHQgbWVudS4gSWYgYSBRV2ViSW5zcGVjdG9yIGlzIGFzc29jaWF0ZWQgdG8gdGhpcyBwYWdlLCBp
dCBzaG91bGQgYmUKKyAgICB2aXNpYmxlIHRvIHRoZSB1c2VyIGFmdGVyIHRoaXMgc2lnbmFsIGhh
cyBiZWVuIGVtaXR0ZWQuCisKKyAgICBJZiBzdGlsbCBubyBRV2ViSW5zcGVjdG9yIGlzIGFzc29j
aWF0ZWQgdG8gdGhpcyBRV2ViUGFnZSBhZnRlciB0aGUgZW1pc3Npb24KKyAgICBvZiB0aGlzIHNp
Z25hbCwgYSBwcml2YXRlbHkgb3duZWQgaW5zcGVjdG9yIHdpbGwgYmUgc2hvd24gdG8gdGhlIHVz
ZXIuCisKKyAgICBcbm90ZSBcYSBpbnNwZWN0ZWRFbGVtZW50IGNvbnRhaW5zIHRoZSBRV2ViRWxl
bWVudCB1bmRlciB0aGUgY29udGV4dCBtZW51LgorICAgIEl0IGlzIG5vdCBnYXJhbnRlZWQgdG8g
YmUgdGhlIHNhbWUgYXMgdGhlIGZvY3VzZWQgZWxlbWVudCBpbiB0aGUgd2ViCisgICAgaW5zcGVj
dG9yLgorCisgICAgXHNhIFFXZWJJbnNwZWN0b3IKKyovCisKKy8qIQogICAgIFxmbiB2b2lkIFFX
ZWJQYWdlOjp0b29sQmFyVmlzaWJpbGl0eUNoYW5nZVJlcXVlc3RlZChib29sIHZpc2libGUpCiAK
ICAgICBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW5ldmVyIHRoZSB2aXNpYmlsaXR5IG9mIHRo
ZSB0b29sYmFyIGluIGEgd2ViIGJyb3dzZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuaCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAppbmRleCAyNDc0MWExLi5lMGRjNDY3
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKKysrIGIvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIFFOZXR3b3JrUmVwbHk7CiBjbGFz
cyBRTmV0d29ya0FjY2Vzc01hbmFnZXI7CiBRVF9FTkRfTkFNRVNQQUNFCiAKK2NsYXNzIFFXZWJF
bGVtZW50OwogY2xhc3MgUVdlYkZyYW1lOwogY2xhc3MgUVdlYk5ldHdvcmtSZXF1ZXN0OwogY2xh
c3MgUVdlYkhpc3Rvcnk7CkBAIC0zMDYsNiArMzA3LDcgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQg
d2luZG93Q2xvc2VSZXF1ZXN0ZWQoKTsKICAgICB2b2lkIHByaW50UmVxdWVzdGVkKFFXZWJGcmFt
ZSAqZnJhbWUpOwogICAgIHZvaWQgbGlua0NsaWNrZWQoY29uc3QgUVVybCAmdXJsKTsKKyAgICB2
b2lkIHdlYkluc3BlY3RvclRyaWdnZXJlZChjb25zdCBRV2ViRWxlbWVudCYgaW5zcGVjdGVkRWxl
bWVudCk7CiAKICAgICB2b2lkIHRvb2xCYXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVzdGVkKGJvb2wg
dmlzaWJsZSk7CiAgICAgdm9pZCBzdGF0dXNCYXJWaXNpYmlsaXR5Q2hhbmdlUmVxdWVzdGVkKGJv
b2wgdmlzaWJsZSk7CkBAIC0zNTEsNiArMzUzLDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgUVdlYkZyYW1lOwogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZVByaXZhdGU7CiAgICAgZnJp
ZW5kIGNsYXNzIFFXZWJWaWV3OworICAgIGZyaWVuZCBjbGFzcyBRV2ViSW5zcGVjdG9yOwogICAg
IGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpDaHJvbWVDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3Mg
V2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaCBi
L1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCmluZGV4IDg3YzYyNGQuLjBiMWQ3MjggMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2VfcC5oCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBDb250ZXh0TWVudTsKICAgICBjbGFzcyBFZGl0b3JDbGllbnRRdDsKICAgICBjbGFzcyBFbGVt
ZW50OworICAgIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgY2xhc3MgTm9kZTsKICAg
ICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIEZyYW1lOwpAQCAtNjUsNiArNjYsOCBAQCBjbGFzcyBR
TWVudTsKIGNsYXNzIFFCaXRBcnJheTsKIFFUX0VORF9OQU1FU1BBQ0UKIAorY2xhc3MgUVdlYklu
c3BlY3RvcjsKKwogY2xhc3MgUVdlYlBhZ2VQcml2YXRlIHsKIHB1YmxpYzoKICAgICBRV2ViUGFn
ZVByaXZhdGUoUVdlYlBhZ2UqKTsKQEAgLTExMSw2ICsxMTQsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgbGVhdmVFdmVudChRRXZlbnQgKik7CiAgICAgYm9vbCBoYW5kbGVTY3JvbGxpbmcoUUtleUV2
ZW50KiwgV2ViQ29yZTo6RnJhbWUqKTsKIAorICAgIHZvaWQgc2V0SW5zcGVjdG9yKFFXZWJJbnNw
ZWN0b3IqKTsKKyAgICBRV2ViSW5zcGVjdG9yKiBnZXRPckNyZWF0ZUluc3BlY3RvcigpOworICAg
IFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKTsKKwog
I2lmbmRlZiBRVF9OT19TSE9SVENVVAogICAgIHN0YXRpYyBRV2ViUGFnZTo6V2ViQWN0aW9uIGVk
aXRvckFjdGlvbkZvcktleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpOwogI2VuZGlmCkBAIC0xNjgs
NiArMTc1LDEwIEBAIHB1YmxpYzoKIAogICAgIFFXZWJQbHVnaW5GYWN0b3J5ICpwbHVnaW5GYWN0
b3J5OwogCisgICAgUVdpZGdldCogaW5zcGVjdG9yRnJvbnRlbmQ7CisgICAgUVdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yOworICAgIGJvb2wgaW5zcGVjdG9ySXNJbnRlcm5hbE9ubHk7IC8vIFRydWUg
aWYgY3JlYXRlZCB0aHJvdWdoIHRoZSBJbnNwZWN0IGNvbnRleHQgbWVudSBhY3Rpb24KKwogICAg
IHN0YXRpYyBib29sIGRydFJ1bjsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAppbmRleCAxNTcx
NDcwLi40OTQ1N2E3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAK
KysrIGIvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCkBAIC0zMjEsOCArMzIxLDkgQEAg
UVdlYlNldHRpbmdzKiBRV2ViU2V0dGluZ3M6Omdsb2JhbFNldHRpbmdzKCkKICAgICBcdmFsdWUg
SmF2YXNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCBTcGVjaWZpZXMgd2hldGhlciBKYXZhU2NyaXB0
IHByb2dyYW1zCiAgICAgICAgIGNhbiByZWFkIG9yIHdyaXRlIHRvIHRoZSBjbGlwYm9hcmQuCiAg
ICAgXHZhbHVlIERldmVsb3BlckV4dHJhc0VuYWJsZWQgRW5hYmxlcyBleHRyYSB0b29scyBmb3Ig
V2ViIGRldmVsb3BlcnMuCi0gICAgICAgIEN1cnJlbnRseSB0aGlzIGVuYWJsZXMgdGhlICJJbnNw
ZWN0IiBlbGVtZW50IGluIHRoZSBjb250ZXh0IG1lbnUsCi0gICAgd2hpY2ggc2hvd3MgdGhlIFdl
YktpdCBXZWJJbnNwZWN0b3IgZm9yIHdlYiBzaXRlIGRlYnVnZ2luZy4KKyAgICAgICAgQ3VycmVu
dGx5IHRoaXMgZW5hYmxlcyB0aGUgIkluc3BlY3QiIGVsZW1lbnQgaW4gdGhlIGNvbnRleHQgbWVu
dSBhcworICAgICAgICB3ZWxsIGFzIHRoZSB1c2Ugb2YgUVdlYkluc3BlY3RvciB3aGljaCBjb250
cm9scyB0aGUgV2ViS2l0IFdlYkluc3BlY3RvcgorICAgICAgICBmb3Igd2ViIHNpdGUgZGVidWdn
aW5nLgogICAgIFx2YWx1ZSBMaW5rc0luY2x1ZGVkSW5Gb2N1c0NoYWluIFNwZWNpZmllcyB3aGV0
aGVyIGh5cGVybGlua3Mgc2hvdWxkIGJlCiAgICAgICAgIGluY2x1ZGVkIGluIHRoZSBrZXlib2Fy
ZCBmb2N1cyBjaGFpbi4KICAgICBcdmFsdWUgWm9vbVRleHRPbmx5IFNwZWNpZmllcyB3aGV0aGVy
IHRoZSB6b29tIGZhY3RvciBvbiBhIGZyYW1lIGFwcGxpZXMgdG8KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGMxZGE2MzIuLjc2YjA5
NzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDA5LTA5LTEwICBKb2NlbHluIFR1cmNvdHRlICA8am9j
ZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBNYWtlIHRoZSBXZWJJbnNwZWN0b3IgYXZhaWxhYmxlIGFz
IGEgUVdpZGdldC4KKworICAgICAgICAqIEFwaS9oZWFkZXJzLnByaToKKyAgICAgICAgKiBBcGkv
cXdlYmVsZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OmVuY2xvc2luZ0VsZW1lbnQp
OgorICAgICAgICAqIEFwaS9xd2ViZWxlbWVudC5oOgorICAgICAgICAqIEFwaS9xd2ViaW5zcGVj
dG9yLmNwcDogQWRkZWQuCisgICAgICAgICogQXBpL3F3ZWJpbnNwZWN0b3IuaDogQWRkZWQuCisg
ICAgICAgICogQXBpL3F3ZWJpbnNwZWN0b3JfcC5oOiBBZGRlZC4KKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgor
ICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpzZXRJbnNwZWN0b3IpOgorICAgICAgICAoUVdlYlBh
Z2VQcml2YXRlOjpnZXRPckNyZWF0ZUluc3BlY3Rvcik6CisgICAgICAgIChRV2ViUGFnZVByaXZh
dGU6Omluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoUVdlYlBhZ2U6On5RV2ViUGFnZSk6
CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbik6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlLmg6CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBBcGkvcXdlYnNl
dHRpbmdzLmNwcDoKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAoTWFp
bldpbmRvdzo6TWFpbldpbmRvdyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50V2ViUGFnZTo6
SW5zcGVjdG9yQ2xpZW50V2ViUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRXZWJQYWdlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50UXQ6OmNyZWF0ZVBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6
OnNob3dXaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmNsb3Nl
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjphdHRhY2hXaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmRldGFjaFdpbmRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6dXBkYXRlV2luZG93VGl0bGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisgICAgICAg
ICogZG9jcy93ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2ViaW5zcGVjdG9yX3NuaXBwZXQuY3Bw
OiBBZGRlZC4KKwogMjAwOS0wOS0wNSAgSmFrdWIgV2llY3pvcmVrICA8ZmF3MjE3QGdtYWlsLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9RdExhdW5jaGVyL21haW4uY3BwIGIvV2ViS2l0L3F0L1F0TGF1bmNoZXIvbWFpbi5jcHAK
aW5kZXggMzc5MDlhZi4uZTU3ZTM2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1F0TGF1bmNoZXIv
bWFpbi5jcHAKKysrIGIvV2ViS2l0L3F0L1F0TGF1bmNoZXIvbWFpbi5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlIDxxd2ViZnJhbWUuaD4KICNpbmNsdWRlIDxxd2Vic2V0dGluZ3MuaD4K
ICNpbmNsdWRlIDxxd2ViZWxlbWVudC5oPgorI2luY2x1ZGUgPHF3ZWJpbnNwZWN0b3IuaD4KIAog
I2luY2x1ZGUgPFF0R3VpPgogI2luY2x1ZGUgPFFEZWJ1Zz4KQEAgLTcxLDEyICs3MiwxMiBAQCBw
dWJsaWM6CiAgICAgTWFpbldpbmRvdyhRU3RyaW5nIHVybCA9IFFTdHJpbmcoKSk6IGN1cnJlbnRa
b29tKDEwMCkgewogICAgICAgICBzZXRBdHRyaWJ1dGUoUXQ6OldBX0RlbGV0ZU9uQ2xvc2UpOwog
Ci0gICAgICAgIHZpZXcgPSBuZXcgUVdlYlZpZXcodGhpcyk7Ci0gICAgICAgIHNldENlbnRyYWxX
aWRnZXQodmlldyk7CisgICAgICAgIFFTcGxpdHRlciogc3BsaXR0ZXIgPSBuZXcgUVNwbGl0dGVy
KFF0OjpWZXJ0aWNhbCwgdGhpcyk7CisgICAgICAgIHNldENlbnRyYWxXaWRnZXQoc3BsaXR0ZXIp
OwogCisgICAgICAgIHZpZXcgPSBuZXcgUVdlYlZpZXcoc3BsaXR0ZXIpOwogICAgICAgICBXZWJQ
YWdlKiBwYWdlID0gbmV3IFdlYlBhZ2Uodmlldyk7CiAgICAgICAgIHZpZXctPnNldFBhZ2UocGFn
ZSk7Ci0gICAgICAgIAogICAgICAgICBjb25uZWN0KHZpZXcsIFNJR05BTChsb2FkRmluaXNoZWQo
Ym9vbCkpLAogICAgICAgICAgICAgICAgIHRoaXMsIFNMT1QobG9hZEZpbmlzaGVkKCkpKTsKICAg
ICAgICAgY29ubmVjdCh2aWV3LCBTSUdOQUwodGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcmKSks
CkBAIC04NSw2ICs4NiwxMiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgdGhpcywgU0xPVChz
aG93TGlua0hvdmVyKGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJikpKTsKICAgICAgICAg
Y29ubmVjdCh2aWV3LT5wYWdlKCksIFNJR05BTCh3aW5kb3dDbG9zZVJlcXVlc3RlZCgpKSwgdGhp
cywgU0xPVChjbG9zZSgpKSk7CiAKKyAgICAgICAgaW5zcGVjdG9yID0gbmV3IFFXZWJJbnNwZWN0
b3Ioc3BsaXR0ZXIpOworICAgICAgICBpbnNwZWN0b3ItPnNldFBhZ2UocGFnZSk7CisgICAgICAg
IGluc3BlY3Rvci0+aGlkZSgpOworICAgICAgICBjb25uZWN0KHRoaXMsIFNJR05BTChkZXN0cm95
ZWQoKSksIGluc3BlY3RvciwgU0xPVChkZWxldGVMYXRlcigpKSk7CisgICAgICAgIGNvbm5lY3Qo
cGFnZSwgU0lHTkFMKHdlYkluc3BlY3RvclRyaWdnZXJlZChjb25zdCBRV2ViRWxlbWVudCYpKSwg
aW5zcGVjdG9yLCBTTE9UKHNob3coKSkpOworCiAgICAgICAgIHNldHVwVUkoKTsKIAogICAgICAg
ICAvLyBzZXQgdGhlIHByb3h5IHRvIHRoZSBodHRwX3Byb3h5IGVudiB2YXJpYWJsZSAtIGlmIHBy
ZXNlbnQgICAgICAgIApAQCAtMzIyLDYgKzMyOSw3IEBAIHByaXZhdGU6CiAgICAgUVdlYlZpZXcg
KnZpZXc7CiAgICAgUUxpbmVFZGl0ICp1cmxFZGl0OwogICAgIFFQcm9ncmVzc0JhciAqcHJvZ3Jl
c3M7CisgICAgUVdlYkluc3BlY3RvciogaW5zcGVjdG9yOwogCiAgICAgUUFjdGlvbiAqZm9ybWF0
TWVudUFjdGlvbjsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5jcHAKaW5kZXggNTZmNjEwMS4uY2UwOGQ0MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50UXQuaCIKIAorI2luY2x1ZGUg
InF3ZWJpbnNwZWN0b3IuaCIKKyNpbmNsdWRlICJxd2ViaW5zcGVjdG9yX3AuaCIKICNpbmNsdWRl
ICJxd2VicGFnZS5oIgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJxd2Vidmll
dy5oIgpAQCAtNDQsNDggKzQ2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SW5zcGVjdG9yQ2xpZW50V2ViUGFnZSA6IHB1YmxpYyBRV2ViUGFnZQoteworY2xhc3MgSW5zcGVj
dG9yQ2xpZW50V2ViUGFnZSA6IHB1YmxpYyBRV2ViUGFnZSB7CiAgICAgUV9PQkpFQ1QKICAgICBm
cmllbmQgY2xhc3MgSW5zcGVjdG9yQ2xpZW50UXQ7CiBwdWJsaWM6Ci0gICAgUVdlYlBhZ2UqIGNy
ZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViV2luZG93VHlwZSkKKyAgICBJbnNwZWN0b3JDbGllbnRX
ZWJQYWdlKFFPYmplY3QqIHBhcmVudCA9IDApCisgICAgOiBRV2ViUGFnZShwYXJlbnQpCiAgICAg
ewotICAgICAgICBRV2lkZ2V0ICp3ID0gbmV3IFFXZWJWaWV3KDApOwotICAgICAgICBRV2ViUGFn
ZSAqcGFnZSA9IG5ldyBRV2ViUGFnZSh3KTsKLSAgICAgICAgcGFnZS0+c2V0Vmlldyh3KTsKLSAg
ICAgICAgY29ubmVjdChwYWdlLCBTSUdOQUwoZGVzdHJveWVkKCkpLCB3LCBTTE9UKGRlbGV0ZUxh
dGVyKCkpKTsKLSAgICAgICAgcmV0dXJuIHBhZ2U7CisgICAgICAgIHNldHRpbmdzKCktPnNldEF0
dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkRldmVsb3BlckV4dHJhc0VuYWJsZWQsIGZhbHNlKTsKICAg
ICB9CiAKLVFfU0lHTkFMUzoKLSAgICB2b2lkIGF0dGFjaFJlcXVlc3RlZCgpOwotICAgIHZvaWQg
ZGV0YWNoUmVxdWVzdGVkKCk7Ci19OwotCi0KLWNsYXNzIEluc3BlY3RvckNsaWVudFZpZXcgOiBw
dWJsaWMgUVdlYlZpZXcgewotCi1wdWJsaWM6Ci0gICAgSW5zcGVjdG9yQ2xpZW50VmlldyhJbnNw
ZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQotICAgICAgICA6IFFXZWJWaWV3KDApCi0gICAg
ICAgICwgbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCi0gICAgewotICAgICAgICBzZXRBdHRyaWJ1
dGUoUXQ6OldBX0RlbGV0ZU9uQ2xvc2UsIHRydWUpOwotICAgICAgICBzZXRQYWdlKG5ldyBJbnNw
ZWN0b3JDbGllbnRXZWJQYWdlKTsKLSAgICAgICAgY29ubmVjdChwYWdlKCksIFNJR05BTChkZXN0
cm95ZWQoKSksIHRoaXMsIFNMT1QoY2xvc2UoKSkpOwotICAgIH0KLQotcHJvdGVjdGVkOgotCi0g
ICAgdm9pZCBjbG9zZUV2ZW50KFFDbG9zZUV2ZW50KiBldikKKyAgICBRV2ViUGFnZSogY3JlYXRl
V2luZG93KFFXZWJQYWdlOjpXZWJXaW5kb3dUeXBlKQogICAgIHsKLSAgICAgICAgUVdpZGdldDo6
Y2xvc2VFdmVudChldik7Ci0gICAgICAgIG1fY29udHJvbGxlci0+c2V0V2luZG93VmlzaWJsZShm
YWxzZSk7CisgICAgICAgIFFXZWJWaWV3KiB2aWV3ID0gbmV3IFFXZWJWaWV3OworICAgICAgICBR
V2ViUGFnZSogcGFnZSA9IG5ldyBRV2ViUGFnZTsKKyAgICAgICAgdmlldy0+c2V0UGFnZShwYWdl
KTsKKyAgICAgICAgdmlldy0+c2V0QXR0cmlidXRlKFF0OjpXQV9EZWxldGVPbkNsb3NlKTsKKyAg
ICAgICAgcmV0dXJuIHBhZ2U7CiAgICAgfQotCi1wcml2YXRlOgotICAgIEluc3BlY3RvckNvbnRy
b2xsZXIqIG1fY29udHJvbGxlcjsKIH07CiAKIApAQCAtMTAwLDE0ICs3OCwxOSBAQCB2b2lkIElu
c3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogCiBQYWdlKiBJbnNwZWN0b3JD
bGllbnRRdDo6Y3JlYXRlUGFnZSgpCiB7Ci0gICAgaWYgKG1fd2ViUGFnZSkKLSAgICAgICAgcmV0
dXJuIG1fd2ViUGFnZS0+ZC0+cGFnZTsKKyAgICBpZiAobV9pbnNwZWN0b3JWaWV3KQorICAgICAg
ICByZXR1cm4gbV9pbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2U7CiAKLSAgICBJbnNwZWN0
b3JDbGllbnRWaWV3KiB2aWV3ID0gbmV3IEluc3BlY3RvckNsaWVudFZpZXcobV9pbnNwZWN0ZWRX
ZWJQYWdlLT5kLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpOwotICAgIG1fd2ViUGFnZS5z
ZXQocW9iamVjdF9jYXN0PEluc3BlY3RvckNsaWVudFdlYlBhZ2UqPih2aWV3LT5wYWdlKCkpKTsK
LSAgICBtX3dlYlBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkKFFTdHJpbmc6OmZyb21MYXRpbjEoInFy
Yzovd2Via2l0L2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbCIpKTsKLSAgICBtX3dlYlBhZ2UtPnZp
ZXcoKS0+c2V0TWluaW11bVNpemUoNDAwLDMwMCk7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+ZC0+
cGFnZTsKKyAgICBRV2ViVmlldyogaW5zcGVjdG9yVmlldyA9IG5ldyBRV2ViVmlldzsKKyAgICBJ
bnNwZWN0b3JDbGllbnRXZWJQYWdlKiBpbnNwZWN0b3JQYWdlID0gbmV3IEluc3BlY3RvckNsaWVu
dFdlYlBhZ2UoaW5zcGVjdG9yVmlldyk7CisgICAgaW5zcGVjdG9yVmlldy0+c2V0UGFnZShpbnNw
ZWN0b3JQYWdlKTsKKyAgICBtX2luc3BlY3RvclZpZXcuc2V0KGluc3BlY3RvclZpZXcpOworCisg
ICAgaW5zcGVjdG9yUGFnZS0+bWFpbkZyYW1lKCktPmxvYWQoUVN0cmluZzo6ZnJvbUxhdGluMSgi
cXJjOi93ZWJraXQvaW5zcGVjdG9yL2luc3BlY3Rvci5odG1sIikpOworICAgIG1faW5zcGVjdGVk
V2ViUGFnZS0+ZC0+aW5zcGVjdG9yRnJvbnRlbmQgPSBpbnNwZWN0b3JWaWV3OworICAgIG1faW5z
cGVjdGVkV2ViUGFnZS0+ZC0+Z2V0T3JDcmVhdGVJbnNwZWN0b3IoKS0+ZC0+c2V0RnJvbnRlbmQo
aW5zcGVjdG9yVmlldyk7CisKKyAgICByZXR1cm4gbV9pbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQt
PnBhZ2U7CiB9CiAKIFN0cmluZyBJbnNwZWN0b3JDbGllbnRRdDo6bG9jYWxpemVkU3RyaW5nc1VS
TCgpCkBAIC0xMjQsNDQgKzEwNywyOSBAQCBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50UXQ6OmhpZGRl
blBhbmVscygpCiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnNob3dXaW5kb3coKQogewotICAg
IGlmICghbV93ZWJQYWdlKQotICAgICAgICByZXR1cm47Ci0KICAgICB1cGRhdGVXaW5kb3dUaXRs
ZSgpOwotICAgIG1fd2ViUGFnZS0+dmlldygpLT5zaG93KCk7Ci0gICAgbV9pbnNwZWN0ZWRXZWJQ
YWdlLT5kLT5wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdpbmRvd1Zpc2libGUodHJ1
ZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmNsb3NlV2luZG93KCkKLXsKLSAgICBp
ZiAoIW1fd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdlLT52aWV3KCkt
PmhpZGUoKTsKLSAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2V0V2luZG93VmlzaWJsZShmYWxzZSk7CisgICAgbV9pbnNwZWN0ZWRXZWJQYWdl
LT5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldFdpbmRvd1Zpc2libGUodHJ1ZSwgdHJ1ZSk7
CisgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGluc3BlY3RvciB0byBhc2sgZm9yIHdpZGdldCB2
aXNpYmlsaXR5IGl0c2VsZiBiZWNhdXNlIHNob3dXaW5kb3cgaXMKKyAgICAvLyBub3QgYWx3YXlz
IGNhbGxlZCB3aGVuIHdlIHdhbnQuCisgICAgLy8gSW5zcGVjdGluZyBhbiBlbGVtZW50IG9yIGNh
bGxpbmcgUVdlYkluc3BlY3Rvcjo6c2hvdygpIHNob3VsZCBhbHJlYWR5IGhhdmUgbWFkZSB0aGUK
KyAgICAvLyB3aWRnZXQgdmlzaWJsZS4KIH0KIAotYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6d2lu
ZG93VmlzaWJsZSgpCit2b2lkIEluc3BlY3RvckNsaWVudFF0OjpjbG9zZVdpbmRvdygpCiB7Ci0g
ICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV93
ZWJQYWdlLT52aWV3KCktPmlzVmlzaWJsZSgpOworICAgIGlmIChtX2luc3BlY3RlZFdlYlBhZ2Ut
PmQtPmluc3BlY3RvcikKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3It
PmNsb3NlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmF0dGFjaFdpbmRvdygpCiB7
Ci0gICAgaWYgKCFtX3dlYlBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVtaXQgbV93ZWJQ
YWdlLT5hdHRhY2hSZXF1ZXN0ZWQoKTsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lk
IEluc3BlY3RvckNsaWVudFF0OjpkZXRhY2hXaW5kb3coKQogewotICAgIGlmICghbV93ZWJQYWdl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBlbWl0IG1fd2ViUGFnZS0+ZGV0YWNoUmVxdWVzdGVk
KCk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6
c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQpAQCAtMTkyLDExICsxNjAs
MTEgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yV2luZG93T2JqZWN0Q2xlYXJl
ZCgpCiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkKIHsKLSAg
ICBpZiAoIW1fd2ViUGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUVN0cmluZyBjYXB0aW9u
ID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRV2ViUGFnZSIsICJXZWIgSW5zcGVjdG9y
IC0gJTIiKTsKLSAgICBtX3dlYlBhZ2UtPnZpZXcoKS0+c2V0V2luZG93VGl0bGUoY2FwdGlvbi5h
cmcobV9pbnNwZWN0ZWRVUkwpKTsKKyAgICBpZiAobV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNw
ZWN0b3IpIHsKKyAgICAgICAgUVN0cmluZyBjYXB0aW9uID0gUUNvcmVBcHBsaWNhdGlvbjo6dHJh
bnNsYXRlKCJRV2ViUGFnZSIsICJXZWIgSW5zcGVjdG9yIC0gJTIiKS5hcmcobV9pbnNwZWN0ZWRV
UkwpOworICAgICAgICBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmluc3BlY3Rvci0+c2V0V2luZG93
VGl0bGUoY2FwdGlvbik7CisgICAgICAgIGVtaXQgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNw
ZWN0b3ItPndpbmRvd1RpdGxlQ2hhbmdlZChjYXB0aW9uKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ2xpZW50UXQ6OnBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgSW5zcGVj
dG9yQ29udHJvbGxlcjo6U2V0dGluZyYgc2V0dGluZykKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmgKaW5kZXggMDNjNjg0YS4uY2NmOGI2OSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTM1LDEyICszNSwx
MiBAQAogI2luY2x1ZGUgPFF0Q29yZS9RU3RyaW5nPgogCiBjbGFzcyBRV2ViUGFnZTsKK2NsYXNz
IFFXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsKICAgICBj
bGFzcyBQYWdlOwogICAgIGNsYXNzIFN0cmluZzsKLSAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnRX
ZWJQYWdlOwogCiAgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50UXQgOiBwdWJsaWMgSW5zcGVjdG9y
Q2xpZW50IHsKICAgICBwdWJsaWM6CkBAIC01Niw3ICs1Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2hvd1dpbmRvdygpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VXaW5kb3coKTsKLSAgICAgICAgdmlydHVhbCBib29sIHdpbmRvd1Zpc2libGUo
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KCk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKQEAgLTc2LDcgKzc1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgdXBkYXRlV2luZG93VGl0bGUoKTsKICAg
ICAgICAgUVdlYlBhZ2UqIG1faW5zcGVjdGVkV2ViUGFnZTsKLSAgICAgICAgT3duUHRyPEluc3Bl
Y3RvckNsaWVudFdlYlBhZ2U+IG1fd2ViUGFnZTsKKyAgICAgICAgT3duUHRyPFFXZWJWaWV3PiBt
X2luc3BlY3RvclZpZXc7CiAgICAgICAgIFFTdHJpbmcgbV9pbnNwZWN0ZWRVUkw7CiAgICAgfTsK
IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9kb2NzL3dlYmtpdHNuaXBwZXRzL3F0d2Via2l0X3F3
ZWJpbnNwZWN0b3Jfc25pcHBldC5jcHAgYi9XZWJLaXQvcXQvZG9jcy93ZWJraXRzbmlwcGV0cy9x
dHdlYmtpdF9xd2ViaW5zcGVjdG9yX3NuaXBwZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjBiYTFjYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvcXQvZG9jcy93
ZWJraXRzbmlwcGV0cy9xdHdlYmtpdF9xd2ViaW5zcGVjdG9yX3NuaXBwZXQuY3BwCkBAIC0wLDAg
KzEsMTcgQEAKKwordm9pZCB3cmFwSW5GdW5jdGlvbigpCit7CisKKy8vISBbMF0KKyAgICAvLyAu
Li4KKyAgICBRV2ViUGFnZSAqcGFnZSA9IG5ldyBRV2ViUGFnZTsKKyAgICAvLyAuLi4KKworICAg
IFFXZWJJbnNwZWN0b3IgKmluc3BlY3RvciA9IG5ldyBRV2ViSW5zcGVjdG9yOworICAgIGluc3Bl
Y3Rvci0+c2V0UGFnZShwYWdlKTsKKworICAgIGNvbm5lY3QocGFnZSwgU0lHTkFMKHdlYkluc3Bl
Y3RvclRyaWdnZXJlZChjb25zdCBRV2ViRWxlbWVudCYpKSwgaW5zcGVjdG9yLCBTTE9UKHNob3co
KSkpOworLy8hIFswXQorCit9CisK
</data>
<flag name="review"
          id="20433"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>