<?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>11617</bug_id>
          
          <creation_ts>2006-11-16 08:47:21 -0800</creation_ts>
          <short_desc>Compile and work on Qt/KDE platforms</short_desc>
          <delta_ts>2006-11-17 11:38:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>420+</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zack Rusin">zack</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>45642</commentid>
    <comment_count>0</comment_count>
    <who name="Zack Rusin">zack</who>
    <bug_when>2006-11-16 08:47:21 -0800</bug_when>
    <thetext>Making Qt/KDE codepaths work after recent api changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45643</commentid>
    <comment_count>1</comment_count>
      <attachid>11538</attachid>
    <who name="Zack Rusin">zack</who>
    <bug_when>2006-11-16 08:48:51 -0800</bug_when>
    <thetext>Created attachment 11538
patch to fix Qt/KDE code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45644</commentid>
    <comment_count>2</comment_count>
      <attachid>11538</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2006-11-16 09:11:42 -0800</bug_when>
    <thetext>Comment on attachment 11538
patch to fix Qt/KDE code

r- for a few missing things.

- Add the URL for this bug to the Changelog.
- #include &quot;config.h&quot; to ContextMenuClientQt.cpp.
- In ContextMenuClientQt.h, please but the opening curly-brace for the namespace and the class on the same line as the declaration. Same goes for the namespace in ContextMenuQt.cpp.
- No need for the braces around one line if statement in void ContextMenu::appendItem(ContextMenuItem item)

- These last two are really nitpicking, but, in EditorClientQt.cpp, please separate the #include &quot;EditCommand.h&quot; from the first 2 #includes as is our style.  And, at the end of ContextMenuClientQt.cpp you have 2 newlines when only one called for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45562</commentid>
    <comment_count>3</comment_count>
      <attachid>11539</attachid>
    <who name="Zack Rusin">zack</who>
    <bug_when>2006-11-16 09:25:59 -0800</bug_when>
    <thetext>Created attachment 11539
fixes the style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45580</commentid>
    <comment_count>4</comment_count>
      <attachid>11539</attachid>
    <who name="">mitz</who>
    <bug_when>2006-11-16 14:14:48 -0800</bug_when>
    <thetext>Comment on attachment 11539
fixes the style issues

r- since there are still a few coding style and comment issues, but other than that the patch looks good.

Please avoid trailing spaces:

-   ${CMAKE_CURRENT_SOURCE_DIR}/page
+   ${CMAKE_CURRENT_SOURCE_DIR}/page   

Don&apos;t use tabs in ChangeLog:

+	http://bugs.webkit.org/show_bug.cgi?id=11617

+	Adjusting to the new api.

I don&apos;t think this comment makes sense for Qt:

+    // Double-click events don&apos;t exist in Cocoa. Since passWidgetMouseDownEventToWidget will
+    // just pass currentEvent down to the widget, we don&apos;t want to call it for events that
+    // don&apos;t correspond to Cocoa events.  The mousedown/ups will have already been passed on as
+    // part of the pressed/released handling.

What&apos;s the point of this comment?

+    // FIXME: this method always returns true
+    notImplemented();
+    return false;
+}

This should be &apos;#include &quot;Shared.h&quot;&apos;

+#include &lt;Shared.h&gt;

Should use braces for one-liners:

+    if (!m_menu) {
+        m_menu = new QMenu();
+    }

FIXME style is &quot;// FIXME: Sentence-capitalized comment&quot;. I think these comments could be phrased better (the second one might not make sense once the first one is changed or removed):

+    //FIXME this method is silly
+    //FIXME another silly method

Include &lt;WTF/Forward.h&gt; and drop the WTF:: from these:

+    virtual void registerCommandForUndo(WTF::PassRefPtr&lt;WebCore::EditCommand&gt;);
+    virtual void registerCommandForRedo(WTF::PassRefPtr&lt;WebCore::EditCommand&gt;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45581</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-11-16 14:22:01 -0800</bug_when>
    <thetext>(In reply to comment #4)

&gt; Should use braces for one-liners:

Bah. I meant to write &quot;Shouldn&apos;t&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45602</commentid>
    <comment_count>6</comment_count>
    <who name="Zack Rusin">zack</who>
    <bug_when>2006-11-17 01:46:30 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Please avoid trailing spaces:
&gt; 
&gt; -   ${CMAKE_CURRENT_SOURCE_DIR}/page
&gt; +   ${CMAKE_CURRENT_SOURCE_DIR}/page   

hmm, we have a script that removes trailing whitespace on saving of a file, unfortunately the code in WebKit is filled with trailing whitespace due to which we had to disable removing of trailing whitespace. So i&apos;m not sure why this is an issue. I fixed it, of course, though.

&gt; Don&apos;t use tabs in ChangeLog:
&gt; 
&gt; +       http://bugs.webkit.org/show_bug.cgi?id=11617
&gt; 
&gt; +       Adjusting to the new api.

Fixed.

&gt; I don&apos;t think this comment makes sense for Qt:
&gt; 
&gt; +    // Double-click events don&apos;t exist in Cocoa. Since
&gt; passWidgetMouseDownEventToWidget will
&gt; +    // just pass currentEvent down to the widget, we don&apos;t want to call it for
&gt; events that
&gt; +    // don&apos;t correspond to Cocoa events.  The mousedown/ups will have already
&gt; been passed on as
&gt; +    // part of the pressed/released handling.

It actually makes a lot of sense. Currently methods are being frequently moved and renamed due to which I have no idea what&apos;s going on with them. If I&apos;m not sure what a method is doing, I put the comment from the mac implementation in the stub - this way when methods are moved/renamed I can grep for it and it actually  works :)

&gt; What&apos;s the point of this comment?
&gt; 
&gt; +    // FIXME: this method always returns true
&gt; +    notImplemented();
&gt; +    return false;
&gt; +}

The point of it is that the mac implementation returns always true for reasons I don&apos;t fully understand and once I&apos;ll be implementing this it&apos;s gonna be worth to go through platform code and either remove it if it&apos;s meant to always return true or do something with it.

&gt; This should be &apos;#include &quot;Shared.h&quot;&apos;
&gt; 
&gt; +#include &lt;Shared.h&gt;

Fixed.

&gt; Should use braces for one-liners:
&gt; 
&gt; +    if (!m_menu) {
&gt; +        m_menu = new QMenu();
&gt; +    }

Not in this case. In this case I could add something like:
&gt; +    if (!m_menu) {
&gt; +        //FIXME: in this spot right here a code to detect
&gt; +        //       who should own the menu should go. unfortunately
&gt; +        //       i&apos;m not sure what exactly should own it which makes
&gt; +        //       me think that using qlist with a structure representing
&gt; +        //       this class might make more sense
&gt; +        m_menu = new QMenu();
&gt; +    }

Or you could just trust that I actually know what I&apos;m doing ;)

&gt; 
&gt; FIXME style is &quot;// FIXME: Sentence-capitalized comment&quot;. I think these comments
&gt; could be phrased better (the second one might not make sense once the first one
&gt; is changed or removed):
&gt; 
&gt; +    //FIXME this method is silly
&gt; +    //FIXME another silly method

This is a reminder to myself that those two methods are, well, silly and instead of trying to implement them I need to go through platform code and fix it properly there rather than hack around in platform/qt trying to implement it (it would be impossible with qmenu).

&gt; Include &lt;WTF/Forward.h&gt; and drop the WTF:: from these:
&gt; 
&gt; +    virtual void
&gt; registerCommandForUndo(WTF::PassRefPtr&lt;WebCore::EditCommand&gt;);
&gt; +    virtual void
&gt; registerCommandForRedo(WTF::PassRefPtr&lt;WebCore::EditCommand&gt;);

Fixed. 

All in all, I think we&apos;ll have to work out a different solution for the compile fixes by which they&apos;re not r-&apos;ed because of trailing whitespace and comments you don&apos;t understand. We need to get compile fixes very quickly, maybe we could come to some understanding by which either i&apos;m being trusted that i know what i&apos;m doing with my code or maybe you could take and remove/change whatever you feel is necessary to follow any kind of style you feel that code should follow. I just want head compiling so that we can be merging it to the tree in which we do actual work without getting compilation errors all the time. Ideally the code that&apos;s being committed nightly wouldn&apos;t be breaking compilation in Qt but that&apos;s never going to happen so lets try to fix our current way of doing things. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45603</commentid>
    <comment_count>7</comment_count>
      <attachid>11546</attachid>
    <who name="Zack Rusin">zack</who>
    <bug_when>2006-11-17 01:47:05 -0800</bug_when>
    <thetext>Created attachment 11546
adds some more compilation fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45546</commentid>
    <comment_count>8</comment_count>
      <attachid>11546</attachid>
    <who name="">mitz</who>
    <bug_when>2006-11-17 11:17:22 -0800</bug_when>
    <thetext>Comment on attachment 11546
adds some more compilation fixes

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45548</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2006-11-17 11:34:18 -0800</bug_when>
    <thetext>Landed in r17827.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45549</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2006-11-17 11:38:53 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Not in this case. In this case I could add something like:
&gt; &gt; +    if (!m_menu) {
&gt; &gt; +        //FIXME: in this spot right here a code to detect
&gt; &gt; +        //       who should own the menu should go. unfortunately
&gt; &gt; +        //       i&apos;m not sure what exactly should own it which makes
&gt; &gt; +        //       me think that using qlist with a structure representing
&gt; &gt; +        //       this class might make more sense
&gt; &gt; +        m_menu = new QMenu();
&gt; &gt; +    }

I thought so too, but it turns out that the &quot;no braces around one-liners&quot; rule also applies to a single line of code preceded by a comment (there is such an example in the guidelines).

&gt; All in all, I think we&apos;ll have to work out a different solution for the compile
&gt; fixes by which they&apos;re not r-&apos;ed because of trailing whitespace and comments
&gt; you don&apos;t understand.

That is already the case. I also have no problem with not r-ing patches that don&apos;t conform to the style guidelines.

&gt; We need to get compile fixes very quickly

Conforming to the style guidelines doesn&apos;t conflict with getting compile fixes very quickly.

&gt; maybe we could
&gt; come to some understanding by which either i&apos;m being trusted that i know what
&gt; i&apos;m doing with my code or maybe you could take and remove/change whatever you
&gt; feel is necessary to follow any kind of style you feel that code should follow.

I can&apos;t do that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11538</attachid>
            <date>2006-11-16 08:48:51 -0800</date>
            <delta_ts>2006-11-17 01:47:05 -0800</delta_ts>
            <desc>patch to fix Qt/KDE code</desc>
            <filename>webk1.diff</filename>
            <type>text/plain</type>
            <size>28546</size>
            <attacher name="Zack Rusin">zack</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTc4MDgpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbG9hZGVyCiAgICAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vbG9hZGVyL2ljb24KICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9sb2Fk
ZXIvcXQKLSAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYWdlCisgICAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vcGFnZSAgIAorICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L3BhZ2UvcXQKICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9wbGF0Zm9ybQogICAgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtIAogICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzCkBAIC05NjksMTggKzk3MCwyMiBAQCBzZXQoV2Vi
Q29yZV9TUkNTCiAgICAgbG9hZGVyL3F0L1Jlc291cmNlTG9hZGVyUXQuY3BwCiAKICAgICBwYWdl
L0Nocm9tZS5jcHAKKyAgICBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKICAgICBwYWdl
L0RPTVdpbmRvdy5jcHAKKyAgICBwYWdlL0V2ZW50SGFuZGxlci5jcHAgICAKICAgICBwYWdlL0Zy
YW1lLmNwcAogICAgIHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAog
ICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAKICAgICBwYWdlL1BhZ2Uu
Y3BwCi0gICAgcGFnZS9QYWdlU3RhdGUuY3BwICAgIAorICAgIHBhZ2UvUGFnZVN0YXRlLmNwcAor
ICAgIHBhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwICAgCiAKICAgICBwbGF0Zm9ybS9BcmVuYS5j
cHAKICAgICBwbGF0Zm9ybS9BcnJheUltcGwuY3BwCiAgICAgcGxhdGZvcm0vQXRvbWljU3RyaW5n
LmNwcAogICAgIHBsYXRmb3JtL0NTdHJpbmcuY3BwCisgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUu
Y3BwCiAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZENTdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vRGVw
cmVjYXRlZFB0ckxpc3RJbXBsLmNwcAogICAgIHBsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3Bw
CkBAIC0xMTA4LDEwICsxMTEzLDExIEBAIHNldChXZWJDb3JlX1NSQ1MKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCiAgICAgCiAgICAgcGxhdGZvcm0vcXQvQ2hy
b21lQ2xpZW50UXQuY3BwCisgICAgcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAK
KyAgICBwbGF0Zm9ybS9xdC9Db250ZXh0TWVudVF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAogICAgIHBsYXRmb3JtL3F0
L0VkaXRvckNsaWVudFF0LmNwcAotIyAgIHBsYXRmb3JtL3F0L0ZpbGVCdXR0b25RdC5jcHAKICAg
ICBwbGF0Zm9ybS9xdC9GaWxlQ2hvb3NlclF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0ZvbnRDYWNo
ZVF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0ZvbnREYXRhUXQuY3BwCkBAIC0xMTY3LDcgKzExNzMs
NiBAQCBzZXQoV2ViQ29yZV9TUkNTCiAgICAgcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAogICAg
IHJlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKICAgICByZW5kZXJpbmcvQ291bnRlclJlc2V0Tm9k
ZS5jcHAKLSAgICByZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5jcHAKICAgICByZW5kZXJpbmcv
RWxsaXBzaXNCb3guY3BwCiAgICAgcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCiAgICAg
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0xMjA1LDYgKzEyMTAsNyBAQCBzZXQoV2Vi
Q29yZV9TUkNTCiAgICAgcmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwCiAgICAgcmVuZGVyaW5nL1Jl
bmRlclBhcnRPYmplY3QuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorICAg
IHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNw
cAogICAgIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmNwcApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODA4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw2MSBAQAorMjAwNi0xMS0xNiAgWmFjayBSdXNpbiAgPHph
Y2tAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtpbmcgcGxhdGZvcm0gUXQvS0RFIGNvbXBpbGUgYW5kIHdvcmsgYWZ0ZXIgCisgICAg
ICAgIHRoZSBsYXRlc3QgYXBpIGNoYW5nZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjppc0tleWJvYXJkT3B0aW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6dGFic1RvTGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0YWJz
VG9BbGxDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmZyZWVDbGlw
Ym9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50Vmll
dyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25F
dmVudFRvV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNl
RG93bkV2ZW50VG9XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpsYXN0
RXZlbnRJc01vdXNlVXApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxl
RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXApOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJh
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRvV2lk
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2hvdWxkRHJhZ0F1dG9Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnU3JjRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9T
dWJmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1vdmVF
dmVudFRvU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91
c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxl
cjo6cGFzc1doZWVsRXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nocm9tZUNsaWVudFF0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3cpOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OmFkZEN1c3RvbUNvbnRleHRNZW51SXRl
bXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRRdDo6cmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OmRlcmVmKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9xdC9Db250ZXh0TWVudUNsaWVudFF0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3F0L0NvbnRleHRNZW51UXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRN
ZW51OjphcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjppdGVtQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Omluc2VydEl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OnNldFBsYXRmb3JtTWVudURlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50UXQ6OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6
OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZG8pOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgICogcGxhdGZvcm0vcXQv
U2Nyb2xsVmlld0NhbnZhc1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXdDYW52
YXNRdDo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwOgorICAgICAgICAoRnJhbWVWaWV3Ojp1cGRhdGVCb3JkZXIpOgorCiAyMDA2
LTExLTE2ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBo
eWF0dC4KSW5kZXg6IFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2Rl
Lm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50SGFuZGxl
ci5oIgorCisjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZy
YW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVRdC5oIgorI2luY2x1ZGUgIkZyYW1lVHJlZS5o
IgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZVNldEVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcm9sbEJhci5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOworCisjZGVmaW5l
IG5vdEltcGxlbWVudGVkKCkgZG8geyBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBVTklNUExFTUVO
VEVEOiAlczolZCAoJXMpXG4iLCBcCisgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywgX19G
VU5DVElPTl9fKTsgfSB3aGlsZSgwKQorCitzdGF0aWMgYm9vbCBpc0tleWJvYXJkT3B0aW9uVGFi
KEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIHJldHVybiBldmVudAorICAgICAgICAmJiAo
ZXZlbnQtPnR5cGUoKSA9PSBrZXlkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBrZXlwcmVz
c0V2ZW50KQorICAgICAgICAmJiBldmVudC0+YWx0S2V5KCkKKyAgICAgICAgJiYgZXZlbnQtPmtl
eUlkZW50aWZpZXIoKSA9PSAiVSswMDAwMDkiOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6dGFi
c1RvTGlua3MoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzS2V5
Ym9hcmRPcHRpb25UYWIoZXZlbnQpOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6dGFic1RvQWxs
Q29udHJvbHMoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgYm9vbCBoYW5kbGlu
Z09wdGlvblRhYiA9IGlzS2V5Ym9hcmRPcHRpb25UYWIoZXZlbnQpOworICAgIAorICAgIHJldHVy
biBoYW5kbGluZ09wdGlvblRhYjsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9h
cmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRIYW5kbGVyOjpm
b2N1c0RvY3VtZW50VmlldygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9vbCBF
dmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGNvbnN0IE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQoreworICAgIC8vIEZpZ3VyZSBvdXQgd2hp
Y2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KKyAgICBSZW5kZXJPYmplY3QqIHRhcmdldCA9
IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+cmVuZGVyZXIoKSA6IDA7
CisgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+aXNXaWRnZXQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIC8vIERvdWJsZS1jbGljayBldmVudHMgZG9uJ3QgZXhpc3QgaW4g
Q29jb2EuIFNpbmNlIHBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0IHdpbGwKKyAgICAv
LyBqdXN0IHBhc3MgY3VycmVudEV2ZW50IGRvd24gdG8gdGhlIHdpZGdldCwgd2UgZG9uJ3Qgd2Fu
dCB0byBjYWxsIGl0IGZvciBldmVudHMgdGhhdAorICAgIC8vIGRvbid0IGNvcnJlc3BvbmQgdG8g
Q29jb2EgZXZlbnRzLiAgVGhlIG1vdXNlZG93bi91cHMgd2lsbCBoYXZlIGFscmVhZHkgYmVlbiBw
YXNzZWQgb24gYXMKKyAgICAvLyBwYXJ0IG9mIHRoZSBwcmVzc2VkL3JlbGVhc2VkIGhhbmRsaW5n
LgorICAgIHJldHVybiBwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChzdGF0aWNfY2FzdDxSZW5k
ZXJXaWRnZXQqPih0YXJnZXQpLT53aWRnZXQoKSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdl
dCkKK3sKKyAgICByZXR1cm4gcGFzc01vdXNlRG93bkV2ZW50VG9XaWRnZXQocmVuZGVyV2lkZ2V0
LT53aWRnZXQoKSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRU
b1dpZGdldChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICAvLyBGSVhNRTogdGhpcyBtZXRob2QgYWx3
YXlzIHJldHVybnMgdHJ1ZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIEV2ZW50SGFuZGxlcjo6bGFzdEV2ZW50SXNNb3VzZVVwKCkgY29uc3QKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK2Jvb2wg
RXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGZs
b2F0RHJhZ1ZpZXdwb3J0TG9jYXRpb24pIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFnKGNv
bnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6cGFz
c1doZWVsRXZlbnRUb1dpZGdldChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gQ2FsbGVkIGFzIHdlIHdhbGsgdXAgdGhl
IGVsZW1lbnQgY2hhaW4gZm9yIG5vZGVzIHdpdGggQ1NTIHByb3BlcnR5IC13ZWJraXQtdXNlci1k
cmFnID09IGF1dG8KK2Jvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGREcmFnQXV0b05vZGUoTm9kZSog
bm9kZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyByZXR1cm5zIGlmIHdlIHNob3VsZCBjb250
aW51ZSAiZGVmYXVsdCBwcm9jZXNzaW5nIiwgaS5lLiwgd2hldGhlciBldmVudGhhbmRsZXIgY2Fu
Y2VsZWQKK2Jvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdTcmNFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFdmVu
dEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIHJldHVybiBwYXNzU3Vi
ZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIHJldHVybiBwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3Vs
dHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIHJldHVybiBwYXNzU3ViZnJhbWVFdmVu
dFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNz
V2hlZWxFdmVudFRvU3ViZnJhbWUoUGxhdGZvcm1XaGVlbEV2ZW50JiwgRnJhbWUqIHN1YmZyYW1l
KQoreworICAgIHJldHVybiBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KHN1YmZyYW1lLT52aWV3KCkp
OworfQorCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFy
KE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBQbGF0Zm9ybVNjcm9sbGJhciogc2Nyb2xs
YmFyKQoreworICAgIHJldHVybiBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KHNjcm9sbGJhcik7Cit9
CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHJldmlzaW9uIDE3ODA4KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4
IEBAIGNsYXNzIE5TTXV0YWJsZUFycmF5OwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShXSU4pCiB0
eXBlZGVmIHN0cnVjdCBITUVOVV9fKiBITUVOVTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorY2xhc3Mg
UU1lbnU7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTExLDYgKzExMyw4IEBA
IHN0cnVjdCBDb250ZXh0TWVudUl0ZW0gewogdHlwZWRlZiBOU011dGFibGVBcnJheSogUGxhdGZv
cm1NZW51RGVzY3JpcHRpb247CiAjZWxpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIEhNRU5VIFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uOworI2VsaWYgUExBVEZPUk0oUVQpCit0eXBlZGVmIFFNZW51
KiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbjsKICNlbmRpZgogCiBjbGFzcyBDb250ZXh0TWVudSA6
IE5vbmNvcHlhYmxlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0Nocm9tZUNsaWVudFF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L0Nocm9tZUNsaWVudFF0LmNwcAko
cmV2aXNpb24gMTc4MDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0Nocm9tZUNsaWVudFF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50UXQ6
OnVuZm9jdXMoKQogUGFnZSogQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyhjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGZwcmludGYoc3Rk
ZXJyLCAiQ2hyb21lQ2xpZW50UXQ6OmNyZWF0ZVdpbmRvdyIpOwogICAgIHJldHVybiAwOwogfQog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRNZW51Q2xpZW50UXQuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2
IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiQ29udGV4dE1lbnVD
bGllbnRRdC5oIgorCisjaW5jbHVkZSA8U2hhcmVkLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgor
CisjZGVmaW5lIG5vdEltcGxlbWVudGVkKCkgZG8geyBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBV
TklNUExFTUVOVEVEOiAlczolZCAoJXMpXG4iLCBcCisgICAgICAgICAgIF9fRklMRV9fLCBfX0xJ
TkVfXywgX19GVU5DVElPTl9fKTsgfSB3aGlsZSgwKQorCituYW1lc3BhY2UgV2ViQ29yZQorewor
ICAgIAordm9pZCBDb250ZXh0TWVudUNsaWVudFF0OjphZGRDdXN0b21Db250ZXh0TWVudUl0ZW1z
KENvbnRleHRNZW51KikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENvbnRl
eHRNZW51Q2xpZW50UXQ6OnJlZigpCit7CisgICAgU2hhcmVkPENvbnRleHRNZW51Q2xpZW50UXQ+
OjpyZWYoKTsKK30KKwordm9pZCBDb250ZXh0TWVudUNsaWVudFF0OjpkZXJlZigpCit7CisgICAg
U2hhcmVkPENvbnRleHRNZW51Q2xpZW50UXQ+OjpkZXJlZigpOworfQorCisKK30KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUNsaWVudFF0LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFj
a0BrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGllbnRRdF9oCisjZGVmaW5l
IENvbnRleHRNZW51Q2xpZW50UXRfaAorCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnQuaCIK
KworI2luY2x1ZGUgPFNoYXJlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZQoreworICAgIGNsYXNz
IENvbnRleHRNZW51OworCisgICAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnRRdCA6IHB1YmxpYyBD
b250ZXh0TWVudUNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNoYXJlZDxDb250ZXh0TWVudUNsaWVudFF0PgorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkZXJlZigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkQ3VzdG9tQ29u
dGV4dE1lbnVJdGVtcyhDb250ZXh0TWVudSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmKCk7
CisgICAgfTsKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRN
ZW51UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVR
dC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRNZW51UXQu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCisKKyNpbmNsdWRlIDxRTWVudT4KKyNpbmNsdWRl
IDxRQWN0aW9uPgorCituYW1lc3BhY2UgV2ViQ29yZQoreworICAgIAordm9pZCBDb250ZXh0TWVu
dTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0gaXRlbSkKK3sKKyAgICBpZiAoIW1fbWVudSkg
eworICAgICAgICBtX21lbnUgPSBuZXcgUU1lbnUoKTsKKyAgICB9CisgICAgUUFjdGlvbiAqYWN0
aW9uICA9IG1fbWVudS0+YWRkQWN0aW9uKGl0ZW0udGl0bGUpOworfQorCit1bnNpZ25lZCBDb250
ZXh0TWVudTo6aXRlbUNvdW50KCkKK3sKKyAgICAvL0ZJWE1FIHRoaXMgbWV0aG9kIGlzIHNpbGx5
CisgICAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnU6Omluc2VydEl0ZW0odW5zaWdu
ZWQgcG9zaXRpb24sIENvbnRleHRNZW51SXRlbSBpdGVtKQoreworICAgIC8vRklYTUUgYW5vdGhl
ciBzaWxseSBtZXRob2QKKyAgICBhcHBlbmRJdGVtKGl0ZW0pOworICAgIAorfQorCit2b2lkIENv
bnRleHRNZW51OjpzZXRQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbihQbGF0Zm9ybU1lbnVEZXNjcmlw
dGlvbiBtZW51KQoreworICAgIGRlbGV0ZSBtX21lbnU7CisgICAgbV9tZW51ID0gc3RhdGljX2Nh
c3Q8UU1lbnUqPihtZW51KTsKK30KKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9FZGl0
b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9FZGl0b3JD
bGllbnRRdC5jcHAJKHJldmlzaW9uIDE3ODA4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9FZGl0
b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSwxMSBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50UXQuaCIKKyNpbmNsdWRlICJF
ZGl0Q29tbWFuZC5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2RlZmluZSBub3RJbXBsZW1l
bnRlZCgpIGRvIHsgZnByaW50ZihzdGRlcnIsICJGSVhNRTogVU5JTVBMRU1FTlRFRDogJXM6JWRc
biIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IH0gd2hpbGUoMCkKKyNkZWZpbmUgbm90SW1wbGVtZW50
ZWQoKSBkbyB7IGZwcmludGYoc3RkZXJyLCAiRklYTUU6IFVOSU1QTEVNRU5URUQ6ICVzOiVkKCVz
KVxuIiwgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18pOyB9IHdoaWxlKDApCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA5LDYgKzExMCw1NSBAQCB2b2lkIEVkaXRvckNsaWVu
dFF0OjpkaWRFbmRFZGl0aW5nKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEVk
aXRvckNsaWVudFF0OjpzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFZGl0b3JDbGllbnRRdDo6
aXNFZGl0YWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRvKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pCit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVu
ZG8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIEVkaXRvckNsaWVudFF0OjpjYW5SZWRvKCkgY29uc3QKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6
dW5kbygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRR
dDo6cmVkbygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfQogCiAvLyB2aW06IHRz
PTQgc3c9NCBldApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRRdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvRWRpdG9yQ2xpZW50UXQuaAkocmV2aXNp
b24gMTc4MDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0VkaXRvckNsaWVudFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDYgKzU2LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmco
KTsKIAorICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCk7CisgICAg
dmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21t
YW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yUmVkbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6RWRpdENvbW1hbmQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlv
bnMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBjYW5SZWRvKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHVuZG8oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVkbygpOwogfTsKIAogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxW
aWV3Q2FudmFzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xs
Vmlld0NhbnZhc1F0LmNwcAkocmV2aXNpb24gMTc4MDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0
L1Njcm9sbFZpZXdDYW52YXNRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJTY3JvbGxWaWV3Q2FudmFzUXQuaCIKICNpbmNsdWRlICJTY3JvbGxWaWV3Q2Fu
dmFzUXQubW9jIgogCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVR
dC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIK
QEAgLTkwLDEwICs5MSwxMCBAQCB2b2lkIFNjcm9sbFZpZXdDYW52YXNRdDo6bW91c2VNb3ZlRXZl
bnQoCiB2b2lkIFNjcm9sbFZpZXdDYW52YXNRdDo6bW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50
KiBldikKIHsKICAgICBGcmFtZVZpZXcqIGZ2ID0gc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4obV9m
cmFtZVZpZXcpOwotICAgIGlmICghZnYgfHwgIWZ2LT5mcmFtZSgpKQorICAgIGlmICghZnYgfHwg
IWZ2LT5mcmFtZSgpIHx8ICFmdi0+ZnJhbWUoKS0+ZXZlbnRIYW5kbGVyKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGZ2LT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50
KGV2LCAxKSk7CisgICAgZnYtPmZyYW1lKCktPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVNb3VzZVBy
ZXNzRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2LCAxKSk7CiB9CiAKIHZvaWQgU2Nyb2xsVmll
d0NhbnZhc1F0Ojptb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCogZXYpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAxNzgwOCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlRleHRGaWVsZC5oIgotI2luY2x1ZGUgIlNsaWRl
ci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUgImxvYWRlci5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgpAQCAtNjQsNyArNjMsOCBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAotI2RlZmluZSBub3RJbXBsZW1lbnRlZCgpIGRvIHsgZnByaW50ZihzdGRlcnIsICJGSVhN
RTogVU5JTVBMRU1FTlRFRDogJXM6JWRcbiIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IH0gd2hpbGUo
MCkKKyNkZWZpbmUgbm90SW1wbGVtZW50ZWQoKSBkbyB7IGZwcmludGYoc3RkZXJyLCAiRklYTUU6
IFVOSU1QTEVNRU5URUQ6ICVzOiVkICglcylcbiIsIFwKKyAgICAgICAgICAgX19GSUxFX18sIF9f
TElORV9fLCBfX0ZVTkNUSU9OX18pOyB9IHdoaWxlKDApCiAKIEZsb2F0UmVjdCBGb250OjpzZWxl
Y3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIGNvbnN0IFRleHRTdHlsZSYs
IGNvbnN0IEludFBvaW50JiwgaW50KSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBG
bG9hdFJlY3QoKTsgfQogaW50IEZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yQ29tcGxleFRleHQo
Y29uc3QgVGV4dFJ1biYsIGNvbnN0IFRleHRTdHlsZSYsIGludCwgYm9vbCkgY29uc3QgeyBub3RJ
bXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQpAQCAtMTA4LDE2ICsxMDgsNiBAQCBJbnRTaXplIFRl
eHRGaWVsZDo6c2l6ZUZvckNoYXJhY3RlcldpZHRoCiBpbnQgVGV4dEZpZWxkOjpiYXNlbGluZVBv
c2l0aW9uKGludCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQogdm9pZCBU
ZXh0RmllbGQ6OnNldExpdmVTZWFyY2goYm9vbCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKLVNs
aWRlcjo6U2xpZGVyKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci1JbnRTaXplIFNsaWRlcjo6c2l6
ZUhpbnQoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBJbnRTaXplKCk7IH0KLVNs
aWRlcjo6flNsaWRlcigpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBTbGlkZXI6OnNldFZh
bHVlKGRvdWJsZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12b2lkIFNsaWRlcjo6c2V0TWF4VmFs
dWUoZG91YmxlKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLXZvaWQgU2xpZGVyOjpzZXRNaW5WYWx1
ZShkb3VibGUpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBTbGlkZXI6OnNldEZvbnQoV2Vi
Q29yZTo6Rm9udCBjb25zdCYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotZG91YmxlIFNsaWRlcjo6
dmFsdWUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9Ci1XaWRnZXQ6OkZv
Y3VzUG9saWN5IFNsaWRlcjo6Zm9jdXNQb2xpY3koKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7
IHJldHVybiBOb0ZvY3VzOyB9Ci0KIFNjcm9sbGJhcjo6U2Nyb2xsYmFyKFNjcm9sbGJhckNsaWVu
dCosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgeyBub3RJbXBs
ZW1lbnRlZCgpOyB9CiB2b2lkIFNjcm9sbGJhcjo6c2V0U3RlcHMoaW50LCBpbnQpIHsgbm90SW1w
bGVtZW50ZWQoKTsgfQogYm9vbCBTY3JvbGxiYXI6OnNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNj
cm9sbEdyYW51bGFyaXR5LCBmbG9hdCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQpA
QCAtMTYwLDExICsxNTAsNiBAQCBGbG9hdFJlY3QgV2ViQ29yZTo6c2NyZWVuQXZhaWxhYmxlUmVj
dChXCiB2b2lkIFdlYkNvcmU6OnNldEZvY3VzUmluZ0NvbG9yQ2hhbmdlRnVuY3Rpb24odm9pZCAo
KikoKSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVCb3Jk
ZXIoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLWJvb2wgRnJhbWVWaWV3OjpwYXNzTW91c2VQcmVz
c0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1l
KiBzdWJmcmFtZSkgeyByZXR1cm4gdHJ1ZTsgfQotYm9vbCBGcmFtZVZpZXc6OnBhc3NNb3VzZU1v
dmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFt
ZSogc3ViZnJhbWUpIHsgcmV0dXJuIHRydWU7IH0KLWJvb2wgRnJhbWVWaWV3OjpwYXNzTW91c2VS
ZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIG1ldiwg
RnJhbWUqIHN1YmZyYW1lKSB7IHJldHVybiB0cnVlOyB9Ci1ib29sIEZyYW1lVmlldzo6cGFzc1do
ZWVsRXZlbnRUb1N1YmZyYW1lKFBsYXRmb3JtV2hlZWxFdmVudCYgZSwgRnJhbWUqIHN1YmZyYW1l
KSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBGcmFtZVZpZXc6OnBhc3NNb3VzZVByZXNzRXZlbnRU
b1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIFBsYXRmb3JtU2Ny
b2xsYmFyKikgeyByZXR1cm4gZmFsc2U7IH0KIAogYm9vbCBBWE9iamVjdENhY2hlOjpnQWNjZXNz
aWJpbGl0eUVuYWJsZWQgPSBmYWxzZTsKIApJbmRleDogV2ViS2l0UXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFF0L0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MDgpCisrKyBXZWJLaXRR
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAwNi0xMS0xNiAg
WmFjayBSdXNpbiAgPHphY2tAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworCUFkanVzdGluZyB0byB0aGUgbmV3IGFwaS4KKworICAgICAgICAqIFF0TGF1
bmNoZXIvbWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBXZWJLaXRQYXJ0L1dl
YktpdFBhcnQuY3BwOgorICAgICAgICAoV2ViS2l0UGFydDo6aW5pdFZpZXcpOgorCiAyMDA2LTEx
LTEwICBaYWNrIFJ1c2luICA8emFja0BrZGUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGFuZCBs
YW5kZWQgYnkgQW5kZXJzLgpJbmRleDogV2ViS2l0UXQvUXRMYXVuY2hlci9tYWluLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRRdC9RdExhdW5jaGVyL21haW4uY3BwCShyZXZpc2lvbiAxNzgwOCkK
KysrIFdlYktpdFF0L1F0TGF1bmNoZXIvbWFpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlIDxEb2N1bWVudC5oPgogI2luY2x1ZGUgPEZyYW1lVmlldy5oPgog
I2luY2x1ZGUgPENocm9tZUNsaWVudFF0Lmg+CisjaW5jbHVkZSA8Q29udGV4dE1lbnVDbGllbnRR
dC5oPgogI2luY2x1ZGUgPEtVUkwuaD4KIAogI2luY2x1ZGUgPEZyYW1lUXQuaD4KQEAgLTgyLDcg
KzgzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAgIFFCb3hMYXlvdXQg
KmwgPSBuZXcgUVZCb3hMYXlvdXQoJnRvcExldmVsKTsKICAKICAgICAvLyBJbml0aWFsaXplIFdl
YkNvcmUgaW4gUXQgcGxhdGZvcm0gbW9kZS4uLgotICAgIFBhZ2UqIHBhZ2UgPSBuZXcgUGFnZShu
ZXcgQ2hyb21lQ2xpZW50UXQoKSk7CisgICAgUGFnZSogcGFnZSA9IG5ldyBQYWdlKG5ldyBDaHJv
bWVDbGllbnRRdCgpLCBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpKTsKICAgICBGcmFtZSogZnJh
bWUgPSBuZXcgRnJhbWVRdChwYWdlLCAwLCBuZXcgRnJhbWVRdENsaWVudERlZmF1bHQoKSk7CiAK
ICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG5ldyBGcmFtZVZpZXcoZnJhbWUpOwpJbmRleDog
V2ViS2l0UXQvV2ViS2l0UGFydC9XZWJLaXRQYXJ0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRR
dC9XZWJLaXRQYXJ0L1dlYktpdFBhcnQuY3BwCShyZXZpc2lvbiAxNzgwOCkKKysrIFdlYktpdFF0
L1dlYktpdFBhcnQvV2ViS2l0UGFydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9y
Zz4KICAqCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTMxLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
IkNocm9tZUNsaWVudFF0LmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRRdC5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKIAogI2luY2x1ZGUgPFFEZWJ1Zz4KQEAgLTEwNCw3ICsxMDYsNyBAQCB2
b2lkIFdlYktpdFBhcnQ6OmluaXRWaWV3KFFXaWRnZXQqIHBhcmVuCiAgICAgbV9jbGllbnQgPSBu
ZXcgV2ViS2l0UGFydENsaWVudCh0aGlzKTsKICAKICAgICAvLyBJbml0aWFsaXplIFdlYkNvcmUg
aW4gUXQgcGxhdGZvcm0gbW9kZS4uLgotICAgIFBhZ2UqIHBhZ2UgPSBuZXcgUGFnZShuZXcgQ2hy
b21lQ2xpZW50UXQoKSk7CisgICAgUGFnZSogcGFnZSA9IG5ldyBQYWdlKG5ldyBDaHJvbWVDbGll
bnRRdCgpLCBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpKTsKICAgICBGcmFtZSogZnJhbWUgPSBu
ZXcgRnJhbWVRdChwYWdlLCAwLCBtX2NsaWVudCk7CiAKICAgICBtX2ZyYW1lID0gZnJhbWU7Cklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzgwOCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA2LTExLTE2ICBaYWNrIFJ1c2luICA8emFja0Br
ZGUub3JnPgorCisgICAgICAgIEZpeGluZyBjb21waWxhdGlvbi4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnF0cHJvai9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUpOiBBZGRpbmcKKyAg
ICAgICAgQ29udGV4dE1lbnVDbGllbnQgdG8gdGhlIGNvbnN0cnVjdG9yCisKIDIwMDYtMTEtMTIg
IE1hcmsgUm93ZSAgPGJkYXNoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWl0
ei4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnF0cHJv
ai9EdW1wUmVuZGVyVHJlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvRHVtcFJlbmRlclRyZWUucXRwcm9qL0R1bXBSZW5kZXJUcmVlLmNwcAkocmV2aXNpb24g
MTc4MDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5xdHBy
b2ovRHVtcFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAj
aW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudUNsaWVudFF0
LmgiCiAKICNpbmNsdWRlIDxRRGlyPgogI2luY2x1ZGUgPFFGaWxlPgpAQCAtNjEsNyArNjIsNyBA
QCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogICAgICwgbV9ub3RpZmllcigpCiB7
CiAgICAgLy8gSW5pdGlhbGl6ZSBXZWJDb3JlIGluIFF0IHBsYXRmb3JtIG1vZGUuLi4KLSAgICBQ
YWdlKiBwYWdlID0gbmV3IFBhZ2UobmV3IENocm9tZUNsaWVudFF0KCkpOworICAgIFBhZ2UqIHBh
Z2UgPSBuZXcgUGFnZShuZXcgQ2hyb21lQ2xpZW50UXQoKSwgbmV3IENvbnRleHRNZW51Q2xpZW50
UXQoKSk7CiAgICAgbV9mcmFtZSA9IG5ldyBGcmFtZVF0KHBhZ2UsIDAsIG1fY2xpZW50KTsKIAog
ICAgIEZyYW1lVmlldyogdmlldyA9IG5ldyBGcmFtZVZpZXcobV9mcmFtZSk7Cg==
</data>
<flag name="review"
          id="4094"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11539</attachid>
            <date>2006-11-16 09:25:59 -0800</date>
            <delta_ts>2006-11-17 01:47:05 -0800</delta_ts>
            <desc>fixes the style issues</desc>
            <filename>webk1.diff</filename>
            <type>text/plain</type>
            <size>28170</size>
            <attacher name="Zack Rusin">zack</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTc4MDgpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw4IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbG9hZGVyCiAgICAke0NNQUtFX0NVUlJFTlRfU09V
UkNFX0RJUn0vbG9hZGVyL2ljb24KICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9sb2Fk
ZXIvcXQKLSAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9wYWdlCisgICAke0NNQUtFX0NV
UlJFTlRfU09VUkNFX0RJUn0vcGFnZSAgIAorICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9
L3BhZ2UvcXQKICAgICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9wbGF0Zm9ybQogICAgJHtD
TUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L3BsYXRmb3JtIAogICAgJHtDTUFLRV9DVVJSRU5UX1NP
VVJDRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzCkBAIC05NjksMTggKzk3MCwyMiBAQCBzZXQoV2Vi
Q29yZV9TUkNTCiAgICAgbG9hZGVyL3F0L1Jlc291cmNlTG9hZGVyUXQuY3BwCiAKICAgICBwYWdl
L0Nocm9tZS5jcHAKKyAgICBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKICAgICBwYWdl
L0RPTVdpbmRvdy5jcHAKKyAgICBwYWdlL0V2ZW50SGFuZGxlci5jcHAgICAKICAgICBwYWdlL0Zy
YW1lLmNwcAogICAgIHBhZ2UvRnJhbWVUcmVlLmNwcAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcAog
ICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAKICAgICBwYWdlL1BhZ2Uu
Y3BwCi0gICAgcGFnZS9QYWdlU3RhdGUuY3BwICAgIAorICAgIHBhZ2UvUGFnZVN0YXRlLmNwcAor
ICAgIHBhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwICAgCiAKICAgICBwbGF0Zm9ybS9BcmVuYS5j
cHAKICAgICBwbGF0Zm9ybS9BcnJheUltcGwuY3BwCiAgICAgcGxhdGZvcm0vQXRvbWljU3RyaW5n
LmNwcAogICAgIHBsYXRmb3JtL0NTdHJpbmcuY3BwCisgICAgcGxhdGZvcm0vQ29udGV4dE1lbnUu
Y3BwCiAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZENTdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vRGVw
cmVjYXRlZFB0ckxpc3RJbXBsLmNwcAogICAgIHBsYXRmb3JtL0RlcHJlY2F0ZWRTdHJpbmcuY3Bw
CkBAIC0xMTA4LDEwICsxMTEzLDExIEBAIHNldChXZWJDb3JlX1NSQ1MKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCiAgICAgCiAgICAgcGxhdGZvcm0vcXQvQ2hy
b21lQ2xpZW50UXQuY3BwCisgICAgcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAK
KyAgICBwbGF0Zm9ybS9xdC9Db250ZXh0TWVudVF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0Nvb2tp
ZUphclF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0N1cnNvclF0LmNwcAogICAgIHBsYXRmb3JtL3F0
L0VkaXRvckNsaWVudFF0LmNwcAotIyAgIHBsYXRmb3JtL3F0L0ZpbGVCdXR0b25RdC5jcHAKICAg
ICBwbGF0Zm9ybS9xdC9GaWxlQ2hvb3NlclF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0ZvbnRDYWNo
ZVF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0ZvbnREYXRhUXQuY3BwCkBAIC0xMTY3LDcgKzExNzMs
NiBAQCBzZXQoV2ViQ29yZV9TUkNTCiAgICAgcmVuZGVyaW5nL2JyZWFrX2xpbmVzLmNwcAogICAg
IHJlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKICAgICByZW5kZXJpbmcvQ291bnRlclJlc2V0Tm9k
ZS5jcHAKLSAgICByZW5kZXJpbmcvRGVwcmVjYXRlZFNsaWRlci5jcHAKICAgICByZW5kZXJpbmcv
RWxsaXBzaXNCb3guY3BwCiAgICAgcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3BwCiAgICAg
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0xMjA1LDYgKzEyMTAsNyBAQCBzZXQoV2Vi
Q29yZV9TUkNTCiAgICAgcmVuZGVyaW5nL1JlbmRlclBhcnQuY3BwCiAgICAgcmVuZGVyaW5nL1Jl
bmRlclBhcnRPYmplY3QuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAorICAg
IHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRlclN0eWxlLmNw
cAogICAgIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmNwcApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODA4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw2MiBAQAorMjAwNi0xMS0xNiAgWmFjayBSdXNpbiAgPHph
Y2tAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBNYWtpbmcgcGxhdGZvcm0gUXQvS0RFIGNvbXBpbGUgYW5kIHdvcmsgYWZ0ZXIgCisgICAg
ICAgIHRoZSBsYXRlc3QgYXBpIGNoYW5nZXMuIFJlcG9ydGVkIGFzIAorCWh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjE3CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBwYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjppc0tleWJvYXJkT3B0aW9uVGFiKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dGFic1RvTGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp0
YWJzVG9BbGxDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmZyZWVD
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50
Vmlldyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURv
d25FdmVudFRvV2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01v
dXNlRG93bkV2ZW50VG9XaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjps
YXN0RXZlbnRJc01vdXNlVXApOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFn
SHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3Vi
ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzV2hlZWxFdmVudFRv
V2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2hvdWxkRHJhZ0F1dG9O
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnU3JjRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50
VG9TdWJmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZU1v
dmVFdmVudFRvU3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNz
TW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6cGFzc1doZWVsRXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL3F0L0Nocm9tZUNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudFF0OjpjcmVhdGVXaW5kb3cpOgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OmFkZEN1c3RvbUNvbnRleHRNZW51
SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRRdDo6cmVmKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OmRlcmVmKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9xdC9Db250ZXh0TWVudUNsaWVudFF0Lmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL3F0L0NvbnRleHRNZW51UXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRNZW51OjphcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51OjppdGVt
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Omluc2VydEl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OnNldFBsYXRmb3JtTWVudURlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNFZGl0YWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yQ2xpZW50UXQ6OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZG8pOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgICogcGxhdGZvcm0v
cXQvU2Nyb2xsVmlld0NhbnZhc1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXdD
YW52YXNRdDo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZW1wb3Jh
cnlMaW5rU3R1YnMuY3BwOgorICAgICAgICAoRnJhbWVWaWV3Ojp1cGRhdGVCb3JkZXIpOgorCiAy
MDA2LTExLTE2ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBoeWF0dC4KSW5kZXg6IFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL3F0L0V2ZW50SGFuZGxlclF0LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tA
a2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV2ZW50SGFu
ZGxlci5oIgorCisjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVRdC5oIgorI2luY2x1ZGUgIkZyYW1lVHJl
ZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhUTUxGcmFtZVNldEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXN1
bHQuaCIKKyNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcm9sbEJhci5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOworCisjZGVm
aW5lIG5vdEltcGxlbWVudGVkKCkgZG8geyBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBVTklNUExF
TUVOVEVEOiAlczolZCAoJXMpXG4iLCBcCisgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXywg
X19GVU5DVElPTl9fKTsgfSB3aGlsZSgwKQorCitzdGF0aWMgYm9vbCBpc0tleWJvYXJkT3B0aW9u
VGFiKEtleWJvYXJkRXZlbnQqIGV2ZW50KQoreworICAgIHJldHVybiBldmVudAorICAgICAgICAm
JiAoZXZlbnQtPnR5cGUoKSA9PSBrZXlkb3duRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBrZXlw
cmVzc0V2ZW50KQorICAgICAgICAmJiBldmVudC0+YWx0S2V5KCkKKyAgICAgICAgJiYgZXZlbnQt
PmtleUlkZW50aWZpZXIoKSA9PSAiVSswMDAwMDkiOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6
dGFic1RvTGlua3MoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlz
S2V5Ym9hcmRPcHRpb25UYWIoZXZlbnQpOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6dGFic1Rv
QWxsQ29udHJvbHMoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgYm9vbCBoYW5k
bGluZ09wdGlvblRhYiA9IGlzS2V5Ym9hcmRPcHRpb25UYWIoZXZlbnQpOworICAgIAorICAgIHJl
dHVybiBoYW5kbGluZ09wdGlvblRhYjsKK30KKwordm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlw
Ym9hcmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXZlbnRIYW5kbGVy
Ojpmb2N1c0RvY3VtZW50VmlldygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9v
bCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGNvbnN0IE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQoreworICAgIC8vIEZpZ3VyZSBvdXQg
d2hpY2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KKyAgICBSZW5kZXJPYmplY3QqIHRhcmdl
dCA9IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+cmVuZGVyZXIoKSA6
IDA7CisgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+aXNXaWRnZXQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIC8vIERvdWJsZS1jbGljayBldmVudHMgZG9uJ3QgZXhpc3Qg
aW4gQ29jb2EuIFNpbmNlIHBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0IHdpbGwKKyAg
ICAvLyBqdXN0IHBhc3MgY3VycmVudEV2ZW50IGRvd24gdG8gdGhlIHdpZGdldCwgd2UgZG9uJ3Qg
d2FudCB0byBjYWxsIGl0IGZvciBldmVudHMgdGhhdAorICAgIC8vIGRvbid0IGNvcnJlc3BvbmQg
dG8gQ29jb2EgZXZlbnRzLiAgVGhlIG1vdXNlZG93bi91cHMgd2lsbCBoYXZlIGFscmVhZHkgYmVl
biBwYXNzZWQgb24gYXMKKyAgICAvLyBwYXJ0IG9mIHRoZSBwcmVzc2VkL3JlbGVhc2VkIGhhbmRs
aW5nLgorICAgIHJldHVybiBwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChzdGF0aWNfY2FzdDxS
ZW5kZXJXaWRnZXQqPih0YXJnZXQpLT53aWRnZXQoKSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldChSZW5kZXJXaWRnZXQqIHJlbmRlcldp
ZGdldCkKK3sKKyAgICByZXR1cm4gcGFzc01vdXNlRG93bkV2ZW50VG9XaWRnZXQocmVuZGVyV2lk
Z2V0LT53aWRnZXQoKSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZl
bnRUb1dpZGdldChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICAvLyBGSVhNRTogdGhpcyBtZXRob2Qg
YWx3YXlzIHJldHVybnMgdHJ1ZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6bGFzdEV2ZW50SXNNb3VzZVVwKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKyAgICAKK2Jv
b2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQm
IGZsb2F0RHJhZ1ZpZXdwb3J0TG9jYXRpb24pIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVEcmFn
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlTW91c2VVcChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6
cGFzc1doZWVsRXZlbnRUb1dpZGdldChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gQ2FsbGVkIGFzIHdlIHdhbGsgdXAg
dGhlIGVsZW1lbnQgY2hhaW4gZm9yIG5vZGVzIHdpdGggQ1NTIHByb3BlcnR5IC13ZWJraXQtdXNl
ci1kcmFnID09IGF1dG8KK2Jvb2wgRXZlbnRIYW5kbGVyOjpzaG91bGREcmFnQXV0b05vZGUoTm9k
ZSogbm9kZSwgY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyByZXR1cm5zIGlmIHdlIHNob3VsZCBj
b250aW51ZSAiZGVmYXVsdCBwcm9jZXNzaW5nIiwgaS5lLiwgd2hldGhlciBldmVudGhhbmRsZXIg
Y2FuY2VsZWQKK2Jvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaERyYWdTcmNFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBF
dmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIHJldHVybiBwYXNz
U3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7Cit9CisKK2Jvb2wgRXZlbnRI
YW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIHJldHVybiBwYXNzU3ViZnJh
bWVFdmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVy
OjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKQoreworICAgIHJldHVybiBwYXNzU3ViZnJhbWVF
dmVudFRvU3ViZnJhbWUobWV2LCBzdWJmcmFtZSk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpw
YXNzV2hlZWxFdmVudFRvU3ViZnJhbWUoUGxhdGZvcm1XaGVlbEV2ZW50JiwgRnJhbWUqIHN1YmZy
YW1lKQoreworICAgIHJldHVybiBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KHN1YmZyYW1lLT52aWV3
KCkpOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xs
YmFyKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmLCBQbGF0Zm9ybVNjcm9sbGJhciogc2Ny
b2xsYmFyKQoreworICAgIHJldHVybiBwYXNzV2hlZWxFdmVudFRvV2lkZ2V0KHNjcm9sbGJhcik7
Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHJldmlzaW9uIDE3ODA4KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw4IEBAIGNsYXNzIE5TTXV0YWJsZUFycmF5OwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShXSU4p
CiB0eXBlZGVmIHN0cnVjdCBITUVOVV9fKiBITUVOVTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorY2xh
c3MgUU1lbnU7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTExLDYgKzExMyw4
IEBAIHN0cnVjdCBDb250ZXh0TWVudUl0ZW0gewogdHlwZWRlZiBOU011dGFibGVBcnJheSogUGxh
dGZvcm1NZW51RGVzY3JpcHRpb247CiAjZWxpZiBQTEFURk9STShXSU4pCiB0eXBlZGVmIEhNRU5V
IFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOworI2VsaWYgUExBVEZPUk0oUVQpCit0eXBlZGVmIFFN
ZW51KiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbjsKICNlbmRpZgogCiBjbGFzcyBDb250ZXh0TWVu
dSA6IE5vbmNvcHlhYmxlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRNZW51Q2xp
ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVD
bGllbnRRdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRN
ZW51Q2xpZW50UXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50UXQuaCIKKworI2luY2x1ZGUg
PFNoYXJlZC5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2RlZmluZSBub3RJbXBsZW1lbnRl
ZCgpIGRvIHsgZnByaW50ZihzdGRlcnIsICJGSVhNRTogVU5JTVBMRU1FTlRFRDogJXM6JWQgKCVz
KVxuIiwgXAorICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IH0g
d2hpbGUoMCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordm9pZCBDb250ZXh0TWVudUNs
aWVudFF0OjphZGRDdXN0b21Db250ZXh0TWVudUl0ZW1zKENvbnRleHRNZW51KikKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6OnJlZigpCit7
CisgICAgU2hhcmVkPENvbnRleHRNZW51Q2xpZW50UXQ+OjpyZWYoKTsKK30KKwordm9pZCBDb250
ZXh0TWVudUNsaWVudFF0OjpkZXJlZigpCit7CisgICAgU2hhcmVkPENvbnRleHRNZW51Q2xpZW50
UXQ+OjpkZXJlZigpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRN
ZW51Q2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRN
ZW51Q2xpZW50UXQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4
dE1lbnVDbGllbnRRdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IENvbnRleHRNZW51Q2xpZW50UXRfaAorI2RlZmluZSBDb250ZXh0TWVudUNsaWVudFF0X2gKKwor
I2luY2x1ZGUgIkNvbnRleHRNZW51Q2xpZW50LmgiCisKKyNpbmNsdWRlIDxTaGFyZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIENvbnRleHRNZW51OworCisgICAgY2xhc3Mg
Q29udGV4dE1lbnVDbGllbnRRdCA6IHB1YmxpYyBDb250ZXh0TWVudUNsaWVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNoYXJlZDxDb250ZXh0TWVudUNsaWVudFF0
PiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGFkZEN1c3RvbUNvbnRleHRNZW51SXRlbXMoQ29udGV4dE1lbnUqKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHJlZigpOworICAgIH07Cit9CisKKyNlbmRpZgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudVF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL3F0L0NvbnRleHRNZW51UXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9xdC9Db250ZXh0TWVudVF0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorCisj
aW5jbHVkZSA8UU1lbnU+CisjaW5jbHVkZSA8UUFjdGlvbj4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAordm9pZCBDb250ZXh0TWVudTo6YXBwZW5kSXRlbShDb250ZXh0TWVudUl0ZW0gaXRl
bSkKK3sKKyAgICBpZiAoIW1fbWVudSkgeworICAgICAgICBtX21lbnUgPSBuZXcgUU1lbnUoKTsK
KyAgICB9CisgICAgUUFjdGlvbiAqYWN0aW9uICA9IG1fbWVudS0+YWRkQWN0aW9uKGl0ZW0udGl0
bGUpOworfQorCit1bnNpZ25lZCBDb250ZXh0TWVudTo6aXRlbUNvdW50KCkKK3sKKyAgICAvL0ZJ
WE1FIHRoaXMgbWV0aG9kIGlzIHNpbGx5CisgICAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgQ29udGV4
dE1lbnU6Omluc2VydEl0ZW0odW5zaWduZWQgcG9zaXRpb24sIENvbnRleHRNZW51SXRlbSBpdGVt
KQoreworICAgIC8vRklYTUUgYW5vdGhlciBzaWxseSBtZXRob2QKKyAgICBhcHBlbmRJdGVtKGl0
ZW0pOworICAgIAorfQorCit2b2lkIENvbnRleHRNZW51OjpzZXRQbGF0Zm9ybU1lbnVEZXNjcmlw
dGlvbihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51KQoreworICAgIGRlbGV0ZSBtX21lbnU7
CisgICAgbV9tZW51ID0gc3RhdGljX2Nhc3Q8UU1lbnUqPihtZW51KTsKK30KKworfQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDE3ODA4KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDkgKzMwLDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xp
ZW50UXQuaCIKIAorI2luY2x1ZGUgIkVkaXRDb21tYW5kLmgiCisKICNpbmNsdWRlIDxzdGRpby5o
PgogCi0jZGVmaW5lIG5vdEltcGxlbWVudGVkKCkgZG8geyBmcHJpbnRmKHN0ZGVyciwgIkZJWE1F
OiBVTklNUExFTUVOVEVEOiAlczolZFxuIiwgX19GSUxFX18sIF9fTElORV9fKTsgfSB3aGlsZSgw
KQorI2RlZmluZSBub3RJbXBsZW1lbnRlZCgpIGRvIHsgZnByaW50ZihzdGRlcnIsICJGSVhNRTog
VU5JTVBMRU1FTlRFRDogJXM6JWQoJXMpXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJ
T05fXyk7IH0gd2hpbGUoMCkKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDksNiArMTEx
LDU1IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmRpZEVuZEVkaXRpbmcoKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OnNlbGVjdFdvcmRCZWZvcmVNZW51
RXZlbnQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIEVkaXRvckNsaWVudFF0Ojppc0VkaXRhYmxlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0
ZXJDb21tYW5kRm9yVW5kbyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lz
dGVyQ29tbWFuZEZvclJlZG8oV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworYm9v
bCBFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbygpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblJlZG8o
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIEVkaXRvckNsaWVudFF0Ojp1bmRvKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpyZWRvKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCiB9CiAKIC8vIHZpbTogdHM9NCBzdz00IGV0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L3F0L0VkaXRvckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9F
ZGl0b3JDbGllbnRRdC5oCShyZXZpc2lvbiAxNzgwOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQv
RWRpdG9yQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsMTUgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwogCisgICAgdmlydHVhbCBib29sIHNlbGVjdFdvcmRC
ZWZvcmVNZW51RXZlbnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOworICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JVbmRvKFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpFZGl0Q29tbWFuZD4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRv
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOworICAgIHZpcnR1YWwgdm9p
ZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpOworICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZv
aWQgdW5kbygpOworICAgIHZpcnR1YWwgdm9pZCByZWRvKCk7CiB9OwogCiB9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL3F0L1Njcm9sbFZpZXdDYW52YXNRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxWaWV3Q2FudmFzUXQuY3BwCShyZXZpc2lvbiAxNzgwOCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsVmlld0NhbnZhc1F0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFZpZXdDYW52YXNRdC5oIgog
I2luY2x1ZGUgIlNjcm9sbFZpZXdDYW52YXNRdC5tb2MiCiAKKyNpbmNsdWRlICJFdmVudEhhbmRs
ZXIuaCIKICNpbmNsdWRlICJGcmFtZVF0LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAiVHlwaW5nQ29tbWFuZC5oIgpAQCAtOTAsMTAgKzkxLDEwIEBAIHZvaWQgU2Nyb2xsVmll
d0NhbnZhc1F0Ojptb3VzZU1vdmVFdmVudCgKIHZvaWQgU2Nyb2xsVmlld0NhbnZhc1F0Ojptb3Vz
ZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2KQogewogICAgIEZyYW1lVmlldyogZnYgPSBzdGF0
aWNfY2FzdDxGcmFtZVZpZXcqPihtX2ZyYW1lVmlldyk7Ci0gICAgaWYgKCFmdiB8fCAhZnYtPmZy
YW1lKCkpCisgICAgaWYgKCFmdiB8fCAhZnYtPmZyYW1lKCkgfHwgIWZ2LT5mcmFtZSgpLT5ldmVu
dEhhbmRsZXIoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnYtPmhhbmRsZU1vdXNlUHJlc3NF
dmVudChQbGF0Zm9ybU1vdXNlRXZlbnQoZXYsIDEpKTsKKyAgICBmdi0+ZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCktPmhhbmRsZU1vdXNlUHJlc3NFdmVudChQbGF0Zm9ybU1vdXNlRXZlbnQoZXYsIDEp
KTsKIH0KIAogdm9pZCBTY3JvbGxWaWV3Q2FudmFzUXQ6Om1vdXNlUmVsZWFzZUV2ZW50KFFNb3Vz
ZUV2ZW50KiBldikKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVi
cy5jcHAJKHJldmlzaW9uIDE3ODA4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAi
V2lkZ2V0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiVGV4dEZp
ZWxkLmgiCi0jaW5jbHVkZSAiU2xpZGVyLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCiAjaW5jbHVk
ZSAibG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC02NCw3ICs2Myw4IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi0jZGVmaW5lIG5vdEltcGxlbWVudGVkKCkgZG8g
eyBmcHJpbnRmKHN0ZGVyciwgIkZJWE1FOiBVTklNUExFTUVOVEVEOiAlczolZFxuIiwgX19GSUxF
X18sIF9fTElORV9fKTsgfSB3aGlsZSgwKQorI2RlZmluZSBub3RJbXBsZW1lbnRlZCgpIGRvIHsg
ZnByaW50ZihzdGRlcnIsICJGSVhNRTogVU5JTVBMRU1FTlRFRDogJXM6JWQgKCVzKVxuIiwgXAor
ICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IH0gd2hpbGUoMCkK
IAogRmxvYXRSZWN0IEZvbnQ6OnNlbGVjdGlvblJlY3RGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0
UnVuJiwgY29uc3QgVGV4dFN0eWxlJiwgY29uc3QgSW50UG9pbnQmLCBpbnQpIGNvbnN0IHsgbm90
SW1wbGVtZW50ZWQoKTsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CiBpbnQgRm9udDo6b2Zmc2V0Rm9y
UG9zaXRpb25Gb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiwgY29uc3QgVGV4dFN0eWxlJiwg
aW50LCBib29sKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9CkBAIC0xMDgs
MTYgKzEwOCw2IEBAIEludFNpemUgVGV4dEZpZWxkOjpzaXplRm9yQ2hhcmFjdGVyV2lkdGgKIGlu
dCBUZXh0RmllbGQ6OmJhc2VsaW5lUG9zaXRpb24oaW50KSBjb25zdCB7IG5vdEltcGxlbWVudGVk
KCk7IHJldHVybiAwOyB9CiB2b2lkIFRleHRGaWVsZDo6c2V0TGl2ZVNlYXJjaChib29sKSB7IG5v
dEltcGxlbWVudGVkKCk7IH0KIAotU2xpZGVyOjpTbGlkZXIoKSB7IG5vdEltcGxlbWVudGVkKCk7
IH0KLUludFNpemUgU2xpZGVyOjpzaXplSGludCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsg
cmV0dXJuIEludFNpemUoKTsgfQotU2xpZGVyOjp+U2xpZGVyKCkgeyBub3RJbXBsZW1lbnRlZCgp
OyB9Ci12b2lkIFNsaWRlcjo6c2V0VmFsdWUoZG91YmxlKSB7IG5vdEltcGxlbWVudGVkKCk7IH0K
LXZvaWQgU2xpZGVyOjpzZXRNYXhWYWx1ZShkb3VibGUpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQot
dm9pZCBTbGlkZXI6OnNldE1pblZhbHVlKGRvdWJsZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12
b2lkIFNsaWRlcjo6c2V0Rm9udChXZWJDb3JlOjpGb250IGNvbnN0JikgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9Ci1kb3VibGUgU2xpZGVyOjp2YWx1ZSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsg
cmV0dXJuIDA7IH0KLVdpZGdldDo6Rm9jdXNQb2xpY3kgU2xpZGVyOjpmb2N1c1BvbGljeSgpIGNv
bnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIE5vRm9jdXM7IH0KLQogU2Nyb2xsYmFyOjpT
Y3JvbGxiYXIoU2Nyb2xsYmFyQ2xpZW50KiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbGJh
ckNvbnRyb2xTaXplKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIHZvaWQgU2Nyb2xsYmFyOjpzZXRT
dGVwcyhpbnQsIGludCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiBib29sIFNjcm9sbGJhcjo6c2Ny
b2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0KSB7IG5vdEltcGxl
bWVudGVkKCk7IHJldHVybiAwOyB9CkBAIC0xNjAsMTEgKzE1MCw2IEBAIEZsb2F0UmVjdCBXZWJD
b3JlOjpzY3JlZW5BdmFpbGFibGVSZWN0KFcKIHZvaWQgV2ViQ29yZTo6c2V0Rm9jdXNSaW5nQ29s
b3JDaGFuZ2VGdW5jdGlvbih2b2lkICgqKSgpKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIAogdm9p
ZCBGcmFtZVZpZXc6OnVwZGF0ZUJvcmRlcigpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotYm9vbCBG
cmFtZVZpZXc6OnBhc3NNb3VzZVByZXNzRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKSB7IHJldHVybiB0cnVlOyB9Ci1ib29s
IEZyYW1lVmlldzo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhp
dFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkgeyByZXR1cm4gdHJ1ZTsgfQotYm9v
bCBGcmFtZVZpZXc6OnBhc3NNb3VzZVJlbGVhc2VFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdp
dGhIaXRUZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpIHsgcmV0dXJuIHRydWU7IH0K
LWJvb2wgRnJhbWVWaWV3OjpwYXNzV2hlZWxFdmVudFRvU3ViZnJhbWUoUGxhdGZvcm1XaGVlbEV2
ZW50JiBlLCBGcmFtZSogc3ViZnJhbWUpIHsgcmV0dXJuIGZhbHNlOyB9Ci1ib29sIEZyYW1lVmll
dzo6cGFzc01vdXNlUHJlc3NFdmVudFRvU2Nyb2xsYmFyKE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMmIG1ldiwgUGxhdGZvcm1TY3JvbGxiYXIqKSB7IHJldHVybiBmYWxzZTsgfQogCiBib29s
IEFYT2JqZWN0Q2FjaGU6OmdBY2Nlc3NpYmlsaXR5RW5hYmxlZCA9IGZhbHNlOwogCkluZGV4OiBX
ZWJLaXRRdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0UXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNzgwOCkKKysrIFdlYktpdFF0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDA2LTExLTE2ICBaYWNrIFJ1c2luICA8emFja0BrZGUub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJQWRqdXN0aW5nIHRvIHRoZSBuZXcg
YXBpLgorCisgICAgICAgICogUXRMYXVuY2hlci9tYWluLmNwcDoKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIFdlYktpdFBhcnQvV2ViS2l0UGFydC5jcHA6CisgICAgICAgIChXZWJLaXRQYXJ0
Ojppbml0Vmlldyk6CisKIDIwMDYtMTEtMTAgIFphY2sgUnVzaW4gIDx6YWNrQGtkZS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYW5kIGxhbmRlZCBieSBBbmRlcnMuCkluZGV4OiBXZWJLaXRRdC9R
dExhdW5jaGVyL21haW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFF0L1F0TGF1bmNoZXIvbWFp
bi5jcHAJKHJldmlzaW9uIDE3ODA4KQorKysgV2ViS2l0UXQvUXRMYXVuY2hlci9tYWluLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPERvY3VtZW50Lmg+CiAj
aW5jbHVkZSA8RnJhbWVWaWV3Lmg+CiAjaW5jbHVkZSA8Q2hyb21lQ2xpZW50UXQuaD4KKyNpbmNs
dWRlIDxDb250ZXh0TWVudUNsaWVudFF0Lmg+CiAjaW5jbHVkZSA8S1VSTC5oPgogCiAjaW5jbHVk
ZSA8RnJhbWVRdC5oPgpAQCAtODIsNyArODMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq
KmFyZ3YpCiAgICAgUUJveExheW91dCAqbCA9IG5ldyBRVkJveExheW91dCgmdG9wTGV2ZWwpOwog
IAogICAgIC8vIEluaXRpYWxpemUgV2ViQ29yZSBpbiBRdCBwbGF0Zm9ybSBtb2RlLi4uCi0gICAg
UGFnZSogcGFnZSA9IG5ldyBQYWdlKG5ldyBDaHJvbWVDbGllbnRRdCgpKTsKKyAgICBQYWdlKiBw
YWdlID0gbmV3IFBhZ2UobmV3IENocm9tZUNsaWVudFF0KCksIG5ldyBDb250ZXh0TWVudUNsaWVu
dFF0KCkpOwogICAgIEZyYW1lKiBmcmFtZSA9IG5ldyBGcmFtZVF0KHBhZ2UsIDAsIG5ldyBGcmFt
ZVF0Q2xpZW50RGVmYXVsdCgpKTsKIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbmV3IEZy
YW1lVmlldyhmcmFtZSk7CkluZGV4OiBXZWJLaXRRdC9XZWJLaXRQYXJ0L1dlYktpdFBhcnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFF0L1dlYktpdFBhcnQvV2ViS2l0UGFydC5jcHAJKHJldmlz
aW9uIDE3ODA4KQorKysgV2ViS2l0UXQvV2ViS2l0UGFydC9XZWJLaXRQYXJ0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
WmFjayBSdXNpbiA8emFja0BrZGUub3JnPgogICoKICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgpAQCAtMzEsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKKyNpbmNsdWRlICJDb250
ZXh0TWVudUNsaWVudFF0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogCiAjaW5jbHVkZSA8UURlYnVn
PgpAQCAtMTA0LDcgKzEwNiw3IEBAIHZvaWQgV2ViS2l0UGFydDo6aW5pdFZpZXcoUVdpZGdldCog
cGFyZW4KICAgICBtX2NsaWVudCA9IG5ldyBXZWJLaXRQYXJ0Q2xpZW50KHRoaXMpOwogIAogICAg
IC8vIEluaXRpYWxpemUgV2ViQ29yZSBpbiBRdCBwbGF0Zm9ybSBtb2RlLi4uCi0gICAgUGFnZSog
cGFnZSA9IG5ldyBQYWdlKG5ldyBDaHJvbWVDbGllbnRRdCgpKTsKKyAgICBQYWdlKiBwYWdlID0g
bmV3IFBhZ2UobmV3IENocm9tZUNsaWVudFF0KCksIG5ldyBDb250ZXh0TWVudUNsaWVudFF0KCkp
OwogICAgIEZyYW1lKiBmcmFtZSA9IG5ldyBGcmFtZVF0KHBhZ2UsIDAsIG1fY2xpZW50KTsKIAog
ICAgIG1fZnJhbWUgPSBmcmFtZTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODA4KQorKysgV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDYtMTEt
MTYgIFphY2sgUnVzaW4gIDx6YWNrQGtkZS5vcmc+CisKKyAgICAgICAgRml4aW5nIGNvbXBpbGF0
aW9uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUucXRwcm9qL0R1
bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpEdW1w
UmVuZGVyVHJlZSk6IEFkZGluZworICAgICAgICBDb250ZXh0TWVudUNsaWVudCB0byB0aGUgY29u
c3RydWN0b3IKKwogMjAwNi0xMS0xMiAgTWFyayBSb3dlICA8YmRhc2hAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBNaXR6LgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvRHVtcFJlbmRlclRyZWUucXRwcm9qL0R1bXBSZW5kZXJUcmVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5xdHByb2ovRHVtcFJl
bmRlclRyZWUuY3BwCShyZXZpc2lvbiAxNzgwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLnF0cHJvai9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUg
IlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRRdC5oIgorI2luY2x1
ZGUgIkNvbnRleHRNZW51Q2xpZW50UXQuaCIKIAogI2luY2x1ZGUgPFFEaXI+CiAjaW5jbHVkZSA8
UUZpbGU+CkBAIC02MSw3ICs2Miw3IEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgp
CiAgICAgLCBtX25vdGlmaWVyKCkKIHsKICAgICAvLyBJbml0aWFsaXplIFdlYkNvcmUgaW4gUXQg
cGxhdGZvcm0gbW9kZS4uLgotICAgIFBhZ2UqIHBhZ2UgPSBuZXcgUGFnZShuZXcgQ2hyb21lQ2xp
ZW50UXQoKSk7CisgICAgUGFnZSogcGFnZSA9IG5ldyBQYWdlKG5ldyBDaHJvbWVDbGllbnRRdCgp
LCBuZXcgQ29udGV4dE1lbnVDbGllbnRRdCgpKTsKICAgICBtX2ZyYW1lID0gbmV3IEZyYW1lUXQo
cGFnZSwgMCwgbV9jbGllbnQpOwogCiAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbmV3IEZyYW1lVmll
dyhtX2ZyYW1lKTsK
</data>
<flag name="review"
          id="4095"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11546</attachid>
            <date>2006-11-17 01:47:05 -0800</date>
            <delta_ts>2006-11-17 11:17:22 -0800</delta_ts>
            <desc>adds some more compilation fixes</desc>
            <filename>webk1.diff</filename>
            <type>text/plain</type>
            <size>29885</size>
            <attacher name="Zack Rusin">zack</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTc4MjUpCisrKyBXZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoCiAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vbG9hZGVyL2ljb24KICAgICR7Q01BS0VfQ1VSUkVO
VF9TT1VSQ0VfRElSfS9sb2FkZXIvcXQKICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9w
YWdlCisgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGFnZS9xdAogICAgJHtDTUFLRV9D
VVJSRU5UX0JJTkFSWV9ESVJ9L3BsYXRmb3JtCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vcGxhdGZvcm0gCiAgICAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vcGxhdGZvcm0vZ3Jh
cGhpY3MKQEAgLTk2OSwxOCArOTcwLDIyIEBAIHNldChXZWJDb3JlX1NSQ1MKICAgICBsb2FkZXIv
cXQvUmVzb3VyY2VMb2FkZXJRdC5jcHAKIAogICAgIHBhZ2UvQ2hyb21lLmNwcAorICAgIHBhZ2Uv
Q29udGV4dE1lbnVDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvRE9NV2luZG93LmNwcAorICAgIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcCAgIAogICAgIHBhZ2UvRnJhbWUuY3BwCiAgICAgcGFnZS9GcmFt
ZVRyZWUuY3BwCiAgICAgcGFnZS9GcmFtZVZpZXcuY3BwCiAgICAgcGFnZS9Nb3VzZUV2ZW50V2l0
aEhpdFRlc3RSZXN1bHRzLmNwcAogICAgIHBhZ2UvUGFnZS5jcHAKLSAgICBwYWdlL1BhZ2VTdGF0
ZS5jcHAgICAgCisgICAgcGFnZS9QYWdlU3RhdGUuY3BwCisgICAgcGFnZS9xdC9FdmVudEhhbmRs
ZXJRdC5jcHAgICAKIAogICAgIHBsYXRmb3JtL0FyZW5hLmNwcAogICAgIHBsYXRmb3JtL0FycmF5
SW1wbC5jcHAKICAgICBwbGF0Zm9ybS9BdG9taWNTdHJpbmcuY3BwCiAgICAgcGxhdGZvcm0vQ1N0
cmluZy5jcHAKKyAgICBwbGF0Zm9ybS9Db250ZXh0TWVudS5jcHAKICAgICBwbGF0Zm9ybS9EZXBy
ZWNhdGVkQ1N0cmluZy5jcHAKICAgICBwbGF0Zm9ybS9EZXByZWNhdGVkUHRyTGlzdEltcGwuY3Bw
CiAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZFN0cmluZy5jcHAKQEAgLTExMDgsMTAgKzExMTMsMTEg
QEAgc2V0KFdlYkNvcmVfU1JDUwogICAgIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5k
bGVRdC5jcHAKICAgICAKICAgICBwbGF0Zm9ybS9xdC9DaHJvbWVDbGllbnRRdC5jcHAKKyAgICBw
bGF0Zm9ybS9xdC9Db250ZXh0TWVudUNsaWVudFF0LmNwcAorICAgIHBsYXRmb3JtL3F0L0NvbnRl
eHRNZW51UXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCiAgICAgcGxhdGZv
cm0vcXQvQ3Vyc29yUXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvRWRpdG9yQ2xpZW50UXQuY3BwCi0j
ICAgcGxhdGZvcm0vcXQvRmlsZUJ1dHRvblF0LmNwcAogICAgIHBsYXRmb3JtL3F0L0ZpbGVDaG9v
c2VyUXQuY3BwCiAgICAgcGxhdGZvcm0vcXQvRm9udENhY2hlUXQuY3BwCiAgICAgcGxhdGZvcm0v
cXQvRm9udERhdGFRdC5jcHAKQEAgLTExNjcsNyArMTE3Myw2IEBAIHNldChXZWJDb3JlX1NSQ1MK
ICAgICByZW5kZXJpbmcvYnJlYWtfbGluZXMuY3BwCiAgICAgcmVuZGVyaW5nL0NvdW50ZXJOb2Rl
LmNwcAogICAgIHJlbmRlcmluZy9Db3VudGVyUmVzZXROb2RlLmNwcAotICAgIHJlbmRlcmluZy9E
ZXByZWNhdGVkU2xpZGVyLmNwcAogICAgIHJlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAKICAgICBy
ZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKICAgICByZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAKQEAgLTEyMDUsNiArMTIxMCw3IEBAIHNldChXZWJDb3JlX1NSQ1MKICAgICByZW5kZXJp
bmcvUmVuZGVyUGFydC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyUGFydE9iamVjdC5jcHAKICAg
ICByZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCisgICAgcmVuZGVyaW5nL1JlbmRlclNsaWRl
ci5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyU3R5bGUuY3BwCiAgICAgcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKICAgICByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkluZGV4OiBX
ZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTc4MjUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDYyIEBACisyMDA2LTExLTE3ICBaYWNrIFJ1c2luICA8emFja0BrZGUub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2luZyBwbGF0Zm9ybSBR
dC9LREUgY29tcGlsZSBhbmQgd29yayBhZnRlcgorICAgICAgICB0aGUgbGF0ZXN0IGFwaSBjaGFu
Z2VzLiBSZXBvcnRlZCBhcworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTYxNworCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcGFn
ZS9xdC9FdmVudEhhbmRsZXJRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNLZXli
b2FyZE9wdGlvblRhYik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnRhYnNUb0xp
bmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6dGFic1RvQWxsQ29udHJvbHMp
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpmcmVlQ2xpcGJvYXJkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdldCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3VzZURvd25FdmVudFRvV2lk
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6bGFzdEV2ZW50SXNNb3VzZVVw
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVVwKToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1dpZGdldCk6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNob3VsZERyYWdBdXRvTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ1NyY0V2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUHJlc3NFdmVudFRvU3ViZnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VNb3ZlRXZlbnRUb1N1YmZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50
VG9TdWJmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2
ZW50VG9TdWJmcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NNb3Vz
ZVByZXNzRXZlbnRUb1Njcm9sbGJhcik6CisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VDbGlwcGVy
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAp
OgorICAgICAgICAqIHBsYXRmb3JtL3F0L0NvbnRleHRNZW51Q2xpZW50UXQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OmFkZEN1c3RvbUNvbnRleHRN
ZW51SXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDbGllbnRRdDo6cmVmKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50UXQ6OmRlcmVmKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9Db250ZXh0TWVudUNsaWVudFF0Lmg6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL3F0L0NvbnRleHRNZW51UXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRleHRNZW51OjphcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Ojpp
dGVtQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6Omluc2VydEl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnU6OnNldFBsYXRmb3JtTWVudURlc2NyaXB0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbnVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aXNFZGl0YWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yVW5kbyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJDb21tYW5kRm9yUmVkbyk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yQ2xpZW50UXQ6OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xp
ZW50UXQ6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZG8pOgor
ICAgICAgICAqIHBsYXRmb3JtL3F0L0VkaXRvckNsaWVudFF0Lmg6CisgICAgICAgICogcGxhdGZv
cm0vcXQvU2Nyb2xsVmlld0NhbnZhc1F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXdDYW52YXNRdDo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZW1w
b3JhcnlMaW5rU3R1YnMuY3BwOgorICAgICAgICAoRnJhbWVWaWV3Ojp1cGRhdGVCb3JkZXIpOgor
CiAyMDA2LTExLTE2ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBhbmQgbGFuZGVkIGJ5IEJyYWR5CkluZGV4OiBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVy
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvcXQvRXZlbnRIYW5kbGVyUXQuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNr
IFJ1c2luIDx6YWNrQGtkZS5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJFdmVudEhhbmRsZXIuaCIKKworI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lUXQuaCIKKyNpbmNs
dWRlICJGcmFtZVRyZWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJIVE1M
RnJhbWVTZXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlcXVlc3QuaCIKKyNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUg
Ik1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JvbGxC
YXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJX
aWRnZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgRXZlbnRO
YW1lczsKKworI2RlZmluZSBub3RJbXBsZW1lbnRlZCgpIGRvIHsgZnByaW50ZihzdGRlcnIsICJG
SVhNRTogVU5JTVBMRU1FTlRFRDogJXM6JWQgKCVzKVxuIiwgXAorICAgICAgICAgICBfX0ZJTEVf
XywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7IH0gd2hpbGUoMCkKKworc3RhdGljIGJvb2wgaXNL
ZXlib2FyZE9wdGlvblRhYihLZXlib2FyZEV2ZW50KiBldmVudCkKK3sKKyAgICByZXR1cm4gZXZl
bnQKKyAgICAgICAgJiYgKGV2ZW50LT50eXBlKCkgPT0ga2V5ZG93bkV2ZW50IHx8IGV2ZW50LT50
eXBlKCkgPT0ga2V5cHJlc3NFdmVudCkKKyAgICAgICAgJiYgZXZlbnQtPmFsdEtleSgpCisgICAg
ICAgICYmIGV2ZW50LT5rZXlJZGVudGlmaWVyKCkgPT0gIlUrMDAwMDA5IjsKK30KKworYm9vbCBF
dmVudEhhbmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAorewor
ICAgIHJldHVybiBpc0tleWJvYXJkT3B0aW9uVGFiKGV2ZW50KTsKK30KKworYm9vbCBFdmVudEhh
bmRsZXI6OnRhYnNUb0FsbENvbnRyb2xzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAorewor
ICAgIGJvb2wgaGFuZGxpbmdPcHRpb25UYWIgPSBpc0tleWJvYXJkT3B0aW9uVGFiKGV2ZW50KTsK
KyAgICAKKyAgICByZXR1cm4gaGFuZGxpbmdPcHRpb25UYWI7Cit9CisKK3ZvaWQgRXZlbnRIYW5k
bGVyOjpmcmVlQ2xpcGJvYXJkKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dp
ZGdldChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKK3sKKyAgICAv
LyBGaWd1cmUgb3V0IHdoaWNoIHZpZXcgdG8gc2VuZCB0aGUgZXZlbnQgdG8uCisgICAgUmVuZGVy
T2JqZWN0KiB0YXJnZXQgPSBldmVudC50YXJnZXROb2RlKCkgPyBldmVudC50YXJnZXROb2RlKCkt
PnJlbmRlcmVyKCkgOiAwOworICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmlzV2lkZ2V0KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBEb3VibGUtY2xpY2sgZXZlbnRz
IGRvbid0IGV4aXN0IGluIENvY29hLiBTaW5jZSBwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dp
ZGdldCB3aWxsCisgICAgLy8ganVzdCBwYXNzIGN1cnJlbnRFdmVudCBkb3duIHRvIHRoZSB3aWRn
ZXQsIHdlIGRvbid0IHdhbnQgdG8gY2FsbCBpdCBmb3IgZXZlbnRzIHRoYXQKKyAgICAvLyBkb24n
dCBjb3JyZXNwb25kIHRvIENvY29hIGV2ZW50cy4gIFRoZSBtb3VzZWRvd24vdXBzIHdpbGwgaGF2
ZSBhbHJlYWR5IGJlZW4gcGFzc2VkIG9uIGFzCisgICAgLy8gcGFydCBvZiB0aGUgcHJlc3NlZC9y
ZWxlYXNlZCBoYW5kbGluZy4KKyAgICByZXR1cm4gcGFzc01vdXNlRG93bkV2ZW50VG9XaWRnZXQo
c3RhdGljX2Nhc3Q8UmVuZGVyV2lkZ2V0Kj4odGFyZ2V0KS0+d2lkZ2V0KCkpOworfQorCitib29s
IEV2ZW50SGFuZGxlcjo6cGFzc1dpZGdldE1vdXNlRG93bkV2ZW50VG9XaWRnZXQoUmVuZGVyV2lk
Z2V0KiByZW5kZXJXaWRnZXQpCit7CisgICAgcmV0dXJuIHBhc3NNb3VzZURvd25FdmVudFRvV2lk
Z2V0KHJlbmRlcldpZGdldC0+d2lkZ2V0KCkpOworfQorCitib29sIEV2ZW50SGFuZGxlcjo6cGFz
c01vdXNlRG93bkV2ZW50VG9XaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgLy8gRklYTUU6
IHRoaXMgbWV0aG9kIGFsd2F5cyByZXR1cm5zIHRydWUKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6Omxhc3RFdmVudElzTW91
c2VVcCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisgICAgCitib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25z
dCBGbG9hdFBvaW50JiBmbG9hdERyYWdWaWV3cG9ydExvY2F0aW9uKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEV2ZW50SGFuZGxl
cjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlVXAoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVz
dWx0cyYgZXZlbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJh
bWUoTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIEZyYW1lKiBzdWJmcmFtZSkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBF
dmVudEhhbmRsZXI6OnBhc3NXaGVlbEV2ZW50VG9XaWRnZXQoV2lkZ2V0KiB3aWRnZXQpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIENhbGxlZCBh
cyB3ZSB3YWxrIHVwIHRoZSBlbGVtZW50IGNoYWluIGZvciBub2RlcyB3aXRoIENTUyBwcm9wZXJ0
eSAtd2Via2l0LXVzZXItZHJhZyA9PSBhdXRvCitib29sIEV2ZW50SGFuZGxlcjo6c2hvdWxkRHJh
Z0F1dG9Ob2RlKE5vZGUqIG5vZGUsIGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gcmV0dXJucyBp
ZiB3ZSBzaG91bGQgY29udGludWUgImRlZmF1bHQgcHJvY2Vzc2luZyIsIGkuZS4sIHdoZXRoZXIg
ZXZlbnRoYW5kbGVyIGNhbmNlbGVkCitib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hEcmFnU3Jj
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK3sKKyAg
ICByZXR1cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOworfQor
Citib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlTW92ZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2
ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK3sKKyAgICByZXR1
cm4gcGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOworfQorCitib29s
IEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlUmVsZWFzZUV2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkKK3sKKyAgICByZXR1cm4g
cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldiwgc3ViZnJhbWUpOworfQorCitib29sIEV2
ZW50SGFuZGxlcjo6cGFzc1doZWVsRXZlbnRUb1N1YmZyYW1lKFBsYXRmb3JtV2hlZWxFdmVudCYs
IEZyYW1lKiBzdWJmcmFtZSkKK3sKKyAgICByZXR1cm4gcGFzc1doZWVsRXZlbnRUb1dpZGdldChz
dWJmcmFtZS0+dmlldygpKTsKK30KKworYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NNb3VzZVByZXNz
RXZlbnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiwgUGxhdGZvcm1T
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICByZXR1cm4gcGFzc1doZWVsRXZlbnRUb1dpZGdl
dChzY3JvbGxiYXIpOworfQorCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCShyZXZpc2lv
biAxNzgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNiArMzcsOCBAQCBjbGFzcyBOU011dGFibGVBcnJheTsKICNlbmRpZgogI2VsaWYg
UExBVEZPUk0oV0lOKQogdHlwZWRlZiBzdHJ1Y3QgSE1FTlVfXyogSE1FTlU7CisjZWxpZiBQTEFU
Rk9STShRVCkKK2NsYXNzIFFNZW51OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTExMSw2ICsxMTMsOCBAQCBzdHJ1Y3QgQ29udGV4dE1lbnVJdGVtIHsKIHR5cGVkZWYgTlNNdXRh
YmxlQXJyYXkqIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uOwogI2VsaWYgUExBVEZPUk0oV0lOKQog
dHlwZWRlZiBITUVOVSBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbjsKKyNlbGlmIFBMQVRGT1JNKFFU
KQordHlwZWRlZiBRTWVudSogUGxhdGZvcm1NZW51RGVzY3JpcHRpb247CiAjZW5kaWYKIAogY2xh
c3MgQ29udGV4dE1lbnUgOiBOb25jb3B5YWJsZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdmcvcXQvU1ZHUmVzb3VyY2VDbGlwcGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3ZnL3F0L1NWR1Jlc291cmNlQ2xpcHBlclF0LmNwcAkocmV2
aXNpb24gMTc4MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N2Zy9xdC9TVkdSZXNv
dXJjZUNsaXBwZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgdm9pZCBT
VkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcChjb25zdAogewogICAgIEtSZW5kZXJpbmdEZXZp
Y2VDb250ZXh0KiBjb250ZXh0ID0gcmVuZGVyaW5nRGV2aWNlKCktPmN1cnJlbnRDb250ZXh0KCk7
CiAgICAgS1JlbmRlcmluZ0RldmljZUNvbnRleHRRdCogcXRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8
S1JlbmRlcmluZ0RldmljZUNvbnRleHRRdCo+KGNvbnRleHQpOwotICAgIGlmIChtX2NsaXBEYXRh
LmNvdW50KCkgPCAxKQorICAgIGlmIChtX2NsaXBEYXRhLmNsaXBEYXRhKCkuc2l6ZSgpIDwgMSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgY29udGV4dC0+Y2xlYXJQYXRoKCk7CkBAIC00MiwxMCAr
NDIsMTEgQEAgdm9pZCBTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcChjb25zdAogICAgIFFQ
YWludGVyUGF0aCBuZXdQYXRoOwogCiAgICAgYm9vbCBoZXRlcm9nZW5vdXNDbGlwUnVsZXMgPSBm
YWxzZTsKLSAgICBXaW5kUnVsZSBjbGlwUnVsZSA9IG1fY2xpcERhdGFbMF0ud2luZFJ1bGU7Cisg
ICAgV2luZFJ1bGUgY2xpcFJ1bGUgPSBtX2NsaXBEYXRhLmNsaXBEYXRhKClbMF0ud2luZFJ1bGU7
CiAKLSAgICBmb3IgKHVuc2lnbmVkIGludCB4ID0gMDsgeCA8IG1fY2xpcERhdGEuY291bnQoKTsg
eCsrKSB7Ci0gICAgICAgIENsaXBEYXRhIGNsaXBEYXRhID0gbV9jbGlwRGF0YVt4XTsKKyAgICB1
bnNpZ25lZCBpbnQgY2xpcERhdGFDb3VudCA9IG1fY2xpcERhdGEuY2xpcERhdGEoKS5zaXplKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpbnQgeCA9IDA7IHggPCBjbGlwRGF0YUNvdW50OyB4KyspIHsK
KyAgICAgICAgQ2xpcERhdGEgY2xpcERhdGEgPSBtX2NsaXBEYXRhLmNsaXBEYXRhKClbeF07CiAg
ICAgICAgIGlmIChjbGlwRGF0YS53aW5kUnVsZSAhPSBjbGlwUnVsZSkKICAgICAgICAgICAgIGhl
dGVyb2dlbm91c0NsaXBSdWxlcyA9IHRydWU7CiAKQEAgLTk5LDcgKzEwMCw3IEBAIHZvaWQgU1ZH
UmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAoY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChtX2NsaXBEYXRhLmNvdW50KCkpIHsKKyAgICBpZiAobV9jbGlwRGF0YS5jbGlwRGF0YSgp
LnNpemUoKSkgewogICAgICAgICAvLyBGSVhNRSEKICAgICAgICAgLy8gV2UgZG9uJ3QgY3VycmVu
dGx5IGFsbG93IGZvciBoZXRlcm9nZW5vdXMgY2xpcCBydWxlcy4KICAgICAgICAgLy8gd2Ugd291
bGQgaGF2ZSB0byBkZXRlY3Qgc3VjaCwgZHJhdyB0byBhIG1hc2ssIGFuZCB0aGVuIGNsaXAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUNsaWVudFF0LmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFj
ayBSdXNpbiA8emFja0BrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ29udGV4dE1lbnVDbGllbnRRdC5oIgorCisjaW5jbHVkZSAiU2hhcmVkLmgiCisKKyNpbmNs
dWRlIDxzdGRpby5oPgorCisjZGVmaW5lIG5vdEltcGxlbWVudGVkKCkgZG8geyBmcHJpbnRmKHN0
ZGVyciwgIkZJWE1FOiBVTklNUExFTUVOVEVEOiAlczolZCAoJXMpXG4iLCBcCisgICAgICAgICAg
IF9fRklMRV9fLCBfX0xJTkVfXywgX19GVU5DVElPTl9fKTsgfSB3aGlsZSgwKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCit2b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6OmFkZEN1c3RvbUNv
bnRleHRNZW51SXRlbXMoQ29udGV4dE1lbnUqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgQ29udGV4dE1lbnVDbGllbnRRdDo6cmVmKCkKK3sKKyAgICBTaGFyZWQ8Q29udGV4
dE1lbnVDbGllbnRRdD46OnJlZigpOworfQorCit2b2lkIENvbnRleHRNZW51Q2xpZW50UXQ6OmRl
cmVmKCkKK3sKKyAgICBTaGFyZWQ8Q29udGV4dE1lbnVDbGllbnRRdD46OmRlcmVmKCk7Cit9CisK
K30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4dE1lbnVDbGllbnRRdC5oCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db250ZXh0TWVudUNsaWVudFF0LmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFj
ayBSdXNpbiA8emFja0BrZGUub3JnPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29udGV4dE1lbnVDbGllbnRR
dF9oCisjZGVmaW5lIENvbnRleHRNZW51Q2xpZW50UXRfaAorCisjaW5jbHVkZSAiQ29udGV4dE1l
bnVDbGllbnQuaCIKKworI2luY2x1ZGUgPFNoYXJlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgY2xhc3MgQ29udGV4dE1lbnU7CisKKyAgICBjbGFzcyBDb250ZXh0TWVudUNsaWVudFF0
IDogcHVibGljIENvbnRleHRNZW51Q2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU2hhcmVkPENvbnRleHRNZW51Q2xpZW50UXQ+IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkQ3Vz
dG9tQ29udGV4dE1lbnVJdGVtcyhDb250ZXh0TWVudSopOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVmKCk7CisgICAgfTsKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L0Nv
bnRleHRNZW51UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvQ29udGV4
dE1lbnVRdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0NvbnRleHRN
ZW51UXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCisKKyNpbmNsdWRlIDxRTWVudT4KKyNp
bmNsdWRlIDxRQWN0aW9uPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit2b2lkIENvbnRl
eHRNZW51OjphcHBlbmRJdGVtKENvbnRleHRNZW51SXRlbSBpdGVtKQoreworICAgIGlmICghbV9t
ZW51KSB7CisgICAgICAgIG1fbWVudSA9IG5ldyBRTWVudSgpOworICAgIH0KKyAgICBRQWN0aW9u
ICphY3Rpb24gID0gbV9tZW51LT5hZGRBY3Rpb24oaXRlbS50aXRsZSk7Cit9CisKK3Vuc2lnbmVk
IENvbnRleHRNZW51OjppdGVtQ291bnQoKQoreworICAgIC8vRklYTUU6IFRoaXMgbWV0aG9kIGlz
IHNpbGx5CisgICAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnU6Omluc2VydEl0ZW0o
dW5zaWduZWQgcG9zaXRpb24sIENvbnRleHRNZW51SXRlbSBpdGVtKQoreworICAgIC8vRklYTUU6
IEFub3RoZXIgc2lsbHkgbWV0aG9kCisgICAgYXBwZW5kSXRlbShpdGVtKTsKKyAgICAKK30KKwor
dm9pZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1NZW51RGVzY3JpcHRpb24oUGxhdGZvcm1NZW51
RGVzY3JpcHRpb24gbWVudSkKK3sKKyAgICBkZWxldGUgbV9tZW51OworICAgIG1fbWVudSA9IHN0
YXRpY19jYXN0PFFNZW51Kj4obWVudSk7Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
cXQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQv
RWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxNzgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
cXQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCwxMSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudFF0LmgiCiAKKyNpbmNs
dWRlICJFZGl0Q29tbWFuZC5oIgorCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAotI2RlZmluZSBub3RJ
bXBsZW1lbnRlZCgpIGRvIHsgZnByaW50ZihzdGRlcnIsICJGSVhNRTogVU5JTVBMRU1FTlRFRDog
JXM6JWRcbiIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IH0gd2hpbGUoMCkKKyNkZWZpbmUgbm90SW1w
bGVtZW50ZWQoKSBkbyB7IGZwcmludGYoc3RkZXJyLCAiRklYTUU6IFVOSU1QTEVNRU5URUQ6ICVz
OiVkKCVzKVxuIiwgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18pOyB9IHdoaWxlKDAp
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA5LDYgKzExMSw1NSBAQCB2b2lkIEVkaXRv
ckNsaWVudFF0OjpkaWRFbmRFZGl0aW5nKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiti
b29sIEVkaXRvckNsaWVudFF0OjpzZWxlY3RXb3JkQmVmb3JlTWVudUV2ZW50KCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBFZGl0b3JDbGll
bnRRdDo6aXNFZGl0YWJsZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyQ29tbWFuZEZvclVuZG8o
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21tYW5kPikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlckNvbW1hbmRGb3JSZWRv
KFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlv
bnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK2Jvb2wgRWRpdG9yQ2xpZW50UXQ6
OmNhblVuZG8oKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIEVkaXRvckNsaWVudFF0OjpjYW5SZWRvKCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFZGl0b3JDbGll
bnRRdDo6dW5kbygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBFZGl0b3JD
bGllbnRRdDo6cmVkbygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogfQogCiAvLyB2
aW06IHRzPTQgc3c9NCBldApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9FZGl0b3JDbGllbnRR
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvRWRpdG9yQ2xpZW50UXQuaAko
cmV2aXNpb24gMTc4MjUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L0VkaXRvckNsaWVudFF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJTaGFyZWQuaCIKIAorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWRpdG9yQ2xpZW50UXQgOiBwdWJsaWMgRWRpdG9y
Q2xpZW50LCBwdWJsaWMgU2hhcmVkPEVkaXRvckNsaWVudFF0PiB7CkBAIC01Niw2ICs1OCwxNSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2Vs
ZWN0V29yZEJlZm9yZU1lbnVFdmVudCgpOworICAgIHZpcnR1YWwgYm9vbCBpc0VkaXRhYmxlKCk7
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJD
b3JlOjpFZGl0Q29tbWFuZD4pOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JS
ZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IHVuZG8oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVkbygpOwogfTsKIAogfQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9TY3JvbGxWaWV3Q2FudmFzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsVmlld0NhbnZhc1F0LmNwcAkocmV2aXNpb24gMTc4MjUpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbFZpZXdDYW52YXNRdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTY3JvbGxWaWV3Q2FudmFzUXQuaCIKICNp
bmNsdWRlICJTY3JvbGxWaWV3Q2FudmFzUXQubW9jIgogCisjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVRdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1
ZGUgIlR5cGluZ0NvbW1hbmQuaCIKQEAgLTkwLDEwICs5MSwxMCBAQCB2b2lkIFNjcm9sbFZpZXdD
YW52YXNRdDo6bW91c2VNb3ZlRXZlbnQoCiB2b2lkIFNjcm9sbFZpZXdDYW52YXNRdDo6bW91c2VQ
cmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBldikKIHsKICAgICBGcmFtZVZpZXcqIGZ2ID0gc3RhdGlj
X2Nhc3Q8RnJhbWVWaWV3Kj4obV9mcmFtZVZpZXcpOwotICAgIGlmICghZnYgfHwgIWZ2LT5mcmFt
ZSgpKQorICAgIGlmICghZnYgfHwgIWZ2LT5mcmFtZSgpIHx8ICFmdi0+ZnJhbWUoKS0+ZXZlbnRI
YW5kbGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZ2LT5oYW5kbGVNb3VzZVByZXNzRXZl
bnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2LCAxKSk7CisgICAgZnYtPmZyYW1lKCktPmV2ZW50SGFu
ZGxlcigpLT5oYW5kbGVNb3VzZVByZXNzRXZlbnQoUGxhdGZvcm1Nb3VzZUV2ZW50KGV2LCAxKSk7
CiB9CiAKIHZvaWQgU2Nyb2xsVmlld0NhbnZhc1F0Ojptb3VzZVJlbGVhc2VFdmVudChRTW91c2VF
dmVudCogZXYpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMu
Y3BwCShyZXZpc2lvbiAxNzgyNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlu
a1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIldp
ZGdldC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlRleHRGaWVs
ZC5oIgotI2luY2x1ZGUgIlNsaWRlci5oIgogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUg
ImxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtNjQsNyArNjMsOCBAQAogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotI2RlZmluZSBub3RJbXBsZW1lbnRlZCgpIGRvIHsg
ZnByaW50ZihzdGRlcnIsICJGSVhNRTogVU5JTVBMRU1FTlRFRDogJXM6JWRcbiIsIF9fRklMRV9f
LCBfX0xJTkVfXyk7IH0gd2hpbGUoMCkKKyNkZWZpbmUgbm90SW1wbGVtZW50ZWQoKSBkbyB7IGZw
cmludGYoc3RkZXJyLCAiRklYTUU6IFVOSU1QTEVNRU5URUQ6ICVzOiVkICglcylcbiIsIFwKKyAg
ICAgICAgICAgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18pOyB9IHdoaWxlKDApCiAK
IEZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1
biYsIGNvbnN0IFRleHRTdHlsZSYsIGNvbnN0IEludFBvaW50JiwgaW50KSBjb25zdCB7IG5vdElt
cGxlbWVudGVkKCk7IHJldHVybiBGbG9hdFJlY3QoKTsgfQogaW50IEZvbnQ6Om9mZnNldEZvclBv
c2l0aW9uRm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYsIGNvbnN0IFRleHRTdHlsZSYsIGlu
dCwgYm9vbCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsgfQpAQCAtMTA4LDE2
ICsxMDgsNiBAQCBJbnRTaXplIFRleHRGaWVsZDo6c2l6ZUZvckNoYXJhY3RlcldpZHRoCiBpbnQg
VGV4dEZpZWxkOjpiYXNlbGluZVBvc2l0aW9uKGludCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgp
OyByZXR1cm4gMDsgfQogdm9pZCBUZXh0RmllbGQ6OnNldExpdmVTZWFyY2goYm9vbCkgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9CiAKLVNsaWRlcjo6U2xpZGVyKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9
Ci1JbnRTaXplIFNsaWRlcjo6c2l6ZUhpbnQoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJl
dHVybiBJbnRTaXplKCk7IH0KLVNsaWRlcjo6flNsaWRlcigpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQotdm9pZCBTbGlkZXI6OnNldFZhbHVlKGRvdWJsZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12
b2lkIFNsaWRlcjo6c2V0TWF4VmFsdWUoZG91YmxlKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLXZv
aWQgU2xpZGVyOjpzZXRNaW5WYWx1ZShkb3VibGUpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotdm9p
ZCBTbGlkZXI6OnNldEZvbnQoV2ViQ29yZTo6Rm9udCBjb25zdCYpIHsgbm90SW1wbGVtZW50ZWQo
KTsgfQotZG91YmxlIFNsaWRlcjo6dmFsdWUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJl
dHVybiAwOyB9Ci1XaWRnZXQ6OkZvY3VzUG9saWN5IFNsaWRlcjo6Zm9jdXNQb2xpY3koKSBjb25z
dCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBOb0ZvY3VzOyB9Ci0KIFNjcm9sbGJhcjo6U2Ny
b2xsYmFyKFNjcm9sbGJhckNsaWVudCosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJD
b250cm9sU2l6ZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIFNjcm9sbGJhcjo6c2V0U3Rl
cHMoaW50LCBpbnQpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogYm9vbCBTY3JvbGxiYXI6OnNjcm9s
bChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCkgeyBub3RJbXBsZW1l
bnRlZCgpOyByZXR1cm4gMDsgfQpAQCAtMTYwLDExICsxNTAsNiBAQCBGbG9hdFJlY3QgV2ViQ29y
ZTo6c2NyZWVuQXZhaWxhYmxlUmVjdChXCiB2b2lkIFdlYkNvcmU6OnNldEZvY3VzUmluZ0NvbG9y
Q2hhbmdlRnVuY3Rpb24odm9pZCAoKikoKSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKIHZvaWQg
RnJhbWVWaWV3Ojp1cGRhdGVCb3JkZXIoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLWJvb2wgRnJh
bWVWaWV3OjpwYXNzTW91c2VQcmVzc0V2ZW50VG9TdWJmcmFtZShNb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzJiBtZXYsIEZyYW1lKiBzdWJmcmFtZSkgeyByZXR1cm4gdHJ1ZTsgfQotYm9vbCBG
cmFtZVZpZXc6OnBhc3NNb3VzZU1vdmVFdmVudFRvU3ViZnJhbWUoTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0cyYgbWV2LCBGcmFtZSogc3ViZnJhbWUpIHsgcmV0dXJuIHRydWU7IH0KLWJvb2wg
RnJhbWVWaWV3OjpwYXNzTW91c2VSZWxlYXNlRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZlbnRXaXRo
SGl0VGVzdFJlc3VsdHMmIG1ldiwgRnJhbWUqIHN1YmZyYW1lKSB7IHJldHVybiB0cnVlOyB9Ci1i
b29sIEZyYW1lVmlldzo6cGFzc1doZWVsRXZlbnRUb1N1YmZyYW1lKFBsYXRmb3JtV2hlZWxFdmVu
dCYgZSwgRnJhbWUqIHN1YmZyYW1lKSB7IHJldHVybiBmYWxzZTsgfQotYm9vbCBGcmFtZVZpZXc6
OnBhc3NNb3VzZVByZXNzRXZlbnRUb1Njcm9sbGJhcihNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBtZXYsIFBsYXRmb3JtU2Nyb2xsYmFyKikgeyByZXR1cm4gZmFsc2U7IH0KIAogYm9vbCBB
WE9iamVjdENhY2hlOjpnQWNjZXNzaWJpbGl0eUVuYWJsZWQgPSBmYWxzZTsKIApJbmRleDogV2Vi
S2l0UXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFF0L0NoYW5nZUxvZwkocmV2aXNp
b24gMTc4MjUpCisrKyBXZWJLaXRRdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAwNi0xMS0xNyAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3RpbmcgdG8gdGhl
IG5ldyBhcGkuCisKKyAgICAgICAgKiBRdExhdW5jaGVyL21haW4uY3BwOgorICAgICAgICAobWFp
bik6CisgICAgICAgICogV2ViS2l0UGFydC9XZWJLaXRQYXJ0LmNwcDoKKyAgICAgICAgKFdlYktp
dFBhcnQ6OmluaXRWaWV3KToKKwogMjAwNi0xMS0xMCAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBhbmQgbGFuZGVkIGJ5IEFuZGVycy4KSW5kZXg6IFdlYktp
dFF0L1F0TGF1bmNoZXIvbWFpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0UXQvUXRMYXVuY2hl
ci9tYWluLmNwcAkocmV2aXNpb24gMTc4MjUpCisrKyBXZWJLaXRRdC9RdExhdW5jaGVyL21haW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8RG9jdW1lbnQu
aD4KICNpbmNsdWRlIDxGcmFtZVZpZXcuaD4KICNpbmNsdWRlIDxDaHJvbWVDbGllbnRRdC5oPgor
I2luY2x1ZGUgPENvbnRleHRNZW51Q2xpZW50UXQuaD4KICNpbmNsdWRlIDxLVVJMLmg+CiAKICNp
bmNsdWRlIDxGcmFtZVF0Lmg+CkBAIC04Miw3ICs4Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBj
aGFyICoqYXJndikKICAgICBRQm94TGF5b3V0ICpsID0gbmV3IFFWQm94TGF5b3V0KCZ0b3BMZXZl
bCk7CiAgCiAgICAgLy8gSW5pdGlhbGl6ZSBXZWJDb3JlIGluIFF0IHBsYXRmb3JtIG1vZGUuLi4K
LSAgICBQYWdlKiBwYWdlID0gbmV3IFBhZ2UobmV3IENocm9tZUNsaWVudFF0KCkpOworICAgIFBh
Z2UqIHBhZ2UgPSBuZXcgUGFnZShuZXcgQ2hyb21lQ2xpZW50UXQoKSwgbmV3IENvbnRleHRNZW51
Q2xpZW50UXQoKSk7CiAgICAgRnJhbWUqIGZyYW1lID0gbmV3IEZyYW1lUXQocGFnZSwgMCwgbmV3
IEZyYW1lUXRDbGllbnREZWZhdWx0KCkpOwogCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBu
ZXcgRnJhbWVWaWV3KGZyYW1lKTsKSW5kZXg6IFdlYktpdFF0L1dlYktpdFBhcnQvV2ViS2l0UGFy
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0UXQvV2ViS2l0UGFydC9XZWJLaXRQYXJ0LmNwcAko
cmV2aXNpb24gMTc4MjUpCisrKyBXZWJLaXRRdC9XZWJLaXRQYXJ0L1dlYktpdFBhcnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykg
MjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+CiAgKgogICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCkBAIC0zMSw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnRRdC5oIgorI2luY2x1ZGUg
IkNvbnRleHRNZW51Q2xpZW50UXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAKICNpbmNsdWRlIDxR
RGVidWc+CkBAIC0xMDQsNyArMTA2LDcgQEAgdm9pZCBXZWJLaXRQYXJ0Ojppbml0VmlldyhRV2lk
Z2V0KiBwYXJlbgogICAgIG1fY2xpZW50ID0gbmV3IFdlYktpdFBhcnRDbGllbnQodGhpcyk7CiAg
CiAgICAgLy8gSW5pdGlhbGl6ZSBXZWJDb3JlIGluIFF0IHBsYXRmb3JtIG1vZGUuLi4KLSAgICBQ
YWdlKiBwYWdlID0gbmV3IFBhZ2UobmV3IENocm9tZUNsaWVudFF0KCkpOworICAgIFBhZ2UqIHBh
Z2UgPSBuZXcgUGFnZShuZXcgQ2hyb21lQ2xpZW50UXQoKSwgbmV3IENvbnRleHRNZW51Q2xpZW50
UXQoKSk7CiAgICAgRnJhbWUqIGZyYW1lID0gbmV3IEZyYW1lUXQocGFnZSwgMCwgbV9jbGllbnQp
OwogCiAgICAgbV9mcmFtZSA9IGZyYW1lOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTc4MjUpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAw
Ni0xMS0xNyAgWmFjayBSdXNpbiAgPHphY2tAa2RlLm9yZz4KKworICAgICAgICBGaXhpbmcgY29t
cGlsYXRpb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5xdHBy
b2ovRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6
OkR1bXBSZW5kZXJUcmVlKTogQWRkaW5nCisgICAgICAgIENvbnRleHRNZW51Q2xpZW50IHRvIHRo
ZSBjb25zdHJ1Y3RvcgorCiAyMDA2LTExLTEyICBNYXJrIFJvd2UgIDxiZGFzaEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1pdHouCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5xdHByb2ovRHVtcFJlbmRlclRyZWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnF0cHJvai9E
dW1wUmVuZGVyVHJlZS5jcHAJKHJldmlzaW9uIDE3ODI1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUucXRwcm9qL0R1bXBSZW5kZXJUcmVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCisj
aW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRRdC5oIgogCiAjaW5jbHVkZSA8UURpcj4KICNpbmNs
dWRlIDxRRmlsZT4KQEAgLTYxLDcgKzYyLDcgQEAgRHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJU
cmVlKCkKICAgICAsIG1fbm90aWZpZXIoKQogewogICAgIC8vIEluaXRpYWxpemUgV2ViQ29yZSBp
biBRdCBwbGF0Zm9ybSBtb2RlLi4uCi0gICAgUGFnZSogcGFnZSA9IG5ldyBQYWdlKG5ldyBDaHJv
bWVDbGllbnRRdCgpKTsKKyAgICBQYWdlKiBwYWdlID0gbmV3IFBhZ2UobmV3IENocm9tZUNsaWVu
dFF0KCksIG5ldyBDb250ZXh0TWVudUNsaWVudFF0KCkpOwogICAgIG1fZnJhbWUgPSBuZXcgRnJh
bWVRdChwYWdlLCAwLCBtX2NsaWVudCk7CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBuZXcgRnJh
bWVWaWV3KG1fZnJhbWUpOwo=
</data>
<flag name="review"
          id="4102"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>