<?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>17484</bug_id>
          
          <creation_ts>2008-02-21 17:30:38 -0800</creation_ts>
          <short_desc>Add Windows (Cairo) support in WebKit.dll</short_desc>
          <delta_ts>2009-07-13 16:49:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>27087</dependson>
    
    <dependson>27240</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cedricv</cc>
    
    <cc>lunaris</cc>
    
    <cc>poirot.alex</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>71446</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-21 17:30:38 -0800</bug_when>
    <thetext>A small number or routines in the WebKit API classes assume a CoreGraphics backend.  This patch conditionalizes these regions of the code to allow a Cairo-based WebKit.dll to be built.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71449</commentid>
    <comment_count>1</comment_count>
      <attachid>19268</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-21 17:42:35 -0800</bug_when>
    <thetext>Created attachment 19268
Patch to conditionalize some CG/Cairo calls in WebKit proper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71810</commentid>
    <comment_count>2</comment_count>
      <attachid>19268</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-02-24 18:14:11 -0800</bug_when>
    <thetext>Comment on attachment 19268
Patch to conditionalize some CG/Cairo calls in WebKit proper.

Good general direction. Some comments:

 #include &quot;config.h&quot;
+#include &quot;NotImplemented.h&quot;
 #include &quot;WebDragClient.h&quot;

This is wrong. The first include after &quot;config.h&quot; should be the file&apos;s own header &quot;WebDragClient.h&quot;. There should be a blank line after that before the rest of the includes.

+#else
+    notImplemented ();
+#endif

No space before the parenthesis.

 void WebFrame::dispatchDidReceiveAuthenticationChallenge(DocumentLoader* loader, unsigned long identifier, const AuthenticationChallenge&amp; challenge)
 {
+#if USE(CFNETWORK)

Not answering the challenge at all will simply make the browser hang. You should probably do something better than that. Or is there some reason this is OK?

+#if PLATFORM(CG)

It seems strange to just conditionalize the printing code without adding a call to notImplemented(). How is this different from the createDragImage case?

+#if !PLATFORM(CAIRO)
 #if !defined(NDEBUG) &amp;&amp; defined(USE_DEBUG_SAFARI_THEME)

I think this is backwards. It should be #if PLATFORM(CG), since SafariTheme relies on CG. In the future we might need to add a conditional about whether SafariTheme is being included, since someone with CG still might not want SafariTheme. I definitely don&apos;t think that &quot;CAIRO&quot; is a good way to say &quot;no SafariTheme&quot;.

The purpose of WebKitGraphics is to give a way to draw text if you can&apos;t compile C++ code. There&apos;s no reason to have it if the context is a WebCore::GraphicsContext object. I suggest leaving these functions out entirely for non-CG platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>72212</commentid>
    <comment_count>3</comment_count>
      <attachid>19421</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-02-27 17:49:15 -0800</bug_when>
    <thetext>Created attachment 19421
Tweak for current SVN

Not intending this for review.  Just making it available for other windows porters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>73039</commentid>
    <comment_count>4</comment_count>
      <attachid>19596</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-03-07 15:18:00 -0800</bug_when>
    <thetext>Created attachment 19596
Tweak for 2008-03-07</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81779</commentid>
    <comment_count>5</comment_count>
      <attachid>21400</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-05-28 13:35:10 -0700</bug_when>
    <thetext>Created attachment 21400
Tweak for 2008-05-28</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96293</commentid>
    <comment_count>6</comment_count>
      <attachid>24590</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-10-22 23:11:00 -0700</bug_when>
    <thetext>Created attachment 24590
Patch against current sources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98434</commentid>
    <comment_count>7</comment_count>
      <attachid>25086</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-11-11 21:45:54 -0800</bug_when>
    <thetext>Created attachment 25086
Patch against current sources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98435</commentid>
    <comment_count>8</comment_count>
      <attachid>25087</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-11-11 21:48:24 -0800</bug_when>
    <thetext>Created attachment 25087
Configuration Patches for Cairo build.

Changes to configurations needed to build under Cairo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98436</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-11-11 21:49:37 -0800</bug_when>
    <thetext>The main set of patches (the 26.62 KB patch) works around various build errors in WebKit.dll.  The COM stuff makes heavy use of Apple-specific libraries, which must be commented out.

The small patch (965 bytes) just modifies the configuration as necessary to build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98437</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-11-11 22:04:35 -0800</bug_when>
    <thetext>I have placed a tarball of the requirements to build WebKit (Cairo) here:  http://web.me.com/bfulgham/Site/Downloads.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>98956</commentid>
    <comment_count>11</comment_count>
    <who name="Franco Lucchini">franco</who>
    <bug_when>2008-11-16 12:13:42 -0800</bug_when>
    <thetext>I managed to build a version of webkit completely independent from CoreGraphics.
It wasn&apos;t difficult, because i just closed all the #include CoreGraphics/* in an #if PLATFORM(CG) directive.
That way I built a WinLauncher executable that doesn&apos;t require CoreGraphics.dll.

I did the same for the CFNetwork library, but I wonder how to replace the CFURLCache mechanism implemented in WebView.cpp.
Any idea?

Eventually I will post a patch containing my modifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100329</commentid>
    <comment_count>12</comment_count>
      <attachid>25510</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-11-25 16:30:41 -0800</bug_when>
    <thetext>Created attachment 25510
Full Patch versus ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100444</commentid>
    <comment_count>13</comment_count>
      <attachid>25535</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-11-26 14:06:33 -0800</bug_when>
    <thetext>Created attachment 25535
Patch against current sources

Small update that enables the scroll/pan function (i.e., click mouse wheel, then mouse movement becomes scroll).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100746</commentid>
    <comment_count>14</comment_count>
      <attachid>25604</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-11-29 19:34:57 -0800</bug_when>
    <thetext>Created attachment 25604
Patch against ToT

No longer includes visual studio changes, as these are part of the main tree now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102273</commentid>
    <comment_count>15</comment_count>
      <attachid>25963</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-12-11 13:36:27 -0800</bug_when>
    <thetext>Created attachment 25963
Patch against ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102540</commentid>
    <comment_count>16</comment_count>
      <attachid>26021</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2008-12-14 21:59:10 -0800</bug_when>
    <thetext>Created attachment 26021
Update against ToT (2008-12-14)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102855</commentid>
    <comment_count>17</comment_count>
      <attachid>26111</attachid>
    <who name="Mital Vora">mital.d.vora</who>
    <bug_when>2008-12-17 21:06:07 -0800</bug_when>
    <thetext>Created attachment 26111
Update Against ToT (2008-12-18)

Update Against ToT (2008-12-18) SVN Version: 39368.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104515</commentid>
    <comment_count>18</comment_count>
      <attachid>26448</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-01-05 18:07:00 -0800</bug_when>
    <thetext>Created attachment 26448
Update against ToT (2009-01-05)

Much of this patch is a duplicate of 23092.  Once that patch is approved and landed this patch will nearly go away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105268</commentid>
    <comment_count>19</comment_count>
      <attachid>26615</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-01-11 14:03:53 -0800</bug_when>
    <thetext>Created attachment 26615
Patch against ToT

Current patch.  Boy it&apos;s small now that the CFNetwork stuff is in place!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106849</commentid>
    <comment_count>20</comment_count>
      <attachid>26992</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-01-23 21:28:49 -0800</bug_when>
    <thetext>Created attachment 26992
Patch against ToT (2009-01-23)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115039</commentid>
    <comment_count>21</comment_count>
      <attachid>28910</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-03-24 13:58:05 -0700</bug_when>
    <thetext>Created attachment 28910
Patch against ToT (2009-03-24)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123584</commentid>
    <comment_count>22</comment_count>
      <attachid>30783</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-05-29 11:54:39 -0700</bug_when>
    <thetext>Created attachment 30783
Patch against TotT (2009-05-29)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124111</commentid>
    <comment_count>23</comment_count>
    <who name="Joonghoon Kim">lunaris</who>
    <bug_when>2009-06-03 00:20:03 -0700</bug_when>
    <thetext>New patch (2009-05-29) prevents for all ports from including winsock. 
In WebCore/config.h, the code to define _WINSOCKAPI_ should be moved 
into #if PLATFORM(WIN) ~ #endif that defines WTF_USE_CURL. And every file
that includes curl.h should include winsock2.h before. 

WebCore/HistoryPropertyList.h should be copied into WEBKITOUTPUTDIR. 

I think it&apos;s better to use some environmental variable (as $PRODUCTION) 
than use config.h only. WebCorePrefix.h includes CoreServices.h but CF-Lite 
doesn&apos;t have it.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124385</commentid>
    <comment_count>24</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-06-04 14:52:03 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; WebCore/HistoryPropertyList.h should be copied into WEBKITOUTPUTDIR. 

This omission has been corrected in @r44434.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130467</commentid>
    <comment_count>25</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-07-08 11:07:03 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; And every file that includes curl.h should include winsock2.h before. 

This change has been landed in @r45630.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131369</commentid>
    <comment_count>26</comment_count>
      <attachid>32669</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-07-13 12:05:31 -0700</bug_when>
    <thetext>Created attachment 32669
Patch against ToT (@r45831)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131441</commentid>
    <comment_count>27</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2009-07-13 16:49:46 -0700</bug_when>
    <thetext>All elements of the Windows Cairo software, build system, and configuration are now part of WebKit proper.  I am closing this issue now that all sub-issue work is complete.

Thanks to everyone for their help!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19268</attachid>
            <date>2008-02-21 17:42:35 -0800</date>
            <delta_ts>2008-03-07 15:18:00 -0800</delta_ts>
            <desc>Patch to conditionalize some CG/Cairo calls in WebKit proper.</desc>
            <filename>WebKit_Cairo.patch</filename>
            <type>text/plain</type>
            <size>8098</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiAzMDQ2OCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDgtMDItMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBnbWFpbC5jb20+CisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTczMzYKKyAgICAgICAgQ29uZGl0aW9uYWxpemUgc29tZSBmaWxlIHRvIGFsbG93
IGEgV2luZG93cyAoQ2Fpcm8pIGJ1aWxkIG9mIFdlYktpdC4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkRyYWdDbGllbnQuY3BwOiBJbmRpY2F0
ZSBkcmFnIGlzIGJyb2tlbiBpbiBDYWlyby1iYWNrZW5kLgorICAgICAgICAoV2ViRHJhZ0NsaWVu
dDo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayk6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViRnJhbWU6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KTogIENvbmRpdGlvbmFsaXplCisgICAgICAgIGZvciBDRk5ldHdvcmsuCisgICAgICAgIChXZWJG
cmFtZTo6c3Bvb2xQYWdlcyk6ICBDb25kaXRpb25hbGl6ZSBmb3IgQ0cuCisgICAgICAgICogV2Vi
S2l0Q2xhc3NGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0
Q2xhc3NGYWN0b3J5KToKKyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5jcHA6CisgICAgICAgIChE
cmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAoV2ViRHJhd1RleHQpOgorICAgICAgICAqIFdlYktp
dEdyYXBoaWNzLmg6CisKIDIwMDgtMDItMjAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBhbmQgR2VvZmYuCkluZGV4OiBXZWJLaXQvd2lu
L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRHJhZ0NsaWVu
dC5jcHAJKHJldmlzaW9uIDMwNDU2KQorKysgV2ViS2l0L3dpbi9XZWJEcmFnQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYkRyYWdDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJEcm9wU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViS2l0R3JhcGhpY3Mu
aCIKQEAgLTIyMyw2ICsyMjQsNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRl
RHJhZ0ltCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENHKQogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0UmVmOwogICAgIGltYWdlID0gYWxsb2NJbWFnZSh3b3JraW5n
REMsIGltYWdlU2l6ZSwgJmNvbnRleHRSZWYpOwogICAgIGlmICghaW1hZ2UpIHsKQEAgLTI1OCw2
ICsyNjAsMTAgQEAgRHJhZ0ltYWdlUmVmIFdlYkRyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbQogICAg
IFdlYkNvcmVEcmF3RG91YmxlZFRleHRBdFBvaW50KGNvbnRleHQsIGxhYmVsLCB0ZXh0UG9zLCBs
YWJlbEZvbnQsIHRvcENvbG9yLCBib3R0b21Db2xvcik7CiAKICAgICBDR0NvbnRleHRSZWxlYXNl
KGNvbnRleHRSZWYpOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCAoKTsKKyNlbmRpZgorCiAg
ICAgRGVsZXRlREMod29ya2luZ0RDKTsKICAgICBSZWxlYXNlREMoMCwgZGMpOwogICAgIHJldHVy
biBpbWFnZTsKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAzMDQ1NikKKysrIFdlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjc1LDYgKzIyNzUsNyBAQCB2b2lkIFdlYkZy
YW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFJlc291CiAKIHZvaWQgV2ViRnJhbWU6OmRpc3BhdGNo
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEFTU0VSVChjaGFsbGVuZ2Uu
c291cmNlSGFuZGxlKCkpOwogCiAgICAgQ09NUHRyPElXZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZT4g
cmVzb3VyY2VMb2FkRGVsZWdhdGU7CkBAIC0yMjg4LDYgKzIyODksNyBAQCB2b2lkIFdlYkZyYW1l
OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50CiAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZERl
bGVnYXRlIGRvZXNuJ3QgZXhpc3Qgb3IgZmFpbHMgdG8gaGFuZGxlIHRoZSBjYWxsLCB3ZSB0ZWxs
IHRoZSBSZXNvdXJjZUhhbmRsZQogICAgIC8vIHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlh
bCAtIHRoaXMgaXMgdGhlIGJlc3QgYXBwcm94aW1hdGlvbiBvZiBNYWMgYmVoYXZpb3IKICAgICBj
aGFsbGVuZ2Uuc291cmNlSGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0
Q3JlZGVudGlhbChjaGFsbGVuZ2UpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWU6OmRpc3Bh
dGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQpAQCAtMjY5MCw2ICsyNjkyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJGcmFtZTo6c3BvbwogICAgIGhlYWRlckFuZEZvb3RlckhlaWdodHMoJmhlYWRlckhl
aWdodCwgJmZvb3RlckhlaWdodCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHNwb29sQ3R4KHBjdHgp
OwogCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgZm9yIChVSU5UIGlpID0gc3RhcnRQYWdlOyBpaSA8
IGVuZFBhZ2U7IGlpKyspIHsKICAgICAgICAgSW50UmVjdCBwYWdlUmVjdCA9IG1fcGFnZVJlY3Rz
W2lpXTsKIApAQCAtMjczMyw3ICsyNzM2LDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJGcmFtZTo6c3BvbwogICAgICAgICBDR0NvbnRleHRFbmRQYWdlKHBjdHgpOwogICAgICAgICBD
R0NvbnRleHRSZXN0b3JlR1N0YXRlKHBjdHgpOwogICAgIH0KLSAKKyNlbmRpZgorCiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAJKHJldmlzaW9u
IDMwNDU2KQorKysgV2ViS2l0L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw3ICs1Niw3IEBACiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCiAvLyBXZWJLaXRD
bGFzc0ZhY3RvcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KKyNpZiAhUExBVEZPUk0oQ0FJUk8pCiAjaWYgIWRlZmluZWQoTkRFQlVH
KSAmJiBkZWZpbmVkKFVTRV9ERUJVR19TQUZBUklfVEhFTUUpCiBTT0ZUX0xJTktfREVCVUdfTElC
UkFSWShTYWZhcmlUaGVtZSkKICNlbHNlCkBAIC02NCwxNyArNjQsMjAgQEAgU09GVF9MSU5LX0xJ
QlJBUlkoU2FmYXJpVGhlbWUpCiAjZW5kaWYKIAogU09GVF9MSU5LKFNhZmFyaVRoZW1lLCBTVElu
aXRpYWxpemUsIHZvaWQsIEFQSUVOVFJZLCAoKSwgKCkpCisjZW5kaWYKIAogV2ViS2l0Q2xhc3NG
YWN0b3J5OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3MpCiA6IG1fdGFyZ2V0
Q2xhc3ModGFyZ2V0Q2xhc3MpCiAsIG1fcmVmQ291bnQoMCkKIHsKKyNpZiAhUExBVEZPUk0oQ0FJ
Uk8pCiAgICAgc3RhdGljIGJvb2wgZGlkSW5pdGlhbGl6ZVNhZmFyaVRoZW1lOwogICAgIGlmICgh
ZGlkSW5pdGlhbGl6ZVNhZmFyaVRoZW1lKSB7CiAgICAgICAgIGlmIChTYWZhcmlUaGVtZUxpYnJh
cnkoKSkKICAgICAgICAgICAgIFNUSW5pdGlhbGl6ZSgpOwogICAgICAgICBkaWRJbml0aWFsaXpl
U2FmYXJpVGhlbWUgPSB0cnVlOwogICAgIH0KKyNlbmRpZgogCiAgICAgV2ViQ29yZTo6cG9wdWxh
dGVGb250RGF0YWJhc2UoKTsKIApJbmRleDogV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAJKHJldmlzaW9uIDMw
NDU2KQorKysgV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDYgKzcwLDcgQEAgc3RhdGljIEZvbnQgbWFrZUZvbnQoY29uc3QgV2ViRm9udERlc2NyaQog
ICAgIHJldHVybiBmb250OwogfQogCisjaWYgUExBVEZPUk0oQ0cpCiB2b2lkIERyYXdUZXh0QXRQ
b2ludChDR0NvbnRleHRSZWYgY2dDb250ZXh0LCBMUENUU1RSIHRleHQsIGludCBsZW5ndGgsIFBP
SU5UIHBvaW50LCBjb25zdCBXZWJGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBDR0NvbG9y
UmVmIGNvbG9yLCBpbnQgdW5kZXJsaW5lZEluZGV4LCBib29sIGRyYXdBc1Bhc3N3b3JkKQogewog
ICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KGNnQ29udGV4dCk7CkBAIC03OSwxMCArODAsMjIg
QEAgdm9pZCBEcmF3VGV4dEF0UG9pbnQoQ0dDb250ZXh0UmVmIGNnQ29udAogICAgICAgICBkcmF3
U3RyaW5nID0gZHJhd1N0cmluZy5pbXBsKCktPnNlY3VyZShXZWJDb3JlOjpidWxsZXQpOwogICAg
IFdlYkNvcmVEcmF3VGV4dEF0UG9pbnQoY29udGV4dCwgZHJhd1N0cmluZywgcG9pbnQsIG1ha2VG
b250KGRlc2NyaXB0aW9uKSwgY29sb3IsIHVuZGVybGluZWRJbmRleCk7CiB9CisjZWxpZiBQTEFU
Rk9STShDQUlSTykKK3ZvaWQgRHJhd1RleHRBdFBvaW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgTFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3RoLCBQT0lOVCBwb2ludCwgY29uc3QgV2ViRm9udERl
c2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgY29uc3QgQ29sb3IqIGNvbG9yLCBpbnQgdW5kZXJsaW5l
ZEluZGV4LCBib29sIGRyYXdBc1Bhc3N3b3JkKQoreworICAgIGlmICghY29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgU3RyaW5nIGRyYXdTdHJpbmcodGV4dCwgbGVuZ3RoKTsKKyAgICBp
ZiAoZHJhd0FzUGFzc3dvcmQpCisgICAgICAgIGRyYXdTdHJpbmcgPSBkcmF3U3RyaW5nLmltcGwo
KS0+c2VjdXJlKFdlYkNvcmU6OmJ1bGxldCk7CisgICAgV2ViQ29yZURyYXdUZXh0QXRQb2ludCgq
Y29udGV4dCwgZHJhd1N0cmluZywgcG9pbnQsIG1ha2VGb250KGRlc2NyaXB0aW9uKSwgKmNvbG9y
LCB1bmRlcmxpbmVkSW5kZXgpOworfQorI2VuZGlmCiAKIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4
dFJlbmRlckluZm8qIGluZm8pCiB7Ci0gICAgaWYgKCFpbmZvIHx8IGluZm8tPnN0cnVjdFNpemUg
IT0gc2l6ZW9mKFdlYlRleHRSZW5kZXJJbmZvKSB8fCAhaW5mby0+Y2dDb250ZXh0IHx8ICFpbmZv
LT5kZXNjcmlwdGlvbikKKyAgICBpZiAoIWluZm8gfHwgaW5mby0+c3RydWN0U2l6ZSAhPSBzaXpl
b2YoV2ViVGV4dFJlbmRlckluZm8pIHx8ICFpbmZvLT5nQ29udGV4dCB8fCAhaW5mby0+ZGVzY3Jp
cHRpb24pCiAgICAgICAgIHJldHVybjsKIAogICAgIGludCBvbGRGb250U21vb3RoaW5nTGV2ZWwg
PSAtMTsKQEAgLTkxLDcgKzEwNCw3IEBAIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJlbmRlcklu
Zm8qIGluZm8KICAgICAgICAgd2tTZXRGb250U21vb3RoaW5nTGV2ZWwoaW5mby0+b3ZlcnJpZGVT
bW9vdGhpbmdMZXZlbCk7CiAgICAgfQogCi0gICAgRHJhd1RleHRBdFBvaW50KGluZm8tPmNnQ29u
dGV4dCwgaW5mby0+dGV4dCwgaW5mby0+bGVuZ3RoLCBpbmZvLT5wdCwgKihpbmZvLT5kZXNjcmlw
dGlvbiksIGluZm8tPmNvbG9yLCBpbmZvLT51bmRlcmxpbmVkSW5kZXgsIGluZm8tPmRyYXdBc1Bh
c3N3b3JkKTsKKyAgICBEcmF3VGV4dEF0UG9pbnQoaW5mby0+Z0NvbnRleHQsIGluZm8tPnRleHQs
IGluZm8tPmxlbmd0aCwgaW5mby0+cHQsICooaW5mby0+ZGVzY3JpcHRpb24pLCBpbmZvLT5jb2xv
ciwgaW5mby0+dW5kZXJsaW5lZEluZGV4LCBpbmZvLT5kcmF3QXNQYXNzd29yZCk7CiAKICAgICBp
ZiAoaW5mby0+b3ZlcnJpZGVTbW9vdGhpbmdMZXZlbCA+PSAwKQogICAgICAgICB3a1NldEZvbnRT
bW9vdGhpbmdMZXZlbChvbGRGb250U21vb3RoaW5nTGV2ZWwpOwpJbmRleDogV2ViS2l0L3dpbi9X
ZWJLaXRHcmFwaGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3Mu
aAkocmV2aXNpb24gMzA0NTYpCisrKyBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDggKzI4LDE1IEBACiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKKyNp
ZiBQTEFURk9STShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29sb3IqIENHQ29sb3JSZWY7Ci10eXBl
ZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKK3R5cGVkZWYgc3RydWN0IENHQ29u
dGV4dCogQ29udGV4dFJlZjsKK3R5cGVkZWYgY29uc3QgQ0dDb2xvclJlZiBDb2xvclJlZjsKKyNl
bGlmIFBMQVRGT1JNKENBSVJPKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgordHlwZWRl
ZiBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqIENvbnRleHRSZWY7Cit0eXBlZGVmIGNvbnN0IFdl
YkNvcmU6OkNvbG9yKiBDb2xvclJlZjsKKyNlbmRpZgogCiB0eXBlZGVmIHdjaGFyX3QgV0NIQVI7
CiB0eXBlZGVmIF9fbnVsbHRlcm1pbmF0ZWQgY29uc3QgV0NIQVIqIExQQ1dTVFI7CkBAIC00Niwx
OCArNTMsMTggQEAgc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7CiBzdHJ1Y3QgV2ViVGV4dFJl
bmRlckluZm8KIHsKICAgICBEV09SRCBzdHJ1Y3RTaXplOwotICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQ7CisgICAgQ29udGV4dFJlZiBnQ29udGV4dDsKICAgICBMUENUU1RSIHRleHQ7CiAgICAg
aW50IGxlbmd0aDsKICAgICBQT0lOVCBwdDsKICAgICBjb25zdCBXZWJGb250RGVzY3JpcHRpb24q
IGRlc2NyaXB0aW9uOwotICAgIENHQ29sb3JSZWYgY29sb3I7CisgICAgQ29sb3JSZWYgY29sb3I7
CiAgICAgaW50IHVuZGVybGluZWRJbmRleDsKICAgICBib29sIGRyYXdBc1Bhc3N3b3JkOwogICAg
IGludCBvdmVycmlkZVNtb290aGluZ0xldmVsOyAvLyBwYXNzIGluIC0xIGlmIGNhbGxlciBkb2Vz
IG5vdCB3YW50IHRvIG92ZXJyaWRlIHNtb290aGluZyBsZXZlbAogfTsKIAotdm9pZCBEcmF3VGV4
dEF0UG9pbnQoQ0dDb250ZXh0UmVmLCBMUENUU1RSIHRleHQsIGludCBsZW5ndGgsIFBPSU5ULCBj
b25zdCBXZWJGb250RGVzY3JpcHRpb24mLCBDR0NvbG9yUmVmLCBpbnQgdW5kZXJsaW5lZEluZGV4
ID0gLTEsIGJvb2wgZHJhd0FzUGFzc3dvcmQgPSBmYWxzZSk7Cit2b2lkIERyYXdUZXh0QXRQb2lu
dChDb250ZXh0UmVmLCBMUENUU1RSIHRleHQsIGludCBsZW5ndGgsIFBPSU5ULCBjb25zdCBXZWJG
b250RGVzY3JpcHRpb24mLCBDb2xvclJlZiwgaW50IHVuZGVybGluZWRJbmRleCA9IC0xLCBib29s
IGRyYXdBc1Bhc3N3b3JkID0gZmFsc2UpOwogdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVy
SW5mbyopOwogZmxvYXQgVGV4dEZsb2F0V2lkdGgoTFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3RoLCBj
b25zdCBXZWJGb250RGVzY3JpcHRpb24mKTsKIHZvaWQgRm9udE1ldHJpY3MoY29uc3QgV2ViRm9u
dERlc2NyaXB0aW9uJiwgaW50KiBhc2NlbnQsIGludCogZGVzY2VudCwgaW50KiBsaW5lU3BhY2lu
Zyk7Cg==
</data>
<flag name="review"
          id="8410"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19421</attachid>
            <date>2008-02-27 17:49:15 -0800</date>
            <delta_ts>2008-03-07 15:18:00 -0800</delta_ts>
            <desc>Tweak for current SVN</desc>
            <filename>WebKit.patch</filename>
            <type>text/plain</type>
            <size>6756</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiAzMDYyNSkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNz
ZXMuaCIKICNpbmNsdWRlICJGb3JtVmFsdWVzUHJvcGVydHlCYWcuaCIKICNpbmNsdWRlICJNYXJz
aGFsbGluZ0hlbHBlcnMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IldlYkFjdGlvblByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTk1LDYgKzk2LDcgQEAKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorI2lmIFBMQVRGT1JN
KENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KIAogLy8gQ0cgU1BJ
IHVzZWQgZm9yIHByaW50aW5nCkBAIC0xMDIsNiArMTA0LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAg
Q0dBZmZpbmVUcmFuc2Zvcm0gQ0dDb250ZXh0R2V0QmFzZUNUTShDR0NvbnRleHRSZWYgYyk7IAog
ICAgIHZvaWQgQ0dDb250ZXh0U2V0QmFzZUNUTShDR0NvbnRleHRSZWYgYywgQ0dBZmZpbmVUcmFu
c2Zvcm0gbSk7IAogfQorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE3NjYsNiArMTc2OSw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb28KICAgICBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKCZo
ZWFkZXJIZWlnaHQsICZmb290ZXJIZWlnaHQpOwogICAgIEdyYXBoaWNzQ29udGV4dCBzcG9vbEN0
eChwY3R4KTsKIAorI2lmIFBMQVRGT1JNKENHKQogICAgIGZvciAoVUlOVCBpaSA9IHN0YXJ0UGFn
ZTsgaWkgPCBlbmRQYWdlOyBpaSsrKSB7CiAgICAgICAgIEludFJlY3QgcGFnZVJlY3QgPSBtX3Bh
Z2VSZWN0c1tpaV07CiAKQEAgLTE4MDksNyArMTgxMyw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRnJhbWU6OnNwb28KICAgICAgICAgQ0dDb250ZXh0RW5kUGFnZShwY3R4KTsKICAg
ICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwY3R4KTsKICAgICB9Ci0gCisjZWxzZQorICAg
IG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDog
V2ViS2l0L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAkocmV2aXNpb24gMzA2MjUpCisrKyBXZWJLaXQvd2lu
L1dlYktpdENsYXNzRmFjdG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAK
ICNwcmFnbWEgd2FybmluZyhwb3ApCiAKIC8vIFdlYktpdENsYXNzRmFjdG9yeSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQorI2lmICFQ
TEFURk9STShDQUlSTykKICNpZiAhZGVmaW5lZChOREVCVUcpICYmIGRlZmluZWQoVVNFX0RFQlVH
X1NBRkFSSV9USEVNRSkKIFNPRlRfTElOS19ERUJVR19MSUJSQVJZKFNhZmFyaVRoZW1lKQogI2Vs
c2UKQEAgLTY0LDE3ICs2NCwyMCBAQCBTT0ZUX0xJTktfTElCUkFSWShTYWZhcmlUaGVtZSkKICNl
bmRpZgogCiBTT0ZUX0xJTksoU2FmYXJpVGhlbWUsIFNUSW5pdGlhbGl6ZSwgdm9pZCwgQVBJRU5U
UlksICgpLCAoKSkKKyNlbmRpZgogCiBXZWJLaXRDbGFzc0ZhY3Rvcnk6OldlYktpdENsYXNzRmFj
dG9yeShDTFNJRCB0YXJnZXRDbGFzcykKIDogbV90YXJnZXRDbGFzcyh0YXJnZXRDbGFzcykKICwg
bV9yZWZDb3VudCgwKQogeworI2lmICFQTEFURk9STShDQUlSTykKICAgICBzdGF0aWMgYm9vbCBk
aWRJbml0aWFsaXplU2FmYXJpVGhlbWU7CiAgICAgaWYgKCFkaWRJbml0aWFsaXplU2FmYXJpVGhl
bWUpIHsKICAgICAgICAgaWYgKFNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICAgICAgU1RJ
bml0aWFsaXplKCk7CiAgICAgICAgIGRpZEluaXRpYWxpemVTYWZhcmlUaGVtZSA9IHRydWU7CiAg
ICAgfQorI2VuZGlmCiAKICAgICBXZWJDb3JlOjpwb3B1bGF0ZUZvbnREYXRhYmFzZSgpOwogCklu
ZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24gMzA2MjUpCisrKyBXZWJLaXQvd2luL1dl
YktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsNyBAQCBzdGF0aWMg
Rm9udCBtYWtlRm9udChjb25zdCBXZWJGb250RGVzY3JpCiAgICAgcmV0dXJuIGZvbnQ7CiB9CiAK
KyNpZiBQTEFURk9STShDRykKIHZvaWQgRHJhd1RleHRBdFBvaW50KENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQsIExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwgUE9JTlQgcG9pbnQsIGNvbnN0IFdlYkZv
bnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIENHQ29sb3JSZWYgY29sb3IsIGludCB1bmRlcmxp
bmVkSW5kZXgsIGJvb2wgZHJhd0FzUGFzc3dvcmQpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0IGNv
bnRleHQoY2dDb250ZXh0KTsKQEAgLTc5LDEwICs4MCwyMiBAQCB2b2lkIERyYXdUZXh0QXRQb2lu
dChDR0NvbnRleHRSZWYgY2dDb250CiAgICAgICAgIGRyYXdTdHJpbmcgPSBkcmF3U3RyaW5nLmlt
cGwoKS0+c2VjdXJlKFdlYkNvcmU6OmJ1bGxldCk7CiAgICAgV2ViQ29yZURyYXdUZXh0QXRQb2lu
dChjb250ZXh0LCBkcmF3U3RyaW5nLCBwb2ludCwgbWFrZUZvbnQoZGVzY3JpcHRpb24pLCBjb2xv
ciwgdW5kZXJsaW5lZEluZGV4KTsKIH0KKyNlbGlmIFBMQVRGT1JNKENBSVJPKQordm9pZCBEcmF3
VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBMUENUU1RSIHRleHQsIGludCBs
ZW5ndGgsIFBPSU5UIHBvaW50LCBjb25zdCBXZWJGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9u
LCBjb25zdCBDb2xvciogY29sb3IsIGludCB1bmRlcmxpbmVkSW5kZXgsIGJvb2wgZHJhd0FzUGFz
c3dvcmQpCit7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJp
bmcgZHJhd1N0cmluZyh0ZXh0LCBsZW5ndGgpOworICAgIGlmIChkcmF3QXNQYXNzd29yZCkKKyAg
ICAgICAgZHJhd1N0cmluZyA9IGRyYXdTdHJpbmcuaW1wbCgpLT5zZWN1cmUoV2ViQ29yZTo6YnVs
bGV0KTsKKyAgICBXZWJDb3JlRHJhd1RleHRBdFBvaW50KCpjb250ZXh0LCBkcmF3U3RyaW5nLCBw
b2ludCwgbWFrZUZvbnQoZGVzY3JpcHRpb24pLCAqY29sb3IsIHVuZGVybGluZWRJbmRleCk7Cit9
CisjZW5kaWYKIAogdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5mbykKIHsK
LSAgICBpZiAoIWluZm8gfHwgaW5mby0+c3RydWN0U2l6ZSAhPSBzaXplb2YoV2ViVGV4dFJlbmRl
ckluZm8pIHx8ICFpbmZvLT5jZ0NvbnRleHQgfHwgIWluZm8tPmRlc2NyaXB0aW9uKQorICAgIGlm
ICghaW5mbyB8fCBpbmZvLT5zdHJ1Y3RTaXplICE9IHNpemVvZihXZWJUZXh0UmVuZGVySW5mbykg
fHwgIWluZm8tPmdDb250ZXh0IHx8ICFpbmZvLT5kZXNjcmlwdGlvbikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaW50IG9sZEZvbnRTbW9vdGhpbmdMZXZlbCA9IC0xOwpAQCAtOTEsNyArMTA0LDcg
QEAgdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5mbwogICAgICAgICB3a1Nl
dEZvbnRTbW9vdGhpbmdMZXZlbChpbmZvLT5vdmVycmlkZVNtb290aGluZ0xldmVsKTsKICAgICB9
CiAKLSAgICBEcmF3VGV4dEF0UG9pbnQoaW5mby0+Y2dDb250ZXh0LCBpbmZvLT50ZXh0LCBpbmZv
LT5sZW5ndGgsIGluZm8tPnB0LCAqKGluZm8tPmRlc2NyaXB0aW9uKSwgaW5mby0+Y29sb3IsIGlu
Zm8tPnVuZGVybGluZWRJbmRleCwgaW5mby0+ZHJhd0FzUGFzc3dvcmQpOworICAgIERyYXdUZXh0
QXRQb2ludChpbmZvLT5nQ29udGV4dCwgaW5mby0+dGV4dCwgaW5mby0+bGVuZ3RoLCBpbmZvLT5w
dCwgKihpbmZvLT5kZXNjcmlwdGlvbiksIGluZm8tPmNvbG9yLCBpbmZvLT51bmRlcmxpbmVkSW5k
ZXgsIGluZm8tPmRyYXdBc1Bhc3N3b3JkKTsKIAogICAgIGlmIChpbmZvLT5vdmVycmlkZVNtb290
aGluZ0xldmVsID49IDApCiAgICAgICAgIHdrU2V0Rm9udFNtb290aGluZ0xldmVsKG9sZEZvbnRT
bW9vdGhpbmdMZXZlbCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5oCShyZXZpc2lvbiAzMDYyNSkKKysr
IFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgs
MTUgQEAKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAorI2lmIFBMQVRGT1JNKENHKQogdHlwZWRl
ZiBzdHJ1Y3QgQ0dDb2xvciogQ0dDb2xvclJlZjsKLXR5cGVkZWYgc3RydWN0IENHQ29udGV4dCog
Q0dDb250ZXh0UmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0KiBDb250ZXh0UmVmOwordHlw
ZWRlZiBjb25zdCBDR0NvbG9yUmVmIENvbG9yUmVmOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCit0eXBlZGVmIFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dCogQ29udGV4dFJlZjsKK3R5cGVkZWYgY29uc3QgV2ViQ29yZTo6Q29sb3IqIENvbG9yUmVm
OworI2VuZGlmCiAKIHR5cGVkZWYgd2NoYXJfdCBXQ0hBUjsKIHR5cGVkZWYgX19udWxsdGVybWlu
YXRlZCBjb25zdCBXQ0hBUiogTFBDV1NUUjsKQEAgLTQ2LDE4ICs1MywxOCBAQCBzdHJ1Y3QgV2Vi
Rm9udERlc2NyaXB0aW9uIHsKIHN0cnVjdCBXZWJUZXh0UmVuZGVySW5mbwogewogICAgIERXT1JE
IHN0cnVjdFNpemU7Ci0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dDsKKyAgICBDb250ZXh0UmVm
IGdDb250ZXh0OwogICAgIExQQ1RTVFIgdGV4dDsKICAgICBpbnQgbGVuZ3RoOwogICAgIFBPSU5U
IHB0OwogICAgIGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiogZGVzY3JpcHRpb247Ci0gICAgQ0dD
b2xvclJlZiBjb2xvcjsKKyAgICBDb2xvclJlZiBjb2xvcjsKICAgICBpbnQgdW5kZXJsaW5lZElu
ZGV4OwogICAgIGJvb2wgZHJhd0FzUGFzc3dvcmQ7CiAgICAgaW50IG92ZXJyaWRlU21vb3RoaW5n
TGV2ZWw7IC8vIHBhc3MgaW4gLTEgaWYgY2FsbGVyIGRvZXMgbm90IHdhbnQgdG8gb3ZlcnJpZGUg
c21vb3RoaW5nIGxldmVsCiB9OwogCi12b2lkIERyYXdUZXh0QXRQb2ludChDR0NvbnRleHRSZWYs
IExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwgUE9JTlQsIGNvbnN0IFdlYkZvbnREZXNjcmlwdGlv
biYsIENHQ29sb3JSZWYsIGludCB1bmRlcmxpbmVkSW5kZXggPSAtMSwgYm9vbCBkcmF3QXNQYXNz
d29yZCA9IGZhbHNlKTsKK3ZvaWQgRHJhd1RleHRBdFBvaW50KENvbnRleHRSZWYsIExQQ1RTVFIg
dGV4dCwgaW50IGxlbmd0aCwgUE9JTlQsIGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiYsIENvbG9y
UmVmLCBpbnQgdW5kZXJsaW5lZEluZGV4ID0gLTEsIGJvb2wgZHJhd0FzUGFzc3dvcmQgPSBmYWxz
ZSk7CiB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKik7CiBmbG9hdCBUZXh0Rmxv
YXRXaWR0aChMUENUU1RSIHRleHQsIGludCBsZW5ndGgsIGNvbnN0IFdlYkZvbnREZXNjcmlwdGlv
biYpOwogdm9pZCBGb250TWV0cmljcyhjb25zdCBXZWJGb250RGVzY3JpcHRpb24mLCBpbnQqIGFz
Y2VudCwgaW50KiBkZXNjZW50LCBpbnQqIGxpbmVTcGFjaW5nKTsKSW5kZXg6IFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkocmV2aXNpb24gMzA2MjUpCisrKyBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjMsNiArMjIzLDcgQEAgRHJhZ0ltYWdlUmVmIFdlYkRyYWdDbGllbnQ6OmNyZWF0ZURy
YWdJbQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBQTEFURk9STShDRykKICAgICBD
R0NvbnRleHRSZWYgY29udGV4dFJlZjsKICAgICBpbWFnZSA9IGFsbG9jSW1hZ2Uod29ya2luZ0RD
LCBpbWFnZVNpemUsICZjb250ZXh0UmVmKTsKICAgICBpZiAoIWltYWdlKSB7CkBAIC0yNTgsNiAr
MjU5LDcgQEAgRHJhZ0ltYWdlUmVmIFdlYkRyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbQogICAgIFdl
YkNvcmVEcmF3RG91YmxlZFRleHRBdFBvaW50KGNvbnRleHQsIGxhYmVsLCB0ZXh0UG9zLCBsYWJl
bEZvbnQsIHRvcENvbG9yLCBib3R0b21Db2xvcik7CiAKICAgICBDR0NvbnRleHRSZWxlYXNlKGNv
bnRleHRSZWYpOworI2VuZGlmCiAgICAgRGVsZXRlREMod29ya2luZ0RDKTsKICAgICBSZWxlYXNl
REMoMCwgZGMpOwogICAgIHJldHVybiBpbWFnZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>19596</attachid>
            <date>2008-03-07 15:18:00 -0800</date>
            <delta_ts>2008-05-28 13:35:10 -0700</delta_ts>
            <desc>Tweak for 2008-03-07</desc>
            <filename>WebKit.patch</filename>
            <type>text/plain</type>
            <size>5117</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiAzMDg3NykKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzQ3LDYgKzE3NDcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cygmaGVhZGVy
SGVpZ2h0LCAmZm9vdGVySGVpZ2h0KTsKICAgICBHcmFwaGljc0NvbnRleHQgc3Bvb2xDdHgocGN0
eCk7CiAKKyNpZiBQTEFURk9STShDRykKICAgICBmb3IgKFVJTlQgaWkgPSBzdGFydFBhZ2U7IGlp
IDwgZW5kUGFnZTsgaWkrKykgewogICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0ID0gbV9wYWdlUmVj
dHNbaWldOwogCkBAIC0xNzkwLDYgKzE3OTEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkZyYW1lOjpzcG9vCiAgICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7CiAgICAgICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAgCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24gMzA4NzcpCisr
KyBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiAr
NzAsNyBAQCBzdGF0aWMgRm9udCBtYWtlRm9udChjb25zdCBXZWJGb250RGVzY3JpCiAgICAgcmV0
dXJuIGZvbnQ7CiB9CiAKKyNpZiBQTEFURk9STShDRykKIHZvaWQgRHJhd1RleHRBdFBvaW50KENH
Q29udGV4dFJlZiBjZ0NvbnRleHQsIExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwgUE9JTlQgcG9p
bnQsIGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIENHQ29sb3JSZWYgY29s
b3IsIGludCB1bmRlcmxpbmVkSW5kZXgsIGJvb2wgZHJhd0FzUGFzc3dvcmQpCiB7CiAgICAgR3Jh
cGhpY3NDb250ZXh0IGNvbnRleHQoY2dDb250ZXh0KTsKQEAgLTc5LDEwICs4MCwyMiBAQCB2b2lk
IERyYXdUZXh0QXRQb2ludChDR0NvbnRleHRSZWYgY2dDb250CiAgICAgICAgIGRyYXdTdHJpbmcg
PSBkcmF3U3RyaW5nLmltcGwoKS0+c2VjdXJlKFdlYkNvcmU6OmJ1bGxldCk7CiAgICAgV2ViQ29y
ZURyYXdUZXh0QXRQb2ludChjb250ZXh0LCBkcmF3U3RyaW5nLCBwb2ludCwgbWFrZUZvbnQoZGVz
Y3JpcHRpb24pLCBjb2xvciwgdW5kZXJsaW5lZEluZGV4KTsKIH0KKyNlbGlmIFBMQVRGT1JNKENB
SVJPKQordm9pZCBEcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBMUENU
U1RSIHRleHQsIGludCBsZW5ndGgsIFBPSU5UIHBvaW50LCBjb25zdCBXZWJGb250RGVzY3JpcHRp
b24mIGRlc2NyaXB0aW9uLCBjb25zdCBDb2xvciogY29sb3IsIGludCB1bmRlcmxpbmVkSW5kZXgs
IGJvb2wgZHJhd0FzUGFzc3dvcmQpCit7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICByZXR1
cm47CisKKyAgICBTdHJpbmcgZHJhd1N0cmluZyh0ZXh0LCBsZW5ndGgpOworICAgIGlmIChkcmF3
QXNQYXNzd29yZCkKKyAgICAgICAgZHJhd1N0cmluZyA9IGRyYXdTdHJpbmcuaW1wbCgpLT5zZWN1
cmUoV2ViQ29yZTo6YnVsbGV0KTsKKyAgICBXZWJDb3JlRHJhd1RleHRBdFBvaW50KCpjb250ZXh0
LCBkcmF3U3RyaW5nLCBwb2ludCwgbWFrZUZvbnQoZGVzY3JpcHRpb24pLCAqY29sb3IsIHVuZGVy
bGluZWRJbmRleCk7Cit9CisjZW5kaWYKIAogdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVy
SW5mbyogaW5mbykKIHsKLSAgICBpZiAoIWluZm8gfHwgaW5mby0+c3RydWN0U2l6ZSAhPSBzaXpl
b2YoV2ViVGV4dFJlbmRlckluZm8pIHx8ICFpbmZvLT5jZ0NvbnRleHQgfHwgIWluZm8tPmRlc2Ny
aXB0aW9uKQorICAgIGlmICghaW5mbyB8fCBpbmZvLT5zdHJ1Y3RTaXplICE9IHNpemVvZihXZWJU
ZXh0UmVuZGVySW5mbykgfHwgIWluZm8tPmdDb250ZXh0IHx8ICFpbmZvLT5kZXNjcmlwdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IG9sZEZvbnRTbW9vdGhpbmdMZXZlbCA9IC0xOwpA
QCAtOTEsNyArMTA0LDcgQEAgdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5m
bwogICAgICAgICB3a1NldEZvbnRTbW9vdGhpbmdMZXZlbChpbmZvLT5vdmVycmlkZVNtb290aGlu
Z0xldmVsKTsKICAgICB9CiAKLSAgICBEcmF3VGV4dEF0UG9pbnQoaW5mby0+Y2dDb250ZXh0LCBp
bmZvLT50ZXh0LCBpbmZvLT5sZW5ndGgsIGluZm8tPnB0LCAqKGluZm8tPmRlc2NyaXB0aW9uKSwg
aW5mby0+Y29sb3IsIGluZm8tPnVuZGVybGluZWRJbmRleCwgaW5mby0+ZHJhd0FzUGFzc3dvcmQp
OworICAgIERyYXdUZXh0QXRQb2ludChpbmZvLT5nQ29udGV4dCwgaW5mby0+dGV4dCwgaW5mby0+
bGVuZ3RoLCBpbmZvLT5wdCwgKihpbmZvLT5kZXNjcmlwdGlvbiksIGluZm8tPmNvbG9yLCBpbmZv
LT51bmRlcmxpbmVkSW5kZXgsIGluZm8tPmRyYXdBc1Bhc3N3b3JkKTsKIAogICAgIGlmIChpbmZv
LT5vdmVycmlkZVNtb290aGluZ0xldmVsID49IDApCiAgICAgICAgIHdrU2V0Rm9udFNtb290aGlu
Z0xldmVsKG9sZEZvbnRTbW9vdGhpbmdMZXZlbCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdy
YXBoaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5oCShyZXZp
c2lvbiAzMDg3NykKKysrIFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsOCArMjgsMTQgQEAKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAotdHlwZWRlZiBz
dHJ1Y3QgQ0dDb2xvciogQ0dDb2xvclJlZjsKLXR5cGVkZWYgc3RydWN0IENHQ29udGV4dCogQ0dD
b250ZXh0UmVmOworI2lmIFBMQVRGT1JNKENHKQordHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0KiBD
b250ZXh0UmVmOwordHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvciogQ29sb3JSZWY7CisjZWxpZiBQTEFU
Rk9STShDQUlSTykKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKK3R5cGVkZWYgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0KiBDb250ZXh0UmVmOwordHlwZWRlZiBjb25zdCBXZWJDb3JlOjpD
b2xvciogQ29sb3JSZWY7CisjZW5kaWYKIAogdHlwZWRlZiB3Y2hhcl90IFdDSEFSOwogdHlwZWRl
ZiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IFdDSEFSKiBMUENXU1RSOwpAQCAtNDYsMTggKzUyLDE4
IEBAIHN0cnVjdCBXZWJGb250RGVzY3JpcHRpb24gewogc3RydWN0IFdlYlRleHRSZW5kZXJJbmZv
CiB7CiAgICAgRFdPUkQgc3RydWN0U2l6ZTsKLSAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0Owor
ICAgIENvbnRleHRSZWYgZ0NvbnRleHQ7CiAgICAgTFBDVFNUUiB0ZXh0OwogICAgIGludCBsZW5n
dGg7CiAgICAgUE9JTlQgcHQ7CiAgICAgY29uc3QgV2ViRm9udERlc2NyaXB0aW9uKiBkZXNjcmlw
dGlvbjsKLSAgICBDR0NvbG9yUmVmIGNvbG9yOworICAgIENvbG9yUmVmIGNvbG9yOwogICAgIGlu
dCB1bmRlcmxpbmVkSW5kZXg7CiAgICAgYm9vbCBkcmF3QXNQYXNzd29yZDsKICAgICBpbnQgb3Zl
cnJpZGVTbW9vdGhpbmdMZXZlbDsgLy8gcGFzcyBpbiAtMSBpZiBjYWxsZXIgZG9lcyBub3Qgd2Fu
dCB0byBvdmVycmlkZSBzbW9vdGhpbmcgbGV2ZWwKIH07CiAKLXZvaWQgRHJhd1RleHRBdFBvaW50
KENHQ29udGV4dFJlZiwgTFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3RoLCBQT0lOVCwgY29uc3QgV2Vi
Rm9udERlc2NyaXB0aW9uJiwgQ0dDb2xvclJlZiwgaW50IHVuZGVybGluZWRJbmRleCA9IC0xLCBi
b29sIGRyYXdBc1Bhc3N3b3JkID0gZmFsc2UpOwordm9pZCBEcmF3VGV4dEF0UG9pbnQoQ29udGV4
dFJlZiwgTFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3RoLCBQT0lOVCwgY29uc3QgV2ViRm9udERlc2Ny
aXB0aW9uJiwgQ29sb3JSZWYsIGludCB1bmRlcmxpbmVkSW5kZXggPSAtMSwgYm9vbCBkcmF3QXNQ
YXNzd29yZCA9IGZhbHNlKTsKIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJlbmRlckluZm8qKTsK
IGZsb2F0IFRleHRGbG9hdFdpZHRoKExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgV2Vi
Rm9udERlc2NyaXB0aW9uJik7CiB2b2lkIEZvbnRNZXRyaWNzKGNvbnN0IFdlYkZvbnREZXNjcmlw
dGlvbiYsIGludCogYXNjZW50LCBpbnQqIGRlc2NlbnQsIGludCogbGluZVNwYWNpbmcpOwpJbmRl
eDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCShyZXZpc2lv
biAzMDg3NykKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMyw2ICsyMjMsNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0Ns
aWVudDo6Y3JlYXRlRHJhZ0ltCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIFBMQVRG
T1JNKENHKQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0UmVmOwogICAgIGltYWdlID0gYWxsb2NJ
bWFnZSh3b3JraW5nREMsIGltYWdlU2l6ZSwgJmNvbnRleHRSZWYpOwogICAgIGlmICghaW1hZ2Up
IHsKQEAgLTI1OCw2ICsyNTksNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRl
RHJhZ0ltCiAgICAgV2ViQ29yZURyYXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgbGFiZWws
IHRleHRQb3MsIGxhYmVsRm9udCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKIAogICAgIENHQ29u
dGV4dFJlbGVhc2UoY29udGV4dFJlZik7CisjZW5kaWYKICAgICBEZWxldGVEQyh3b3JraW5nREMp
OwogICAgIFJlbGVhc2VEQygwLCBkYyk7CiAgICAgcmV0dXJuIGltYWdlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21400</attachid>
            <date>2008-05-28 13:35:10 -0700</date>
            <delta_ts>2008-10-22 23:11:00 -0700</delta_ts>
            <desc>Tweak for 2008-05-28</desc>
            <filename>cairo_20080528.patch</filename>
            <type>text/plain</type>
            <size>20443</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vV2ViQ29va2llTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMzQxNzMpCisrKyBXZWJLaXQv
d2luL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNywxMiBA
QAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIK
IAorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQ
cml2Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlV2luLmg+CisjZWxpZiBVU0Uo
Q1VSTCkKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0zNiw5ICs0MCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAogV2ViQ29va2llTWFuYWdlciogV2ViQ29va2llTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2Uo
KQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgV2ViQ29va2llTWFuYWdlciogbWFuYWdlciA9
IG5ldyBXZWJDb29raWVNYW5hZ2VyOwogICAgIG1hbmFnZXItPkFkZFJlZigpOwogICAgIHJldHVy
biBtYW5hZ2VyOyAgICAKKyNlbHNlCisgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiBXZWJDb29r
aWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKCkKQEAgLTU2LDYgKzY0LDcgQEAgV2ViQ29va2ll
TWFuYWdlcjo6fldlYkNvb2tpZU1hbmFnZXIoKQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkNvb2tpZU1hbmFnZXI6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2
T2JqZWN0KQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgKnBwdk9iamVjdCA9IDA7CiAgICAg
aWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3Qg
PSBzdGF0aWNfY2FzdDxXZWJDb29raWVNYW5hZ2VyKj4odGhpcyk7CkBAIC02Niw2ICs3NSwxMCBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFnCiAKICAgICBBZGRSZWYo
KTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0
dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29r
aWVNYW5hZ2VyOjpBZGRSZWYoKQpAQCAtODcsMTYgKzEwMCwyNiBAQCBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNv
b2tpZU1hbmFnZXI6OmNvb2tpZVN0b3JhZ2UoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiogc3RvcmFnZSkKIHsKLSAgICBpZiAoIXN0b3JhZ2UpCisjaWYg
VVNFKENGTkVUV09SSykKKyAgIGlmICghc3RvcmFnZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKIAogICAgICpzdG9yYWdlID0gY3VycmVudENvb2tpZVN0b3JhZ2UoKTsKICAgICByZXR1cm4g
U19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNl
bmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZVN0b3JhZ2UoIAogICAgIC8qIFtpbl0gKi8gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBz
dG9yYWdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgc2V0Q3VycmVudENvb2tpZVN0b3Jh
Z2Uoc3RvcmFnZSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViRG93
bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCShyZXZp
c2lvbiAzNDE3MykKKysrIFdlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw3ICs0Myw5IEBACiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKICNwcmFnbWEgd2Fy
bmluZyhwdXNoLCAwKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbkNGLmg+CisjZW5kaWYKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CkBAIC01NSw2ICs1Nyw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCisjaWYgVVNFKENGTkVUV09SSykKIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIHN0YXRpYyB2b2lkIGRpZFN0YXJ0Q2FsbGJhY2soQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxT
ZW5kUmVxdWVzdENhbGxiYWNrKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWQsIENGVVJMUmVxdWVz
dFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIHJlZGlyZWN0aW9uUmVzcG9uc2UsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtNzQsNiArNzcsNyBAQCBzdGF0aWMgVUludDMyIEJ1bmRs
ZU1hZ2ljTnVtYmVyID0gMHhERUNBCiAKIHN0YXRpYyBDRkRhdGFSZWYgZXh0cmFjdFJlc3VtZURh
dGFGcm9tQnVuZGxlKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7CiBzdGF0aWMgSFJFU1VMVCBh
cHBlbmRSZXN1bWVEYXRhVG9CdW5kbGUoQ0ZEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgYnVuZGxlUGF0aCk7CisjZW5kaWYKIAogLy8gV2ViRG93bmxvYWQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC04
NSw2ICs4OSw3IEBAIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiAKIHZvaWQgV2ViRG93bmxv
YWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgSVdlYkRvd25sb2FkRGVs
ZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9kZWxlZ2F0ZSA9
IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6c2hhcmVkSW5z
dGFuY2UoKTsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiA9IGhhbmRsZS0+Y29u
bmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbikgewpAQCAtMTEyLDEwICsxMTcsMTIgQEAg
dm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhhbmRsZSogaAogICAgIC8vIEVpdGhlciB3
YXksIHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUgY29ubmVjdGlvbiB0byBiYWxhbmNlIG91dCByZWYg
Y291bnRzCiAgICAgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCk7CiAgICAg
Q0ZSZWxlYXNlKGNvbm5lY3Rpb24pOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRG93bmxvYWQ6Omlu
aXQoY29uc3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCiB7Cisj
aWYgVVNFKENGTkVUV09SSykKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGUgPyBkZWxlZ2F0ZSA6
IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpOwogICAgIExPR19FUlJP
UigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsKIApAQCAtMTMyLDYgKzEzOSw3
IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCAKICAgICBDRlVSTERv
d25sb2FkU2NoZWR1bGVEb3dubG9hZFdpdGhSdW5Mb29wKG1fZG93bmxvYWQuZ2V0KCksIFJlc291
cmNlSGFuZGxlOjpsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAKICAg
ICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIEluaXRpYWxpemVkIGRvd25sb2FkIG9mIHVy
bCAlcyBpbiBXZWJEb3dubG9hZCAlcCIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlz
KTsKKyNlbmRpZgogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTIwNCw2ICsy
MTIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppCiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIAogICAgICAgICAvKiBbaW5dICov
IElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gd2ViUmVxdWVzdDsKICAgICBpZiAoIXJl
cXVlc3QgfHwgRkFJTEVEKHJlcXVlc3QtPlF1ZXJ5SW50ZXJmYWNlKCZ3ZWJSZXF1ZXN0KSkpIHsK
ICAgICAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgZmFp
bGVkIC0gbm90IGEgV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsgICAgCkBAIC0yMzUsMTIgKzI0NCwx
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppCiAKICAgICBMT0co
RG93bmxvYWQsICJXZWJEb3dubG9hZCAtIGluaXRXaXRoUmVxdWVzdCBjb21wbGV0ZSwgc3RhcnRl
ZCBkb3dubG9hZCBvZiB1cmwgJXMiLCB3ZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxlKAog
ICAgICAgICAvKiBbaW5dICovIEJTVFIgYnVuZGxlUGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8g
SVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgTE9HKERvd25sb2FkLCAiQXR0ZW1wdGluZyByZXN1bWUgb2YgZG93bmxvYWQgYnVuZGxlICVz
IiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkuYXNjaWkoKS5k
YXRhKCkpOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdW1lRGF0YShBZG9wdENGLCBl
eHRyYWN0UmVzdW1lRGF0YUZyb21CdW5kbGUoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xl
bihidW5kbGVQYXRoKSkpKTsKQEAgLTI4MSw2ICsyOTUsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQg
LSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHJlc3VtZWQgZG93bmxvYWQgb2YgYnVuZGxlICVz
IiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkuYXNjaWkoKS5k
YXRhKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRG93bmxvYWQ6OmNhblJlc3VtZURvd25sb2FkRGVjb2RlZFdpdGhFbmNvZGluZ01JTUVUeXBl
KApAQCAtMjkzLDYgKzMxMSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OmMKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c3RhcnQoKQog
eworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBT
dGFydGluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMzAzLDEwICszMjIsMTUgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cwogICAgIGRpZFN0YXJ0KCk7CiAKICAgICByZXR1cm4g
U19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNl
bmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWwo
KQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQg
LSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBpZiAoIW1fZG93bmxvYWQp
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0zMTQsMTAgKzMzOCwxNSBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbCht
X2Rvd25sb2FkLmdldCgpKTsKICAgICBtX2Rvd25sb2FkID0gMDsKICAgICByZXR1cm4gU19PSzsK
KyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWxGb3JSZXN1
bWUoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCksIHdyaXRpbmcgcmVzdW1lIGluZm9ybWF0aW9u
IHRvIGZpbGUgaWYgcG9zc2libGUiLCB0aGlzKTsKICAgICBBU1NFUlQobV9kb3dubG9hZCk7CiAg
ICAgaWYgKCFtX2Rvd25sb2FkKQpAQCAtMzQ0LDIxICszNzMsMzEgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YwogZXhpdDoKICAgICBtX2Rvd25sb2FkID0gMDsKICAg
ICByZXR1cm4gaHI7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZB
SUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6
ZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgKICAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09M
KiByZXN1bHQpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAoIW1fZG93bmxvYWQpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgKnJlc3VsdCA9IENGVVJMRG93bmxvYWREZWxldGVz
VXBvbkZhaWx1cmUobV9kb3dubG9hZC5nZXQoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQor
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YnVuZGxlUGF0aEZvclRhcmdldFBh
dGgoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0YXJnZXRQYXRoLCAKICAgICAgICAgLyogW291
dCwgcmV0dmFsXSAqLyBCU1RSKiBidW5kbGVQYXRoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgaWYgKCF0YXJnZXRQYXRoKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwogCkBAIC0z
NzQsNiArNDEzLDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmIK
ICAgICBpZiAoISpidW5kbGVQYXRoKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIHJldHVy
biBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOwor
I2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnJlcXVl
c3QoCkBAIC0zOTAsMTYgKzQzMywyMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRv
d25sb2FkOjpyCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzZXREZWxl
dGVzRmlsZVVwb25GYWlsdXJlKAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVsZXRlc0ZpbGVV
cG9uRmFpbHVyZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3dubG9hZCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBDRlVSTERvd25sb2FkU2V0RGVsZXRlc1Vwb25G
YWlsdXJlKG1fZG93bmxvYWQuZ2V0KCksICEhZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSk7CiAgICAg
cmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZB
SUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6
c2V0RGVzdGluYXRpb24oCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwYXRoLCAKICAgICAgICAg
LyogW2luXSAqLyBCT09MIGFsbG93T3ZlcndyaXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC00MTMsNiAr
NDYyLDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMKICAgICBM
T0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFNldCBkZXN0aW5hdGlvbiB0byAlcyIsIG1fYnVu
ZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiAvLyBJV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDIwLDYgKzQ3
Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSop
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAobV9kb3dubG9hZCkgewogICAgICAgICBD
RlVSTERvd25sb2FkQ2FuY2VsKG1fZG93bmxvYWQuZ2V0KCkpOwogICAgICAgICBtX2Rvd25sb2Fk
ID0gMDsKQEAgLTQzMSwxMSArNDg1LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OmMKICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9yKHRoaXMsIHdlYkVy
cm9yLmdldCgpKTsKIAogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVk
KCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVu
Z2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFD
RTsKQEAgLTQ0MywxMiArNTAyLDE3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93
bmxvYWQ6OmMKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNy
ZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgMCwgd2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICByZXR1cm4gU19PSzsK
KyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50aWFs
KAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKICAg
ICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5n
ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2Vi
Q2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKQEAgLTQ2Miw4ICs1MjYs
MTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6dQogICAgIGlmICht
X2Rvd25sb2FkKQogICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2Fk
LmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgcmV0dXJuIFNfT0s7Cisj
ZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0K
IAorI2lmIFVTRShDRk5FVFdPUkspCiAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiB2b2lkIFdlYkRvd25sb2FkOjpkaWRTdGFydCgpCiB7CkBAIC03OTYsMyArODY1LDQgQEAg
ZXhpdDoKICAgICBmY2xvc2UoYnVuZGxlKTsKICAgICByZXR1cm4gaHI7CiB9CisjZW5kaWYKSW5k
ZXg6IFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YkRvd25sb2FkLmgJKHJldmlzaW9uIDM0MTczKQorKysgV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgcHVibGljOgogICAgICAgICAvKiBb
aW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKICAgICAgICAgLyogW2luXSAq
LyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CiAKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tzCiAgICAgdm9pZCBkaWRT
dGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0
UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAgLTExNiwxMyArMTE3LDE2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKENGVVJMUmVmKTsKICAgICB2b2lkIGRpZEZpbmlz
aCgpOwogICAgIHZvaWQgZGlkRmFpbChDRkVycm9yUmVmKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6
CiAgICAgVUxPTkcgbV9yZWZDb3VudDsKIAogICAgIFdlYkNvcmU6OlN0cmluZyBtX2Rlc3RpbmF0
aW9uOwogICAgIFdlYkNvcmU6OlN0cmluZyBtX2J1bmRsZVBhdGg7CisjaWYgVVNFKENGTkVUV09S
SykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKKyNlbmRpZgog
ICAgIENPTVB0cjxJV2ViTXV0YWJsZVVSTFJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBDT01QdHI8
SVdlYkRvd25sb2FkRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAKSW5kZXg6IFdlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lv
biAzNDE3MykKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzQ4LDYgKzE3NDgsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzcG9v
CiAgICAgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cygmaGVhZGVySGVpZ2h0LCAmZm9vdGVySGVpZ2h0
KTsKICAgICBHcmFwaGljc0NvbnRleHQgc3Bvb2xDdHgocGN0eCk7CiAKKyNpZiBQTEFURk9STShD
RykKICAgICBmb3IgKFVJTlQgaWkgPSBzdGFydFBhZ2U7IGlpIDwgZW5kUGFnZTsgaWkrKykgewog
ICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0ID0gbV9wYWdlUmVjdHNbaWldOwogCkBAIC0xNzkxLDYg
KzE3OTIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAg
ICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7CiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAgCiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBX
ZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24gMzQxNzMpCisrKyBXZWJLaXQvd2luL1dlYktpdEdy
YXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNywxMSBAQCB2b2lkIFdlYkRy
YXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKiBpbmZvCiAKICAgICAgICAgLy8gU2V0IHNoYWRvdyBz
ZXR0aW5nCiAgICAgICAgIGlmIChpbmZvLT5zdHJ1Y3RTaXplID09IHNpemVvZihXZWJUZXh0UmVu
ZGVySW5mbykgJiYKKyNpZiBQTEFURk9STShDRykKICAgICAgICAgICAgIChpbmZvLT5zaGFkb3dP
ZmZzZXQuY3ggfHwgaW5mby0+c2hhZG93T2Zmc2V0LmN5IHx8IGluZm8tPnNoYWRvd0JsdXIgfHwg
aW5mby0+c2hhZG93Q29sb3IpKQorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgICAgICAgICAo
aW5mby0+c2hhZG93T2Zmc2V0LmN4IHx8IGluZm8tPnNoYWRvd09mZnNldC5jeSB8fCBpbmZvLT5z
aGFkb3dCbHVyKSkKKyNlbmRpZgogICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coaW5mby0+
c2hhZG93T2Zmc2V0LCBpbmZvLT5zaGFkb3dCbHVyLCBpbmZvLT5zaGFkb3dDb2xvcik7CiAKICAg
ICAgICAgV2ViQ29yZURyYXdUZXh0QXRQb2ludChjb250ZXh0LCBkcmF3U3RyaW5nLCBpbmZvLT5w
dCwgbWFrZUZvbnQoKihpbmZvLT5kZXNjcmlwdGlvbikpLCBpbmZvLT5jb2xvciwgaW5mby0+dW5k
ZXJsaW5lZEluZGV4KTsKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmgJKHJldmlzaW9uIDM0MTczKQorKysg
V2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCwx
NCBAQAogCiAjaW5jbHVkZSA8d2luZG93cy5oPgogCisjaWYgUExBVEZPUk0oQ0cpCiB0eXBlZGVm
IHN0cnVjdCBDR0NvbG9yKiBDR0NvbG9yUmVmOwogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0KiBD
R0NvbnRleHRSZWY7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKK3R5cGVkZWYgV2ViQ29yZTo6Q29sb3IgQ29sb3JSZWY7Cit0eXBlZGVmIHN0cnVj
dCBfY2Fpcm8qIENhaXJvQ29udGV4dFJlZjsKKyNlbmRpZgogCiB0eXBlZGVmIHdjaGFyX3QgV0NI
QVI7CiB0eXBlZGVmIF9fbnVsbHRlcm1pbmF0ZWQgY29uc3QgV0NIQVIqIExQQ1dTVFI7CkBAIC00
NywxOCArNTMsMzAgQEAgc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7CiBzdHJ1Y3QgV2ViVGV4
dFJlbmRlckluZm8KIHsKICAgICBEV09SRCBzdHJ1Y3RTaXplOworI2lmIFBMQVRGT1JNKENHKQog
ICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBD
YWlyb0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VuZGlmCiAgICAgTFBDVFNUUiB0ZXh0OwogICAg
IGludCBsZW5ndGg7CiAgICAgUE9JTlQgcHQ7CiAgICAgY29uc3QgV2ViRm9udERlc2NyaXB0aW9u
KiBkZXNjcmlwdGlvbjsKKyNpZiBQTEFURk9STShDRykKICAgICBDR0NvbG9yUmVmIGNvbG9yOwor
I2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgQ29sb3JSZWYgY29sb3I7CisjZW5kaWYKICAgICBp
bnQgdW5kZXJsaW5lZEluZGV4OwogICAgIGJvb2wgZHJhd0FzUGFzc3dvcmQ7CiAgICAgaW50IG92
ZXJyaWRlU21vb3RoaW5nTGV2ZWw7IC8vIHBhc3MgaW4gLTEgaWYgY2FsbGVyIGRvZXMgbm90IHdh
bnQgdG8gb3ZlcnJpZGUgc21vb3RoaW5nIGxldmVsCiAgICAgU0laRSBzaGFkb3dPZmZzZXQ7CiAg
ICAgaW50IHNoYWRvd0JsdXI7CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJlZiBzaGFk
b3dDb2xvcjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENvbG9yUmVmIHNoYWRvd0NvbG9y
OworI2VuZGlmCiB9OwogCiB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKik7Cklu
ZGV4OiBXZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24gMzQxNzMpCisrKyBX
ZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNwcmFnbWEg
d2FybmluZyhwb3ApCiAKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiAvLyBJV2ViVVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQv
d2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMzQxNzMp
CisrKyBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ3LDkgKzE0NywxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlVSTEF1dGhlbnRpCiAKICAgICAvLyBGSVhNRTogQWZ0ZXIgd2UgY2hhbmdlIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIHRvIHVzZSAiUmVzb3VyY2VIYW5kbGUiIGFzIHRoZSBhYnN0cmFjdCAiU2Vu
ZGVyIiBvciAiU291cmNlIG9mIHRoaXMgQXV0aCBDaGFsbGVuZ2UiLCB0aGVuIHdlJ2xsCiAgICAg
Ly8gY29uc3RydWN0IHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB3aXRoIHRoYXQgYXMgb2J0
YWluZWQgZnJvbSB0aGUgd2ViU2VuZGVyCi0KKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJTcGFjZS0+
cHJvdGVjdGlvblNwYWNlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LCB3ZWJSZXNw
b25zZS0+cmVzb3VyY2VSZXNwb25zZSgpLCB3ZWJFcnJvci0+cmVzb3VyY2VFcnJvcigpKTsKKyNl
bmRpZgogICAgIHJldHVybiBTX09LOwogfQogCkluZGV4OiBXZWJLaXQvd2luL1dlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAkocmV2aXNpb24gMzQxNzMpCisr
KyBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyLmgiCiAKICNpbmNsdWRlICJDT01QdHIuaCIKKyNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiV2ViVVJMQ3JlZGVudGlhbC5oIgpA
QCAtOTgsMjkgKzk5LDQwIEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRp
Y2EKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXI6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5d
ICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKQogeworI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3
ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBtX2hhbmRsZS0+cmVjZWl2ZWRDYW5jZWxsYXRp
b24od2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKICAgICByZXR1cm4g
U19PSzsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOwor
I2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVu
Z2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAg
ICAgbV9oYW5kbGUtPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCh3
ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwogICAgIHJldHVybiBTX09L
OworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5k
aWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcjo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
Q3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAg
ICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVy
eSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKQEAgLTEzMSw2ICsxNDMsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJV
UkxBdXRoZW50aQogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkQ3JlZGVudGlhbCh3ZWJDaGFsbGVu
Z2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwo
KSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiAvLyBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDM0MTczKQorKysgV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwMyw5ICs0MTAzLDExIEBAIEhS
RVNVTFQgdXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4KICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBTZXQg
Y29va2llIHN0b3JhZ2UgYWNjZXB0IHBvbGljeQogICAgIGlmIChDRkhUVFBDb29raWVTdG9yYWdl
UmVmIGNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhU
VFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGFjY2Vw
dFBvbGljeSk7CisjZW5kaWYKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCShyZXZpc2lvbiAzNDE3MykKKysr
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMyw2ICsyMjMsNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRl
RHJhZ0ltCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENHKQogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0UmVmOwogICAgIGltYWdlID0gYWxsb2NJbWFnZSh3b3JraW5n
REMsIGltYWdlU2l6ZSwgJmNvbnRleHRSZWYpOwogICAgIGlmICghaW1hZ2UpIHsKQEAgLTI1OCw2
ICsyNTksNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltCiAgICAg
V2ViQ29yZURyYXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgbGFiZWwsIHRleHRQb3MsIGxh
YmVsRm9udCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKIAogICAgIENHQ29udGV4dFJlbGVhc2Uo
Y29udGV4dFJlZik7CisjZW5kaWYKICAgICBEZWxldGVEQyh3b3JraW5nREMpOwogICAgIFJlbGVh
c2VEQygwLCBkYyk7CiAgICAgcmV0dXJuIGltYWdlOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDM0MTcz
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRl
ckNsaWVudC5oIgogCiAjaW5jbHVkZSAiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgog
I2luY2x1ZGUgIldlYkNhY2hlZFBhZ2VQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJXZWJDaHJv
bWVDbGllbnQuaCIKQEAgLTEwNyw2ICsxMDgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
Ojphc3NpZ25JZGVudGlmCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEFTU0VSVChjaGFsbGVuZ2Uuc291
cmNlSGFuZGxlKCkpOwogCiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZp
ZXcoKTsKQEAgLTEyMCw2ICsxMjIsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFJlCiAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZERlbGVnYXRlIGRvZXNuJ3QgZXhp
c3Qgb3IgZmFpbHMgdG8gaGFuZGxlIHRoZSBjYWxsLCB3ZSB0ZWxsIHRoZSBSZXNvdXJjZUhhbmRs
ZQogICAgIC8vIHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbCAtIHRoaXMgaXMgdGhlIGJl
c3QgYXBwcm94aW1hdGlvbiBvZiBNYWMgYmVoYXZpb3IKICAgICBjaGFsbGVuZ2Uuc291cmNlSGFu
ZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVu
Z2UpOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24590</attachid>
            <date>2008-10-22 23:11:00 -0700</date>
            <delta_ts>2008-11-11 21:45:54 -0800</delta_ts>
            <desc>Patch against current sources</desc>
            <filename>consideration.patch</filename>
            <type>text/plain</type>
            <size>22923</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJBcmNoaXZlLmNwcAkocmV2aXNpb24gMzc3OTgpCisrKyBXZWJLaXQvd2luL1dlYkFyY2hp
dmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiRE9N
Q29yZUNsYXNzZXMuaCIKICNpbmNsdWRlICJNZW1vcnlTdHJlYW0uaCIKKworI2lmIFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjZW5kaWYKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQyLDYgKzQ1LDcgQEAgV2ViQXJjaGl2ZSog
V2ViQXJjaGl2ZTo6Y3JlYXRlSW5zdGFuY2UoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAor
I2lmIFVTRShDRk5FVFdPUkspCiBXZWJBcmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5j
ZShQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlKQogewogICAgIFdlYkFy
Y2hpdmUqIGluc3RhbmNlID0gbmV3IFdlYkFyY2hpdmUoY29yZUFyY2hpdmUpOwpAQCAtNTcsNiAr
NjEsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShQYXNzUmVmUHRyPExlZ2FjeQogICAgIGdD
bGFzc0NvdW50Kys7CiAgICAgZ0NsYXNzTmFtZUNvdW50LmFkZCgiV2ViQXJjaGl2ZSIpOwogfQor
I2Vsc2UKK1dlYkFyY2hpdmU6OldlYkFyY2hpdmUoaW50IGlnbm9yZSkKKyAgICA6IG1fcmVmQ291
bnQoMCkKK3sKKyAgICBnQ2xhc3NDb3VudCsrOworfQorI2VuZGlmCiAKIFdlYkFyY2hpdmU6On5X
ZWJBcmNoaXZlKCkKIHsKQEAgLTExOCw3ICsxMjksOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkFyY2hpdmU6OmluCiAgICAgaWYgKCFkb21Ob2RlKQogICAgICAgICByZXR1cm4gRV9O
T0lOVEVSRkFDRTsKIAorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9hcmNoaXZlID0gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlKGRvbU5vZGUtPm5vZGUoKSk7CisjZW5kaWYKICAgICAKICAgICBy
ZXR1cm4gU19PSzsKIH0KQEAgLTE0NCw2ICsxNTcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkFyY2hpdmU6OnN1CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6
OmRhdGEoCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gSVN0cmVhbSoqIHN0cmVhbSkKIHsK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1f
YXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9uKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xNTMsNCArMTY3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJBcmNoaXZlOjpkYQogICAgICpzdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKGJ1ZmZlcik7CiAKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgcmV0dXJu
IEVfTk9USU1QTDsKKyNlbmRpZgogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgJKHJldmlzaW9uIDM3Nzk4KQorKysg
V2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDIxICsyOCwyOSBA
QAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgY2xhc3MgTGVnYWN5V2ViQXJjaGl2ZTsKIH0KKyNlbmRpZgogCiBjbGFz
cyBXZWJBcmNoaXZlIDogcHVibGljIElXZWJBcmNoaXZlCiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFdlYkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKCk7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBz
dGF0aWMgV2ViQXJjaGl2ZSogY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpMZWdh
Y3lXZWJBcmNoaXZlPik7CiBwcm90ZWN0ZWQ6CiAgICAgV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFdl
YkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU+KTsKICAgICB+V2ViQXJjaGl2ZSgpOworI2Vsc2UKKyAg
ICBXZWJBcmNoaXZlKGludCk7Citwcm90ZWN0ZWQ6CisgICAgfldlYkFyY2hpdmUoKTsKKyNlbmRp
ZgogCiBwdWJsaWM6CiAgICAgLy8gSVVua25vd24KQEAgLTc4LDcgKzg2LDkgQEAgcHVibGljOgog
CiBwcm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudDsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIFJlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPiBtX2FyY2hpdmU7CisjZW5kaWYK
IH07CiAKICNlbmRpZiAvLyBXZWJBcmNoaXZlX2gKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29va2ll
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyLmNw
cAkocmV2aXNpb24gMzc3OTgpCisrKyBXZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNywxMiBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgog
I2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5j
bHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVTdG9yYWdlV2luLmg+CisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zNiw5ICs0
MCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViQ29va2llTWFuYWdlciogV2Vi
Q29va2llTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgV2ViQ29va2llTWFuYWdlciogbWFuYWdlciA9IG5ldyBXZWJDb29raWVNYW5hZ2VyOwogICAg
IG1hbmFnZXItPkFkZFJlZigpOwogICAgIHJldHVybiBtYW5hZ2VyOyAgICAKKyNlbHNlCisgICBy
ZXR1cm4gMDsKKyNlbmRpZgogfQogCiBXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2Vy
KCkKQEAgLTU4LDYgKzY2LDcgQEAgV2ViQ29va2llTWFuYWdlcjo6fldlYkNvb2tpZU1hbmFnZXIo
KQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXI6OlF1ZXJ5SW50
ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2T2JqZWN0KQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgKnBwdk9iamVjdCA9IDA7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9J
VW5rbm93bikpCiAgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb29raWVNYW5h
Z2VyKj4odGhpcyk7CkBAIC02OCw2ICs3NywxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkNvb2tpZU1hbmFnCiAKICAgICBBZGRSZWYoKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNl
CisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpBZGRSZWYoKQpAQCAtODks
MTYgKzEwMiwyNiBAQCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXI6OmNvb2tpZVN0b3JhZ2Uo
IAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiogc3RvcmFn
ZSkKIHsKLSAgICBpZiAoIXN0b3JhZ2UpCisjaWYgVVNFKENGTkVUV09SSykKKyAgIGlmICghc3Rv
cmFnZSkKICAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKIAogICAgICpzdG9yYWdlID0gY3VycmVu
dENvb2tpZVN0b3JhZ2UoKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1l
bnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZVN0b3JhZ2UoIAogICAgIC8qIFtp
bl0gKi8gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBzdG9yYWdlKQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgc2V0Q3VycmVudENvb2tpZVN0b3JhZ2Uoc3RvcmFnZSk7CiAgICAgcmV0dXJuIFNf
T0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5k
aWYKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViRG93bmxvYWQuY3BwCShyZXZpc2lvbiAzNzc5OCkKKysrIFdlYktpdC93aW4v
V2ViRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw5IEBACiAjaW5jbHVk
ZSA8c3lzL3R5cGVzLmg+CiAKICNwcmFnbWEgd2FybmluZyhwdXNoLCAwKQorI2lmIFVTRShDRk5F
VFdPUkspCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNGLmg+CisjZW5kaWYKICNp
bmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC01NSw2ICs1Nyw3
IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgVVNFKENGTkVUV09SSykKIC8v
IENGVVJMRG93bmxvYWQgQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHN0YXRpYyB2b2lkIGRpZFN0YXJ0Q2Fs
bGJhY2soQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
CiBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrKENGVVJMRG93
bmxvYWRSZWYgZG93bmxvYWQsIENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNl
UmVmIHJlZGlyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtNzQs
NiArNzcsNyBAQCBzdGF0aWMgVUludDMyIEJ1bmRsZU1hZ2ljTnVtYmVyID0gMHhERUNBCiAKIHN0
YXRpYyBDRkRhdGFSZWYgZXh0cmFjdFJlc3VtZURhdGFGcm9tQnVuZGxlKGNvbnN0IFN0cmluZyYg
YnVuZGxlUGF0aCk7CiBzdGF0aWMgSFJFU1VMVCBhcHBlbmRSZXN1bWVEYXRhVG9CdW5kbGUoQ0ZE
YXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7CisjZW5kaWYKIAog
Ly8gV2ViRG93bmxvYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC04Niw2ICs5MCw3IEBAIFdlYkRvd25sb2FkOjpX
ZWJEb3dubG9hZCgpCiAKIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBDRlVSTENvbm5lY3Rp
b25SZWYgY29ubmVjdGlvbiA9IGhhbmRsZS0+Y29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVj
dGlvbikgewpAQCAtMTEzLDEwICsxMTgsMTIgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNv
dXJjZUhhbmRsZSogaAogICAgIC8vIEVpdGhlciB3YXksIHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUg
Y29ubmVjdGlvbiB0byBiYWxhbmNlIG91dCByZWYgY291bnRzCiAgICAgaGFuZGxlLT5yZWxlYXNl
Q29ubmVjdGlvbkZvckRvd25sb2FkKCk7CiAgICAgQ0ZSZWxlYXNlKGNvbm5lY3Rpb24pOworI2Vu
ZGlmCiB9CiAKIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCBJV2ViRG93
bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBtX2Rl
bGVnYXRlID0gZGVsZWdhdGUgPyBkZWxlZ2F0ZSA6IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpz
aGFyZWRJbnN0YW5jZSgpOwogICAgIExPR19FUlJPUigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVn
YXRlLmdldCgpKTsKIApAQCAtMTMzLDYgKzE0MCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQo
Y29uc3QgS1VSTCYgdXJsLCAKICAgICBDRlVSTERvd25sb2FkU2NoZWR1bGVEb3dubG9hZFdpdGhS
dW5Mb29wKG1fZG93bmxvYWQuZ2V0KCksIFJlc291cmNlSGFuZGxlOjpsb2FkZXJSdW5Mb29wKCks
IGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9h
ZCAtIEluaXRpYWxpemVkIGRvd25sb2FkIG9mIHVybCAlcyBpbiBXZWJEb3dubG9hZCAlcCIsIHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzKTsKKyNlbmRpZgogfQogCiBXZWJEb3dubG9h
ZDo6fldlYkRvd25sb2FkKCkKQEAgLTIwNiw2ICsyMTQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRvd25sb2FkOjppCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3Qq
IHJlcXVlc3QsIAogICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxl
Z2F0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVx
dWVzdD4gd2ViUmVxdWVzdDsKICAgICBpZiAoIXJlcXVlc3QgfHwgRkFJTEVEKHJlcXVlc3QtPlF1
ZXJ5SW50ZXJmYWNlKCZ3ZWJSZXF1ZXN0KSkpIHsKICAgICAgICAgTE9HKERvd25sb2FkLCAiV2Vi
RG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgZmFpbGVkIC0gbm90IGEgV2ViTXV0YWJsZVVSTFJl
cXVlc3QiKTsgICAgCkBAIC0yMzcsMTIgKzI0NiwxNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRvd25sb2FkOjppCiAKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIGlu
aXRXaXRoUmVxdWVzdCBjb21wbGV0ZSwgc3RhcnRlZCBkb3dubG9hZCBvZiB1cmwgJXMiLCB3ZWJS
ZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJu
IEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25s
b2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxlKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgYnVu
ZGxlUGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVn
YXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiQXR0ZW1wdGlu
ZyByZXN1bWUgb2YgZG93bmxvYWQgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0
cmluZ0xlbihidW5kbGVQYXRoKSkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gcmVzdW1lRGF0YShBZG9wdENGLCBleHRyYWN0UmVzdW1lRGF0YUZyb21CdW5kbGUo
U3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKQEAgLTI4Myw2
ICsyOTcsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogCiAg
ICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUs
IHJlc3VtZWQgZG93bmxvYWQgb2YgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0
cmluZ0xlbihidW5kbGVQYXRoKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgIHJldHVybiBTX09LOwor
I2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNhblJlc3VtZURvd25s
b2FkRGVjb2RlZFdpdGhFbmNvZGluZ01JTUVUeXBlKApAQCAtMjk1LDYgKzMxMyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmMKIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6c3RhcnQoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
TE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBTdGFydGluZyBkb3dubG9hZCAoJXApIiwgdGhp
cyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMzA1
LDEwICszMjQsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cwog
ICAgIGRpZFN0YXJ0KCk7CiAKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1l
bnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWwoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCki
LCB0aGlzKTsKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBA
IC0zMTYsMTAgKzM0MCwxNSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2Fk
OjpjCiAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbChtX2Rvd25sb2FkLmdldCgpKTsKICAgICBtX2Rv
d25sb2FkID0gMDsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgp
OworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRvd25sb2FkOjpjYW5jZWxGb3JSZXN1bWUoKQogeworI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICgl
cCksIHdyaXRpbmcgcmVzdW1lIGluZm9ybWF0aW9uIHRvIGZpbGUgaWYgcG9zc2libGUiLCB0aGlz
KTsKICAgICBBU1NFUlQobV9kb3dubG9hZCk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQpAQCAtMzQ2
LDIxICszNzUsMzEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Ywog
ZXhpdDoKICAgICBtX2Rvd25sb2FkID0gMDsKICAgICByZXR1cm4gaHI7CisjZWxzZQorICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6ZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgKICAg
ICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCT09MKiByZXN1bHQpCiB7CisjaWYgVVNFKENGTkVU
V09SSykKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAg
KnJlc3VsdCA9IENGVVJMRG93bmxvYWREZWxldGVzVXBvbkZhaWx1cmUobV9kb3dubG9hZC5nZXQo
KSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJl
dHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJE
b3dubG9hZDo6YnVuZGxlUGF0aEZvclRhcmdldFBhdGgoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB0YXJnZXRQYXRoLCAKICAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCU1RSKiBidW5kbGVQ
YXRoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgaWYgKCF0YXJnZXRQYXRoKQogICAgICAg
ICByZXR1cm4gRV9JTlZBTElEQVJHOwogCkBAIC0zNzYsNiArNDE1LDEwIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmIKICAgICBpZiAoISpidW5kbGVQYXRoKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxl
bWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnJlcXVlc3QoCkBAIC0zOTIsMTYgKzQzNSwyMiBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpyCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjpzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlKAogICAgICAg
ICAvKiBbaW5dICovIEJPT0wgZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSkKIHsKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAg
ICBDRlVSTERvd25sb2FkU2V0RGVsZXRlc1Vwb25GYWlsdXJlKG1fZG93bmxvYWQuZ2V0KCksICEh
ZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24oCiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiBwYXRoLCAKICAgICAgICAgLyogW2luXSAqLyBCT09MIGFsbG93T3Zlcndy
aXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCkBAIC00MTUsNiArNDY0LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAt
IFNldCBkZXN0aW5hdGlvbiB0byAlcyIsIG1fYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAK
ICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJu
IEVfRkFJTDsKKyNlbmRpZgogfQogCiAvLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VT
ZW5kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpAQCAtNDIyLDYgKzQ3NSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRG93bmxvYWQ6OnMKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5dICovIElX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSopCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAg
ICBpZiAobV9kb3dubG9hZCkgewogICAgICAgICBDRlVSTERvd25sb2FkQ2FuY2VsKG1fZG93bmxv
YWQuZ2V0KCkpOwogICAgICAgICBtX2Rvd25sb2FkID0gMDsKQEAgLTQzMywxMSArNDg3LDE2IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmMKICAgICBtX2RlbGVnYXRl
LT5kaWRGYWlsV2l0aEVycm9yKHRoaXMsIHdlYkVycm9yLmdldCgpKTsKIAogICAgIHJldHVybiBT
X09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2Vu
ZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyog
W2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdl
KQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKQEAgLTQ0NSwxMiArNTA0LDE3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmMKICAgICBpZiAobV9kb3dubG9h
ZCkKICAgICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwg
MCwgd2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLmNmVVJMQXV0aENoYWxs
ZW5nZVJlZigpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgp
OworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRvd25sb2FkOjp1c2VDcmVkZW50aWFsKAogICAgICAgICAvKiBbaW5dICovIElXZWJV
UkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1
ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4g
RV9OT0lOVEVSRkFDRTsKQEAgLTQ2NCw4ICs1MjgsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEb3dubG9hZDo6dQogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERv
d25sb2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCks
IHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAorI2lmIFVTRShDRk5FVFdPUkspCiAvLyBD
RlVSTERvd25sb2FkIENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB2b2lkIFdlYkRvd25sb2FkOjpkaWRT
dGFydCgpCiB7CkBAIC03OTgsMyArODY3LDQgQEAgZXhpdDoKICAgICBmY2xvc2UoYnVuZGxlKTsK
ICAgICByZXR1cm4gaHI7CiB9CisjZW5kaWYKSW5kZXg6IFdlYktpdC93aW4vV2ViRG93bmxvYWQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmgJKHJldmlzaW9uIDM3Nzk4
KQorKysgV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiAr
MTA0LDcgQEAgcHVibGljOgogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBj
cmVkZW50aWFsLCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIGNoYWxsZW5nZSk7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIENGVVJMRG93
bmxvYWQgQ2FsbGJhY2tzCiAgICAgdm9pZCBkaWRTdGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJl
ZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAg
LTExNiwxMyArMTE3LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9u
KENGVVJMUmVmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChDRkVy
cm9yUmVmKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudDsKIAog
ICAgIFdlYkNvcmU6OlN0cmluZyBtX2Rlc3RpbmF0aW9uOwogICAgIFdlYkNvcmU6OlN0cmluZyBt
X2J1bmRsZVBhdGg7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3du
bG9hZFJlZj4gbV9kb3dubG9hZDsKKyNlbmRpZgogICAgIENPTVB0cjxJV2ViTXV0YWJsZVVSTFJl
cXVlc3Q+IG1fcmVxdWVzdDsKICAgICBDT01QdHI8SVdlYkRvd25sb2FkRGVsZWdhdGU+IG1fZGVs
ZWdhdGU7CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAzNzc5OCkKKysrIFdlYktpdC93aW4vV2Vi
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDYgKzE4MTMsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAgaGVhZGVyQW5kRm9vdGVySGVpZ2h0
cygmaGVhZGVySGVpZ2h0LCAmZm9vdGVySGVpZ2h0KTsKICAgICBHcmFwaGljc0NvbnRleHQgc3Bv
b2xDdHgocGN0eCk7CiAKKyNpZiBQTEFURk9STShDRykKICAgICBmb3IgKFVJTlQgaWkgPSBzdGFy
dFBhZ2U7IGlpIDwgZW5kUGFnZTsgaWkrKykgewogICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0ID0g
bV9wYWdlUmVjdHNbaWldOwogCkBAIC0xODU2LDYgKzE4NTcsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7
CiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAg
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24g
Mzc3OTgpCisrKyBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEzLDcgKzExMywxMSBAQCB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKiBp
bmZvCiAKICAgICAgICAgLy8gU2V0IHNoYWRvdyBzZXR0aW5nCiAgICAgICAgIGlmIChpbmZvLT5z
dHJ1Y3RTaXplID09IHNpemVvZihXZWJUZXh0UmVuZGVySW5mbykgJiYKKyNpZiBQTEFURk9STShD
RykKICAgICAgICAgICAgIChpbmZvLT5zaGFkb3dPZmZzZXQuY3ggfHwgaW5mby0+c2hhZG93T2Zm
c2V0LmN5IHx8IGluZm8tPnNoYWRvd0JsdXIgfHwgaW5mby0+c2hhZG93Q29sb3IpKQorI2VsaWYg
UExBVEZPUk0oQ0FJUk8pCisgICAgICAgICAgICAoaW5mby0+c2hhZG93T2Zmc2V0LmN4IHx8IGlu
Zm8tPnNoYWRvd09mZnNldC5jeSB8fCBpbmZvLT5zaGFkb3dCbHVyKSkKKyNlbmRpZgogICAgICAg
ICAgICAgY29udGV4dC5zZXRTaGFkb3coaW5mby0+c2hhZG93T2Zmc2V0LCBpbmZvLT5zaGFkb3dC
bHVyLCBpbmZvLT5zaGFkb3dDb2xvcik7CiAKICAgICAgICAgV2ViQ29yZURyYXdUZXh0QXRQb2lu
dChjb250ZXh0LCBkcmF3U3RyaW5nLCBpbmZvLT5wdCwgbWFrZUZvbnQoKihpbmZvLT5kZXNjcmlw
dGlvbikpLCBpbmZvLT5jb2xvciwgaW5mby0+dW5kZXJsaW5lZEluZGV4KTsKSW5kZXg6IFdlYktp
dC93aW4vV2ViS2l0R3JhcGhpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdy
YXBoaWNzLmgJKHJldmlzaW9uIDM3Nzk4KQorKysgV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMyBAQAogCiBleHRlcm4gIkMiIHsKIAorI2lm
IFBMQVRGT1JNKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvciogQ0dDb2xvclJlZjsKIHR5cGVk
ZWYgc3RydWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOworI2VsaWYgUExBVEZPUk0oQ0FJUk8p
Cit0eXBlZGVmIHVuc2lnbmVkIENvbG9yUmVmOyAgICAgICAgLy8gUkdCQSBxdWFkcnVwbGV0Cit0
eXBlZGVmIHN0cnVjdCBfY2Fpcm8qIENhaXJvQ29udGV4dFJlZjsKKyNlbmRpZgogCiB0eXBlZGVm
IHdjaGFyX3QgV0NIQVI7CiB0eXBlZGVmIF9fbnVsbHRlcm1pbmF0ZWQgY29uc3QgV0NIQVIqIExQ
Q1dTVFI7CkBAIC00OSwxOCArNTQsMzAgQEAgc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7CiBz
dHJ1Y3QgV2ViVGV4dFJlbmRlckluZm8KIHsKICAgICBEV09SRCBzdHJ1Y3RTaXplOworI2lmIFBM
QVRGT1JNKENHKQogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShD
QUlSTykKKyAgICBDYWlyb0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VuZGlmCiAgICAgTFBDVFNU
UiB0ZXh0OwogICAgIGludCBsZW5ndGg7CiAgICAgUE9JTlQgcHQ7CiAgICAgY29uc3QgV2ViRm9u
dERlc2NyaXB0aW9uKiBkZXNjcmlwdGlvbjsKKyNpZiBQTEFURk9STShDRykKICAgICBDR0NvbG9y
UmVmIGNvbG9yOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgQ29sb3JSZWYgY29sb3I7Cisj
ZW5kaWYKICAgICBpbnQgdW5kZXJsaW5lZEluZGV4OwogICAgIGJvb2wgZHJhd0FzUGFzc3dvcmQ7
CiAgICAgaW50IG92ZXJyaWRlU21vb3RoaW5nTGV2ZWw7IC8vIHBhc3MgaW4gLTEgaWYgY2FsbGVy
IGRvZXMgbm90IHdhbnQgdG8gb3ZlcnJpZGUgc21vb3RoaW5nIGxldmVsCiAgICAgU0laRSBzaGFk
b3dPZmZzZXQ7CiAgICAgaW50IHNoYWRvd0JsdXI7CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dD
b2xvclJlZiBzaGFkb3dDb2xvcjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENvbG9yUmVm
IHNoYWRvd0NvbG9yOworI2VuZGlmCiB9OwogCiB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5k
ZXJJbmZvKik7CkluZGV4OiBXZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24g
Mzc3OTgpCisrKyBXZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KICNwcmFnbWEgd2FybmluZyhwb3ApCiAKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBJV2ViVVJMUmVxdWVzdCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklu
ZGV4OiBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2
aXNpb24gMzc3OTgpCisrKyBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDkgKzE0OSwxMCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlVSTEF1dGhlbnRpCiAKICAgICAvLyBGSVhNRTogQWZ0ZXIgd2UgY2hhbmdl
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIHVzZSAiUmVzb3VyY2VIYW5kbGUiIGFzIHRoZSBh
YnN0cmFjdCAiU2VuZGVyIiBvciAiU291cmNlIG9mIHRoaXMgQXV0aCBDaGFsbGVuZ2UiLCB0aGVu
IHdlJ2xsCiAgICAgLy8gY29uc3RydWN0IHRoZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB3aXRo
IHRoYXQgYXMgb2J0YWluZWQgZnJvbSB0aGUgd2ViU2VuZGVyCi0KKyNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh3ZWJTcGFjZS0+cHJvdGVjdGlvblNwYWNlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRmFpbHVyZUNv
dW50LCB3ZWJSZXNwb25zZS0+cmVzb3VyY2VSZXNwb25zZSgpLCB3ZWJFcnJvci0+cmVzb3VyY2VF
cnJvcigpKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQogCkluZGV4OiBXZWJLaXQvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAkocmV2aXNp
b24gMzc3OTgpCisrKyBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmgiCiAKICNpbmNsdWRlICJDT01QdHIuaCIK
KyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1
ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiV2ViVVJMQ3Jl
ZGVudGlhbC5oIgpAQCAtMTAwLDI5ICsxMDEsNDAgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVVJMQXV0aGVudGljYQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCiAg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdl
YkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIG1faGFuZGxlLT5yZWNl
aXZlZENhbmNlbGxhdGlvbih3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkp
OwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y29udGludWVXaXRob3V0Q3JlZGVudGlh
bEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKQogeworI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgQ09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2Uo
UXVlcnksIGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKICAgICBtX2hhbmRsZS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp1c2VDcmVkZW50aWFsKAogICAgICAgICAvKiBb
aW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKICAgICAgICAgLyogW2luXSAq
LyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2Vi
Q2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTMzLDYgKzE0NSwxMCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlVSTEF1dGhlbnRpCiAKICAgICBtX2hhbmRsZS0+cmVjZWl2ZWRDcmVkZW50
aWFsKHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSwgd2ViQ3JlZGVudGlh
bC0+Y3JlZGVudGlhbCgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIC8vIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFdlYktpdC93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMzc3
OTgpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTc1LDkg
KzQxNzUsMTEgQEAgSFJFU1VMVCB1cGRhdGVTaGFyZWRTZXR0aW5nc0Zyb21QcmVmZXJlbgogICAg
IGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CiAKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIC8vIFNldCBjb29raWUgc3RvcmFnZSBhY2NlcHQgcG9saWN5CiAgICAgaWYgKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSA9IGN1cnJlbnRDb29raWVTdG9yYWdlKCkp
CiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2ll
U3RvcmFnZSwgYWNjZXB0UG9saWN5KTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIFNfT0s7CiB9Cklu
ZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlz
aW9uIDM3Nzk4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIERyYWdJbWFnZVJlZiBXZWJEcmFn
Q2xpZW50OjpjcmVhdGVEcmFnSW0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYgUExB
VEZPUk0oQ0cpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHRSZWY7CiAgICAgaW1hZ2UgPSBhbGxv
Y0ltYWdlKHdvcmtpbmdEQywgaW1hZ2VTaXplLCAmY29udGV4dFJlZik7CiAgICAgaWYgKCFpbWFn
ZSkgewpAQCAtMjU4LDYgKzI1OSw3IEBAIERyYWdJbWFnZVJlZiBXZWJEcmFnQ2xpZW50OjpjcmVh
dGVEcmFnSW0KICAgICBXZWJDb3JlRHJhd0RvdWJsZWRUZXh0QXRQb2ludChjb250ZXh0LCBsYWJl
bCwgdGV4dFBvcywgbGFiZWxGb250LCB0b3BDb2xvciwgYm90dG9tQ29sb3IpOwogCiAgICAgQ0dD
b250ZXh0UmVsZWFzZShjb250ZXh0UmVmKTsKKyNlbmRpZgogICAgIERlbGV0ZURDKHdvcmtpbmdE
Qyk7CiAgICAgUmVsZWFzZURDKDAsIGRjKTsKICAgICByZXR1cm4gaW1hZ2U7CkluZGV4OiBXZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gMzc3OTgpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkNPTVByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiRW1iZWRkZWRXaWRnZXQuaCIKICNpbmNsdWRl
ICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIldlYkNhY2hlZFBhZ2VQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgpAQCAtMTA0LDYgKzEwNSw3
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWYKIAogdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5zb3VyY2VIYW5kbGUoKSk7CiAKICAgICBXZWJWaWV3
KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwpAQCAtMTE3LDYgKzExOSw5IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAvLyBJZiB0aGUgUmVz
b3VyY2VMb2FkRGVsZWdhdGUgZG9lc24ndCBleGlzdCBvciBmYWlscyB0byBoYW5kbGUgdGhlIGNh
bGwsIHdlIHRlbGwgdGhlIFJlc291cmNlSGFuZGxlCiAgICAgLy8gdG8gY29udGludWUgd2l0aG91
dCBjcmVkZW50aWFsIC0gdGhpcyBpcyB0aGUgYmVzdCBhcHByb3hpbWF0aW9uIG9mIE1hYyBiZWhh
dmlvcgogICAgIGNoYWxsZW5nZS5zb3VyY2VIYW5kbGUoKS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250
aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7CisjZWxzZQorICAgbm90SW1wbGVtZW50
ZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW5nZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25086</attachid>
            <date>2008-11-11 21:45:54 -0800</date>
            <delta_ts>2008-11-25 16:30:41 -0800</delta_ts>
            <desc>Patch against current sources.</desc>
            <filename>webkit_dll.patch</filename>
            <type>text/plain</type>
            <size>27257</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiAzODMyOSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNTIgQEAKKzIwMDgtMTEtMTEgIFUtYmZ1bGdoYW0tUENcYmZ1bGdo
YW0gIDxzZXQgRU1BSUxfQUREUkVTUyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgor
ICAgICAgICAoV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZSk6CisgICAgICAgIChXZWJBcmNoaXZlOjpp
bml0V2l0aE5vZGUpOgorICAgICAgICAoV2ViQXJjaGl2ZTo6ZGF0YSk6CisgICAgICAgICogV2Vi
QXJjaGl2ZS5oOgorICAgICAgICAqIFdlYkNvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
Q29va2llTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29va2llTWFuYWdl
cjo6UXVlcnlJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29va2llTWFuYWdlcjo6Y29va2llU3Rv
cmFnZSk6CisgICAgICAgIChXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVTdG9yYWdlKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkRy
YWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAg
ICogV2ViRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmluaXQpOgorICAgICAg
ICAoV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVzdCk6CisgICAgICAgIChXZWJEb3dubG9hZDo6
aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSk6CisgICAgICAgIChXZWJEb3dubG9hZDo6c3RhcnQpOgor
ICAgICAgICAoV2ViRG93bmxvYWQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJEb3dubG9hZDo6Y2Fu
Y2VsRm9yUmVzdW1lKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpkZWxldGVzRmlsZVVwb25GYWls
dXJlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpidW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCk6Cisg
ICAgICAgIChXZWJEb3dubG9hZDo6c2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSk6CisgICAgICAg
IChXZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24pOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmNh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpjb250
aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAg
ICAoV2ViRG93bmxvYWQ6OnVzZUNyZWRlbnRpYWwpOgorICAgICAgICAqIFdlYkRvd25sb2FkLmg6
CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnNwb29sUGFnZXMp
OgorICAgICAgICAqIFdlYktpdEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkRyYXdUZXh0KToK
KyAgICAgICAgKiBXZWJLaXRHcmFwaGljcy5oOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11dGFibGVVUkxSZXF1ZXN0OjptdXRhYmxlQ29weSk6Cisg
ICAgICAgICogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwOgorICAgICAgICAoV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmluaXRXaXRoUHJvdGVjdGlvblNwYWNlKToKKyAg
ICAgICAgKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHA6CisgICAgICAg
IChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6
CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6dXNlQ3JlZGVu
dGlhbCk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgICh1cGRhdGVTaGFyZWRTZXR0
aW5nc0Zyb21QcmVmZXJlbmNlc0lmTmVlZGVkKToKKwogMjAwOC0xMS0xMSAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCklu
ZGV4OiBXZWJLaXQvd2luL1dlYkFyY2hpdmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViQXJjaGl2ZS5jcHAJKHJldmlzaW9uIDM4MzIwKQorKysgV2ViS2l0L3dpbi9XZWJBcmNoaXZl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTAgQEAKIAogI2luY2x1ZGUgIkRPTUNv
cmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RyZWFtLmgiCisKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2VuZGlmCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00Miw2ICs0NSw3IEBAIFdlYkFyY2hpdmUqIFdl
YkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKCkKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CiAKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogV2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6Y3JlYXRlSW5zdGFuY2Uo
UGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSkKIHsKICAgICBXZWJBcmNo
aXZlKiBpbnN0YW5jZSA9IG5ldyBXZWJBcmNoaXZlKGNvcmVBcmNoaXZlKTsKQEAgLTU3LDYgKzYx
LDEzIEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoUGFzc1JlZlB0cjxMZWdhY3kKICAgICBnQ2xh
c3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudC5hZGQoIldlYkFyY2hpdmUiKTsKIH0KKyNl
bHNlCitXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKGludCBpZ25vcmUpCisgICAgOiBtX3JlZkNvdW50
KDApCit7CisgICAgZ0NsYXNzQ291bnQrKzsKK30KKyNlbmRpZgogCiBXZWJBcmNoaXZlOjp+V2Vi
QXJjaGl2ZSgpCiB7CkBAIC0xMTgsNyArMTI5LDkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJBcmNoaXZlOjppbgogICAgIGlmICghZG9tTm9kZSkKICAgICAgICAgcmV0dXJuIEVfTk9J
TlRFUkZBQ0U7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fYXJjaGl2ZSA9IExlZ2FjeVdl
YkFyY2hpdmU6OmNyZWF0ZShkb21Ob2RlLT5ub2RlKCkpOworI2VuZGlmCiAgICAgCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkBAIC0xNDQsNiArMTU3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJBcmNoaXZlOjpzdQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjpk
YXRhKAogICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIElTdHJlYW0qKiBzdHJlYW0pCiB7Cisj
aWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBtX2Fy
Y2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOwogICAgIGlmICghY2ZEYXRhKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwpAQCAtMTUzLDQgKzE2Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViQXJjaGl2ZTo6ZGEKICAgICAqc3RyZWFtID0gTWVtb3J5U3RyZWFtOjpjcmVhdGVJ
bnN0YW5jZShidWZmZXIpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIHJldHVybiBF
X05PVElNUEw7CisjZW5kaWYKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViQXJjaGl2ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQXJjaGl2ZS5oCShyZXZpc2lvbiAzODMyMCkKKysrIFdl
YktpdC93aW4vV2ViQXJjaGl2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSArMjgsMjkgQEAK
IAogI2luY2x1ZGUgIldlYktpdC5oIgogCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmU7CiB9CisjZW5kaWYKIAogY2xhc3Mg
V2ViQXJjaGl2ZSA6IHB1YmxpYyBJV2ViQXJjaGl2ZQogewogcHVibGljOgogICAgIHN0YXRpYyBX
ZWJBcmNoaXZlKiBjcmVhdGVJbnN0YW5jZSgpOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgc3Rh
dGljIFdlYkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZT4pOwogcHJvdGVjdGVkOgogICAgIFdlYkFyY2hpdmUoUGFzc1JlZlB0cjxXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7CiAgICAgfldlYkFyY2hpdmUoKTsKKyNlbHNlCisgICAg
V2ViQXJjaGl2ZShpbnQpOworcHJvdGVjdGVkOgorICAgIH5XZWJBcmNoaXZlKCk7CisjZW5kaWYK
IAogcHVibGljOgogICAgIC8vIElVbmtub3duCkBAIC03OCw3ICs4Niw5IEBAIHB1YmxpYzoKIAog
cHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQ7CisjaWYgVVNFKENGTkVUV09SSykKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4gbV9hcmNoaXZlOworI2VuZGlmCiB9
OwogCiAjZW5kaWYgLy8gV2ViQXJjaGl2ZV9oCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvb2tpZU1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29va2llTWFuYWdlci5jcHAJ
KHJldmlzaW9uIDM4MzIwKQorKysgV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTIgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1
ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llU3RvcmFnZVdpbi5oPgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzYsOSArNDAs
MTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkNvb2tpZU1hbmFnZXIqIFdlYkNv
b2tpZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAg
IFdlYkNvb2tpZU1hbmFnZXIqIG1hbmFnZXIgPSBuZXcgV2ViQ29va2llTWFuYWdlcjsKICAgICBt
YW5hZ2VyLT5BZGRSZWYoKTsKICAgICByZXR1cm4gbWFuYWdlcjsgICAgCisjZWxzZQorICAgcmV0
dXJuIDA7CisjZW5kaWYKIH0KIAogV2ViQ29va2llTWFuYWdlcjo6V2ViQ29va2llTWFuYWdlcigp
CkBAIC01OCw2ICs2Niw3IEBAIFdlYkNvb2tpZU1hbmFnZXI6On5XZWJDb29raWVNYW5hZ2VyKCkK
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpRdWVyeUludGVy
ZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgICpwcHZPYmplY3QgPSAwOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVu
a25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29va2llTWFuYWdl
cio+KHRoaXMpOwpAQCAtNjgsNiArNzcsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJDb29raWVNYW5hZwogCiAgICAgQWRkUmVmKCk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQor
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcjo6QWRkUmVmKCkKQEAgLTg5LDE2
ICsxMDIsMjYgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcgogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpjb29raWVTdG9yYWdlKCAK
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYqIHN0b3JhZ2Up
CiB7Ci0gICAgaWYgKCFzdG9yYWdlKQorI2lmIFVTRShDRk5FVFdPUkspCisgICBpZiAoIXN0b3Jh
Z2UpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICAqc3RvcmFnZSA9IGN1cnJlbnRD
b29raWVTdG9yYWdlKCk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVTdG9yYWdlKCAKICAgICAvKiBbaW5d
ICovIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgc3RvcmFnZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIHNldEN1cnJlbnRDb29raWVTdG9yYWdlKHN0b3JhZ2UpOwogICAgIHJldHVybiBTX09L
OworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlm
CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkRvd25sb2FkLmNwcAkocmV2aXNpb24gMzgzMjApCisrKyBXZWJLaXQvd2luL1dl
YkRvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsOSBAQAogI2luY2x1ZGUg
PHN5cy90eXBlcy5oPgogCiAjcHJhZ21hIHdhcm5pbmcocHVzaCwgMCkKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DRi5oPgorI2VuZGlmCiAjaW5j
bHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNTUsNiArNTcsNyBA
QAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2lmIFVTRShDRk5FVFdPUkspCiAvLyBD
RlVSTERvd25sb2FkIENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzdGF0aWMgdm9pZCBkaWRTdGFydENhbGxi
YWNrKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwog
c3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3RDYWxsYmFjayhDRlVSTERvd25s
b2FkUmVmIGRvd25sb2FkLCBDRlVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJl
ZiByZWRpcmVjdGlvblJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAgLTc0LDYg
Kzc3LDcgQEAgc3RhdGljIFVJbnQzMiBCdW5kbGVNYWdpY051bWJlciA9IDB4REVDQQogCiBzdGF0
aWMgQ0ZEYXRhUmVmIGV4dHJhY3RSZXN1bWVEYXRhRnJvbUJ1bmRsZShjb25zdCBTdHJpbmcmIGJ1
bmRsZVBhdGgpOwogc3RhdGljIEhSRVNVTFQgYXBwZW5kUmVzdW1lRGF0YVRvQnVuZGxlKENGRGF0
YVJlZiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOworI2VuZGlmCiAKIC8v
IFdlYkRvd25sb2FkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtODYsNiArOTAsNyBAQCBXZWJEb3dubG9hZDo6V2Vi
RG93bmxvYWQoKQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZSA/IGRlbGVnYXRlIDogRGVmYXVs
dERvd25sb2FkRGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCk7CiAgICAgQ0ZVUkxDb25uZWN0aW9u
UmVmIGNvbm5lY3Rpb24gPSBoYW5kbGUtPmNvbm5lY3Rpb24oKTsKICAgICBpZiAoIWNvbm5lY3Rp
b24pIHsKQEAgLTExMywxMCArMTE4LDEyIEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoUmVzb3Vy
Y2VIYW5kbGUqIGgKICAgICAvLyBFaXRoZXIgd2F5LCB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhlIGNv
bm5lY3Rpb24gdG8gYmFsYW5jZSBvdXQgcmVmIGNvdW50cwogICAgIGhhbmRsZS0+cmVsZWFzZUNv
bm5lY3Rpb25Gb3JEb3dubG9hZCgpOwogICAgIENGUmVsZWFzZShjb25uZWN0aW9uKTsKKyNlbmRp
ZgogfQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgSVdlYkRvd25s
b2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9kZWxl
Z2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6c2hh
cmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1IoIkRlbGVnYXRlIGlzICVwIiwgbV9kZWxlZ2F0
ZS5nZXQoKSk7CiAKQEAgLTEzMyw2ICsxNDAsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNv
bnN0IEtVUkwmIHVybCwgCiAgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlRG93bmxvYWRXaXRoUnVu
TG9vcChtX2Rvd25sb2FkLmdldCgpLCBSZXNvdXJjZUhhbmRsZTo6bG9hZGVyUnVuTG9vcCgpLCBr
Q0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQg
LSBJbml0aWFsaXplZCBkb3dubG9hZCBvZiB1cmwgJXMgaW4gV2ViRG93bmxvYWQgJXAiLCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcyk7CisjZW5kaWYKIH0KIAogV2ViRG93bmxvYWQ6
On5XZWJEb3dubG9hZCgpCkBAIC0yMDYsNiArMjE0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEb3dubG9hZDo6aQogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxSZXF1ZXN0KiBy
ZXF1ZXN0LCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdh
dGUpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVl
c3Q+IHdlYlJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0IHx8IEZBSUxFRChyZXF1ZXN0LT5RdWVy
eUludGVyZmFjZSgmd2ViUmVxdWVzdCkpKSB7CiAgICAgICAgIExPRyhEb3dubG9hZCwgIldlYkRv
d25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGZhaWxlZCAtIG5vdCBhIFdlYk11dGFibGVVUkxSZXF1
ZXN0Iik7ICAgIApAQCAtMjM3LDEyICsyNDYsMTcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0
V2l0aFJlcXVlc3QgY29tcGxldGUsIHN0YXJ0ZWQgZG93bmxvYWQgb2YgdXJsICVzIiwgd2ViUmVx
dWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBF
X0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9h
ZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGJ1bmRs
ZVBhdGgsIAogICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0
ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIkF0dGVtcHRpbmcg
cmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJp
bmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIFJldGFpblB0cjxDRkRh
dGFSZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgZXh0cmFjdFJlc3VtZURhdGFGcm9tQnVuZGxlKFN0
cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CkBAIC0yODMsNiAr
Mjk3LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmkKIAogICAg
IExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGNvbXBsZXRlLCBy
ZXN1bWVkIGRvd25sb2FkIG9mIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJp
bmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNl
bHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQog
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5SZXN1bWVEb3dubG9h
ZERlY29kZWRXaXRoRW5jb2RpbmdNSU1FVHlwZSgKQEAgLTI5NSw2ICszMTMsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRG93bmxvYWQ6OnN0YXJ0KCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU3RhcnRpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMp
OwogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTMwNSwx
MCArMzI0LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMKICAg
ICBkaWRTdGFydCgpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsKCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAg
IExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9hZCAoJXApIiwg
dGhpcyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAt
MzE2LDEwICszNDAsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6
YwogICAgIENGVVJMRG93bmxvYWRDYW5jZWwobV9kb3dubG9hZC5nZXQoKSk7CiAgICAgbV9kb3du
bG9hZCA9IDA7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9hZCAoJXAp
LCB3cml0aW5nIHJlc3VtZSBpbmZvcm1hdGlvbiB0byBmaWxlIGlmIHBvc3NpYmxlIiwgdGhpcyk7
CiAgICAgQVNTRVJUKG1fZG93bmxvYWQpOwogICAgIGlmICghbV9kb3dubG9hZCkKQEAgLTM0Niwy
MSArMzc1LDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmMKIGV4
aXQ6CiAgICAgbV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIGhyOworI2Vsc2UKKyAgIG5vdElt
cGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUoCiAgICAg
ICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgICpy
ZXN1bHQgPSBDRlVSTERvd25sb2FkRGVsZXRlc1Vwb25GYWlsdXJlKG1fZG93bmxvYWQuZ2V0KCkp
OwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1
cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93
bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKAogICAgICAgICAvKiBbaW5dICovIEJTVFIg
dGFyZ2V0UGF0aCwgCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNUUiogYnVuZGxlUGF0
aCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghdGFyZ2V0UGF0aCkKICAgICAgICAg
cmV0dXJuIEVfSU5WQUxJREFSRzsKIApAQCAtMzc2LDYgKzQxNSwxMCBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpiCiAgICAgaWYgKCEqYnVuZGxlUGF0aCkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1l
bnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjpyZXF1ZXN0KApAQCAtMzkyLDE2ICs0MzUsMjIgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cgogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6c2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgKICAgICAgICAg
LyogW2luXSAqLyBCT09MIGRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpCiB7CisjaWYgVVNFKENGTkVU
V09SSykKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAg
Q0ZVUkxEb3dubG9hZFNldERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25sb2FkLmdldCgpLCAhIWRl
bGV0ZXNGaWxlVXBvbkZhaWx1cmUpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdElt
cGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKAogICAgICAgICAvKiBb
aW5dICovIEJTVFIgcGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd092ZXJ3cml0
ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIApAQCAtNDE1LDYgKzQ2NCwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRvd25sb2FkOjpzCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBT
ZXQgZGVzdGluYXRpb24gdG8gJXMiLCBtX2J1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogCiAg
ICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBF
X0ZBSUw7CisjZW5kaWYKIH0KIAogLy8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTQyMiw2ICs0NzUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRvd25sb2FkOjpzCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2Fk
OjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
aWYgKG1fZG93bmxvYWQpIHsKICAgICAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbChtX2Rvd25sb2Fk
LmdldCgpKTsKICAgICAgICAgbV9kb3dubG9hZCA9IDA7CkBAIC00MzMsMTEgKzQ4NywxNiBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgbV9kZWxlZ2F0ZS0+
ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKICAgICByZXR1cm4gU19P
SzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRp
ZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjb250aW51ZVdp
dGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCiAgICAgICAgIC8qIFtp
bl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYg
VVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+
IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkK
ICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NDUsMTIgKzUwNCwxNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgaWYgKG1fZG93bmxvYWQp
CiAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIDAs
IHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVu
Z2VSZWYoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJEb3dubG9hZDo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
Q3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAg
ICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVy
eSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVf
Tk9JTlRFUkZBQ0U7CkBAIC00NjQsOCArNTI4LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRG93bmxvYWQ6OnUKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3du
bG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCB3
ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdl
UmVmKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogLy8gQ0ZV
UkxEb3dubG9hZCBDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBXZWJEb3dubG9hZDo6ZGlkU3Rh
cnQoKQogewpAQCAtNzk4LDMgKzg2Nyw0IEBAIGV4aXQ6CiAgICAgZmNsb3NlKGJ1bmRsZSk7CiAg
ICAgcmV0dXJuIGhyOwogfQorI2VuZGlmCkluZGV4OiBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShyZXZpc2lvbiAzODMyMCkK
KysrIFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEw
NCw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3JlZGVudGlhbCogY3Jl
ZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKiBjaGFsbGVuZ2UpOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBDRlVSTERvd25s
b2FkIENhbGxiYWNrcwogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJlcXVlc3RSZWYg
d2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZik7CkBAIC0x
MTYsMTMgKzExNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihD
RlVSTFJlZik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoQ0ZFcnJv
clJlZik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQ7CiAKICAg
ICBXZWJDb3JlOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXZWJDb3JlOjpTdHJpbmcgbV9i
dW5kbGVQYXRoOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGVVJMRG93bmxv
YWRSZWY+IG1fZG93bmxvYWQ7CisjZW5kaWYKICAgICBDT01QdHI8SVdlYk11dGFibGVVUkxSZXF1
ZXN0PiBtX3JlcXVlc3Q7CiAgICAgQ09NUHRyPElXZWJEb3dubG9hZERlbGVnYXRlPiBtX2RlbGVn
YXRlOwogCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMzgzMjApCisrKyBXZWJLaXQvd2luL1dlYkZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxMyw2ICsxODEzLDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3BvbwogICAgIGhlYWRlckFuZEZvb3RlckhlaWdodHMo
JmhlYWRlckhlaWdodCwgJmZvb3RlckhlaWdodCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHNwb29s
Q3R4KHBjdHgpOwogCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgZm9yIChVSU5UIGlpID0gc3RhcnRQ
YWdlOyBpaSA8IGVuZFBhZ2U7IGlpKyspIHsKICAgICAgICAgSW50UmVjdCBwYWdlUmVjdCA9IG1f
cGFnZVJlY3RzW2lpXTsKIApAQCAtMTg1Niw2ICsxODU3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJGcmFtZTo6c3BvbwogICAgICAgICBDR0NvbnRleHRFbmRQYWdlKHBjdHgpOwog
ICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBjdHgpOwogICAgIH0KKyNlbmRpZgogIAog
ICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAJKHJldmlzaW9uIDM4
MzIwKQorKysgV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMyw3ICsxMTMsMTEgQEAgdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5m
bwogCiAgICAgICAgIC8vIFNldCBzaGFkb3cgc2V0dGluZwogICAgICAgICBpZiAoaW5mby0+c3Ry
dWN0U2l6ZSA9PSBzaXplb2YoV2ViVGV4dFJlbmRlckluZm8pICYmCisjaWYgUExBVEZPUk0oQ0cp
CiAgICAgICAgICAgICAoaW5mby0+c2hhZG93T2Zmc2V0LmN4IHx8IGluZm8tPnNoYWRvd09mZnNl
dC5jeSB8fCBpbmZvLT5zaGFkb3dCbHVyIHx8IGluZm8tPnNoYWRvd0NvbG9yKSkKKyNlbGlmIFBM
QVRGT1JNKENBSVJPKQorICAgICAgICAgICAgKGluZm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZv
LT5zaGFkb3dPZmZzZXQuY3kgfHwgaW5mby0+c2hhZG93Qmx1cikpCisjZW5kaWYKICAgICAgICAg
ICAgIGNvbnRleHQuc2V0U2hhZG93KGluZm8tPnNoYWRvd09mZnNldCwgaW5mby0+c2hhZG93Qmx1
ciwgaW5mby0+c2hhZG93Q29sb3IpOwogCiAgICAgICAgIFdlYkNvcmVEcmF3VGV4dEF0UG9pbnQo
Y29udGV4dCwgZHJhd1N0cmluZywgaW5mby0+cHQsIG1ha2VGb250KCooaW5mby0+ZGVzY3JpcHRp
b24pKSwgaW5mby0+Y29sb3IsIGluZm8tPnVuZGVybGluZWRJbmRleCk7CkluZGV4OiBXZWJLaXQv
d2luL1dlYktpdEdyYXBoaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRHcmFw
aGljcy5oCShyZXZpc2lvbiAzODMyMCkKKysrIFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsMTMgQEAKIAogZXh0ZXJuICJDIiB7CiAKKyNpZiBQ
TEFURk9STShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29sb3IqIENHQ29sb3JSZWY7CiB0eXBlZGVm
IHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQor
dHlwZWRlZiB1bnNpZ25lZCBDb2xvclJlZjsgICAgICAgIC8vIFJHQkEgcXVhZHJ1cGxldAordHlw
ZWRlZiBzdHJ1Y3QgX2NhaXJvKiBDYWlyb0NvbnRleHRSZWY7CisjZW5kaWYKIAogdHlwZWRlZiB3
Y2hhcl90IFdDSEFSOwogdHlwZWRlZiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IFdDSEFSKiBMUENX
U1RSOwpAQCAtNDksMTggKzU0LDMwIEBAIHN0cnVjdCBXZWJGb250RGVzY3JpcHRpb24gewogc3Ry
dWN0IFdlYlRleHRSZW5kZXJJbmZvCiB7CiAgICAgRFdPUkQgc3RydWN0U2l6ZTsKKyNpZiBQTEFU
Rk9STShDRykKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VsaWYgUExBVEZPUk0oQ0FJ
Uk8pCisgICAgQ2Fpcm9Db250ZXh0UmVmIGNnQ29udGV4dDsKKyNlbmRpZgogICAgIExQQ1RTVFIg
dGV4dDsKICAgICBpbnQgbGVuZ3RoOwogICAgIFBPSU5UIHB0OwogICAgIGNvbnN0IFdlYkZvbnRE
ZXNjcmlwdGlvbiogZGVzY3JpcHRpb247CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJl
ZiBjb2xvcjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENvbG9yUmVmIGNvbG9yOworI2Vu
ZGlmCiAgICAgaW50IHVuZGVybGluZWRJbmRleDsKICAgICBib29sIGRyYXdBc1Bhc3N3b3JkOwog
ICAgIGludCBvdmVycmlkZVNtb290aGluZ0xldmVsOyAvLyBwYXNzIGluIC0xIGlmIGNhbGxlciBk
b2VzIG5vdCB3YW50IHRvIG92ZXJyaWRlIHNtb290aGluZyBsZXZlbAogICAgIFNJWkUgc2hhZG93
T2Zmc2V0OwogICAgIGludCBzaGFkb3dCbHVyOworI2lmIFBMQVRGT1JNKENHKQogICAgIENHQ29s
b3JSZWYgc2hhZG93Q29sb3I7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBDb2xvclJlZiBz
aGFkb3dDb2xvcjsKKyNlbmRpZgogfTsKIAogdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVy
SW5mbyopOwpJbmRleDogV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDM4
MzIwKQorKysgV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+
CiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gSVdlYlVSTFJlcXVlc3QgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
MzY3LDkgKzM2OSwxMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxS
CiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisjaWYgVVNF
KENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJs
ZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdCgpKSk7CiAgICAgKnJlc3VsdCA9IGNy
ZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRhYmxlUmVxdWVzdC5nZXQoKSkpOwogICAg
IHJldHVybiBTX09LOworI2Vsc2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9CiAK
IC8vIElXZWJNdXRhYmxlVVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMzgzMjApCisrKyBXZWJLaXQvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDkgKzE0
OSwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpCiAKICAgICAv
LyBGSVhNRTogQWZ0ZXIgd2UgY2hhbmdlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIHVzZSAi
UmVzb3VyY2VIYW5kbGUiIGFzIHRoZSBhYnN0cmFjdCAiU2VuZGVyIiBvciAiU291cmNlIG9mIHRo
aXMgQXV0aCBDaGFsbGVuZ2UiLCB0aGVuIHdlJ2xsCiAgICAgLy8gY29uc3RydWN0IHRoZSBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSB3aXRoIHRoYXQgYXMgb2J0YWluZWQgZnJvbSB0aGUgd2ViU2Vu
ZGVyCi0KKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh3ZWJTcGFjZS0+cHJvdGVjdGlvblNwYWNlKCksIHdl
YkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZXZpb3VzRmFpbHVyZUNvdW50LCB3ZWJSZXNwb25zZS0+cmVzb3VyY2VSZXNwb25z
ZSgpLCB3ZWJFcnJvci0+cmVzb3VyY2VFcnJvcigpKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09L
OwogfQogCkluZGV4OiBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcAkocmV2aXNpb24gMzgzMjApCisrKyBXZWJLaXQvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmgi
CiAKICNpbmNsdWRlICJDT01QdHIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiCiAjaW5jbHVkZSAiV2ViVVJMQ3JlZGVudGlhbC5oIgpAQCAtMTAwLDI5ICsxMDEsNDAgQEAg
VUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYQogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBD
T01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwg
Y2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAogICAgIG1faGFuZGxlLT5yZWNlaXZlZENhbmNlbGxhdGlvbih3ZWJDaGFsbGVuZ2UtPmF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6
Y29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAogICAg
ICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdl
KQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJD
aGFsbGVuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBtX2hhbmRsZS0+cmVjZWl2
ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKHdlYkNoYWxsZW5nZS0+YXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp1c2VD
cmVkZW50aWFsKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50
aWFsLCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uq
IGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAg
IGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTMzLDYgKzE0
NSwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpCiAKICAgICBt
X2hhbmRsZS0+cmVjZWl2ZWRDcmVkZW50aWFsKHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKSwgd2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpKTsKICAgICByZXR1cm4gU19P
SzsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2Vu
ZGlmCiB9CiAKIC8vIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
SW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMzgzMjApCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MTkzLDkgKzQxOTMsMTEgQEAgSFJFU1VMVCB1cGRhdGVTaGFyZWRT
ZXR0aW5nc0Zyb21QcmVmZXJlbgogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4g
aHI7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIFNldCBjb29raWUgc3RvcmFnZSBhY2Nl
cHQgcG9saWN5CiAgICAgaWYgKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSA9
IGN1cnJlbnRDb29raWVTdG9yYWdlKCkpCiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRD
b29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZSwgYWNjZXB0UG9saWN5KTsKKyNlbmRpZgog
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkRyYWdDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRHJhZ0NsaWVudC5jcHAJKHJldmlzaW9uIDM4MzIwKQorKysgV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3
IEBAIERyYWdJbWFnZVJlZiBXZWJEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW0KICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHRSZWY7CiAgICAgaW1hZ2UgPSBhbGxvY0ltYWdlKHdvcmtpbmdEQywgaW1hZ2VTaXplLCAmY29u
dGV4dFJlZik7CiAgICAgaWYgKCFpbWFnZSkgewpAQCAtMjU4LDYgKzI1OSw3IEBAIERyYWdJbWFn
ZVJlZiBXZWJEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW0KICAgICBXZWJDb3JlRHJhd0RvdWJsZWRU
ZXh0QXRQb2ludChjb250ZXh0LCBsYWJlbCwgdGV4dFBvcywgbGFiZWxGb250LCB0b3BDb2xvciwg
Ym90dG9tQ29sb3IpOwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjb250ZXh0UmVmKTsKKyNlbmRp
ZgogICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7CiAgICAgUmVsZWFzZURDKDAsIGRjKTsKICAgICBy
ZXR1cm4gaW1hZ2U7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMzgzMjApCisrKyBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNPTVByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiRW1i
ZWRkZWRXaWRnZXQuaCIKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKKyNpbmNsdWRl
ICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYkNhY2hlZFBhZ2VQbGF0Zm9ybURhdGEu
aCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExv
YWRlci5oIgpAQCAtMTA0LDYgKzEwNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFz
c2lnbklkZW50aWYKIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5zb3VyY2VI
YW5kbGUoKSk7CiAKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygp
OwpAQCAtMTE3LDYgKzExOSw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkUmUKICAgICAvLyBJZiB0aGUgUmVzb3VyY2VMb2FkRGVsZWdhdGUgZG9lc24ndCBleGlzdCBv
ciBmYWlscyB0byBoYW5kbGUgdGhlIGNhbGwsIHdlIHRlbGwgdGhlIFJlc291cmNlSGFuZGxlCiAg
ICAgLy8gdG8gY29udGludWUgd2l0aG91dCBjcmVkZW50aWFsIC0gdGhpcyBpcyB0aGUgYmVzdCBh
cHByb3hpbWF0aW9uIG9mIE1hYyBiZWhhdmlvcgogICAgIGNoYWxsZW5nZS5zb3VyY2VIYW5kbGUo
KS0+cmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7
CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM4MzI5
KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAg
QEAKKzIwMDgtMTEtMTEgIFUtYmZ1bGdoYW0tUENcYmZ1bGdoYW0gIDxzZXQgRU1BSUxfQUREUkVT
UyBlbnZpcm9ubWVudCB2YXJpYWJsZT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcDoKKyAgICAgICAg
KF90V2luTWFpbik6CisKIDIwMDgtMTEtMDYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBCVUlMRCBGSVg6IEJhY2tlZCBvdXQgcjM4MTg5IChhbmQgcjM4MjAz
KSBmb3IgWGNvZGUgMy4wLgpJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNo
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVy
LmNwcAkocmV2aXNpb24gMzgzMjApCisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVu
Y2hlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw3ICsyMDMsNyBAQCBpbnQgQVBJRU5UUlkg
X3RXaW5NYWluKEhJTlNUQU5DRSBoSW5zdGFuCiAgICAgICAgIGdvdG8gZXhpdDsKICAgICBzdGF0
aWMgQlNUUiBkZWZhdWx0SFRNTCA9IDA7CiAgICAgaWYgKCFkZWZhdWx0SFRNTCkKLSAgICAgICAg
ZGVmYXVsdEhUTUwgPSBTeXNBbGxvY1N0cmluZyhURVhUKCI8cCBzdHlsZT1cImJhY2tncm91bmQt
Y29sb3I6ICMwMEZGMDBcIj5UZXN0aW5nPC9wPjxpbWcgc3JjPVwiaHR0cDovL3dlYmtpdC5vcmcv
aW1hZ2VzL2ljb24tZ29sZC5wbmdcIiBhbHQ9XCJGYWNlXCI+PGRpdiBzdHlsZT1cImJvcmRlcjog
c29saWQgYmx1ZVwiIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIj5kaXYgd2l0aCBibHVlIGJvcmRl
cjwvZGl2Pjx1bD48bGk+Zm9vPGxpPmJhcjxsaT5iYXo8L3VsPiIpKTsKKyAgICAgICBkZWZhdWx0
SFRNTCA9IFN5c0FsbG9jU3RyaW5nKFRFWFQoIjxwIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjog
IzAwRkYwMCBmb250LWZhbWlseTogQ291cmllclwiPlRlc3Rpbmc8L3A+PGltZyBzcmM9XCJodHRw
Oi8vd2Via2l0Lm9yZy9pbWFnZXMvaWNvbi1nb2xkLnBuZ1wiIGFsdD1cIkZhY2VcIj48ZGl2IHN0
eWxlPVwiYm9yZGVyOiBzb2xpZCBibHVlXCIgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiPmRpdiB3
aXRoIGJsdWUgYm9yZGVyPC9kaXY+PHVsPjxsaT5mb288bGk+YmFyPGxpPmJhejwvdWw+IikpOwog
ICAgIGZyYW1lLT5sb2FkSFRNTFN0cmluZyhkZWZhdWx0SFRNTCwgMCk7CiAgICAgZnJhbWUtPlJl
bGVhc2UoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25087</attachid>
            <date>2008-11-11 21:48:24 -0800</date>
            <delta_ts>2008-11-25 16:30:41 -0800</delta_ts>
            <desc>Configuration Patches for Cairo build.</desc>
            <filename>config.patch</filename>
            <type>text/plain</type>
            <size>965</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzODMyMCkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsOCArMjQ2LDEwIEBACiAj
ZW5kaWYKIAogI2lmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikpICYmICFkZWZpbmVk
KEVOQUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUykKKyNpZiAoIVBMQVRGT1JNKENBSVJPKSkKICNk
ZWZpbmUgRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURTIDEKICNlbmRpZgorI2VuZGlmCiAKIC8q
IGZvciBVbmljb2RlLCBLREUgdXNlcyBRdCAqLwogI2lmIFBMQVRGT1JNKEtERSkgfHwgUExBVEZP
Uk0oUVQpCkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29u
ZmlnLmgJKHJldmlzaW9uIDM4MzIwKQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5
KQpAQCAtOTEsOSArOTEsMTYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQorI2lmIDAK
ICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NHIDEKICN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJUk8KICNk
ZWZpbmUgV1RGX1VTRV9DRk5FVFdPUksgMQorI2Vsc2UKKyN1bmRlZiBXVEZfUExBVEZPUk1fQ0cK
KyNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEKKyN1bmRlZiBXVEZfVVNFX0NGTkVUV09SSwor
I2RlZmluZSBXVEZfVVNFX0NVUkwgMQorI2VuZGlmCiAjdW5kZWYgV1RGX1VTRV9XSU5JTkVUCiAj
ZGVmaW5lIFdURl9QTEFURk9STV9DRiAxCiAjZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25510</attachid>
            <date>2008-11-25 16:30:41 -0800</date>
            <delta_ts>2008-11-26 14:06:33 -0800</delta_ts>
            <desc>Full Patch versus ToT</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>55150</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTAgQEAKIAogI2lmIENPTVBJTEVSKE1TVkMpCiAjaWZuZGVmIFdJTlZFUgotI2RlZmluZSBX
SU5WRVIgMHgwNTAwCisjZGVmaW5lIFdJTlZFUiAweDA1MDEKICNlbmRpZgogI2lmbmRlZiBfV0lO
MzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMAorI2RlZmluZSBfV0lOMzJfV0lO
TlQgMHgwNTAxCiAjZW5kaWYKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8Y3J0ZGJn
Lmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzg2OTQpCisrKyBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw3IEBA
CiAjaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0cgMQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0kgMQorI2RlZmluZSBFTkFCTEVfU0FGQVJJX0lOVEVSRkFDRSAxCiAjZW5k
aWYKIAogLyogUExBVEZPUk0oU0tJQSkgZm9yIFdpbi9MaW51eCwgQ0cvQ0kgZm9yIE1hYyAqLwpA
QCAtMTUxLDYgKzE1Miw3IEBACiAvKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgY2hhbmdlZCBmcm9t
IGEgYmxhY2tsaXN0IHRvIGEgd2hpdGVsaXN0ICovCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBM
QVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oV1gpICYmICFQTEFURk9STShDSFJPTUlVTSkKICNkZWZp
bmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEKKyN1bmRlZiBFTkFCTEVfVklERU8KICNlbmRpZgogCiAv
KiBDUFUgKi8KQEAgLTI1Myw3ICsyNTUsNyBAQAogI2VuZGlmCiAKICNpZiAoUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShXSU4pKSAmJiAhZGVmaW5lZChFTkFCTEVfSlNDX01VTFRJUExFX1RIUkVB
RFMpCi0jZGVmaW5lIEVOQUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUyAxCisvKiAjZGVmaW5lIEVO
QUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUyAxICovCiAjZW5kaWYKIAogLyogZm9yIFVuaWNvZGUs
IEtERSB1c2VzIFF0ICovCkBAIC0yODksNiArMjkxLDcgQEAKIAogI2lmIFBMQVRGT1JNKFdJTikK
ICNkZWZpbmUgV1RGX1VTRV9XSU5JTkVUIDEKKy8qICNkZWZpbmUgV1RGX1VTRV9DVVJMIDEgKi8K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhy
ZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCShy
ZXZpc2lvbiAzODY5NCkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE1LDYgKzExNSw3IEBAIHZvaWQgZGV0YWNoVGhyZWFkKFRocmVhZElkZW50
aWZpZXIpOwogI2lmIFVTRShQVEhSRUFEUykKIHR5cGVkZWYgcHRocmVhZF9tdXRleF90IFBsYXRm
b3JtTXV0ZXg7CiB0eXBlZGVmIHB0aHJlYWRfY29uZF90IFBsYXRmb3JtQ29uZGl0aW9uOwordHlw
ZWRlZiBwdGhyZWFkX2tleV90IFBsYXRmb3JtVGhyZWFkU3RvcmFnZUtleTsKICNlbGlmIFBMQVRG
T1JNKEdUSykKIHR5cGVkZWYgR093blB0cjxHTXV0ZXg+IFBsYXRmb3JtTXV0ZXg7CiB0eXBlZGVm
IEdPd25QdHI8R0NvbmQ+IFBsYXRmb3JtQ29uZGl0aW9uOwpAQCAtMTM0LDYgKzEzNSw3IEBAIHN0
cnVjdCBQbGF0Zm9ybUNvbmRpdGlvbiB7CiAgICAgSEFORExFIG1fcXVldWU7CiAgICAgSEFORExF
IG1fbXV0ZXg7CiB9OwordHlwZWRlZiBEV09SRCBQbGF0Zm9ybVRocmVhZFN0b3JhZ2VLZXk7CiAj
ZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybU11dGV4OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9y
bUNvbmRpdGlvbjsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzODcxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMTEtMjQgIEJyZW50IEZ1bGdoYW0gIDxi
ZnVsZ2hhbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDQ0
CisKKyAgICAgICAgQ29ycmVjdCBiYWQgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgQ2Fpcm8gRm9u
dFBsYXRmb3JtRGF0YSBzbyB0aGF0CisgICAgICAgIHRoZSBtX3NjYWxlZEZvbnQgbWVtYmVyIGlz
IGluaXRpYWxpemVkLiAgUHJldmlvdXNseSB0aGlzIHdvdWxkIGJlCisgICAgICAgIHNldCB0byAw
eGJhYWRmMDBkLCB3aGljaCB3b3VsZCByZXN1bHQgaW4gaW5maW5pdGUgbG9vcHMgd2hpbGUKKyAg
ICAgICAgYXR0ZW1wdGluZyB0byBkZWFsIHdpdGggdGhlIGZvbnQgY2FjaGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YSk6IEluaXRpYWxpemUgbV9z
Y2FsZWRGb250IHRvIDAKKwogMjAwOC0xMS0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmVQcmVmaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVQcmVmaXgu
aAkocmV2aXNpb24gMzg2OTQpCisrKyBXZWJDb3JlL1dlYkNvcmVQcmVmaXguaAkod29ya2luZyBj
b3B5KQpAQCAtMzgsMTEgKzM4LDExIEBACiAjaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChf
V0lOMzIpCiAKICNpZm5kZWYgX1dJTjMyX1dJTk5UCi0jZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA1
MDAKKyNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMQogI2VuZGlmCiAKICNpZm5kZWYgV0lOVkVS
Ci0jZGVmaW5lIFdJTlZFUiAweDA1MDAKKyNkZWZpbmUgV0lOVkVSIDB4MDUwMQogI2VuZGlmCiAK
ICNpZm5kZWYgX1dJTlNPQ0tBUElfCkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViQ29yZS9jb25maWcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDExIEBACiAjaWYgUExBVEZPUk0oV0lOX09T
KQogCiAjaWZuZGVmIF9XSU4zMl9XSU5OVAotI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNTAwCisj
ZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA1MDEKICNlbmRpZgogCiAjaWZuZGVmIFdJTlZFUgotI2Rl
ZmluZSBXSU5WRVIgMHgwNTAwCisjZGVmaW5lIFdJTlZFUiAweDA1MDEKICNlbmRpZgogCiAvLyBJ
ZiB3ZSBkb24ndCBkZWZpbmUgdGhlc2UsIHRoZXkgZ2V0IGRlZmluZWQgaW4gd2luZGVmLmguCkBA
IC05MSw5ICs5MSwxNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCisjaWYgMAogI2Rl
ZmluZSBXVEZfUExBVEZPUk1fQ0cgMQogI3VuZGVmIFdURl9QTEFURk9STV9DQUlSTwogI2RlZmlu
ZSBXVEZfVVNFX0NGTkVUV09SSyAxCisjZWxzZQorI3VuZGVmIFdURl9QTEFURk9STV9DRworI2Rl
ZmluZSBXVEZfUExBVEZPUk1fQ0FJUk8gMQorI3VuZGVmIFdURl9VU0VfQ0ZORVRXT1JLCisjZGVm
aW5lIFdURl9VU0VfQ1VSTCAxCisjZW5kaWYKICN1bmRlZiBXVEZfVVNFX1dJTklORVQKICNkZWZp
bmUgV1RGX1BMQVRGT1JNX0NGIDEKICNkZWZpbmUgV1RGX1VTRV9QVEhSRUFEUyAwCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM4Njk0KQorKysgV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMSw3
ICsxLDcgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MSI/Pg0K
Kzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxT
dHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LDAw
Ig0KKwlWZXJzaW9uPSI4LjAwIg0KIAlOYW1lPSJXZWJDb3JlIg0KIAlQcm9qZWN0R1VJRD0iezFD
MTYzMzdCLUFDRjMtNEQwMy1BQTkwLTg1MUM1QjVFQURBNn0iDQogCVJvb3ROYW1lc3BhY2U9Ildl
YkNvcmUiDQpAQCAtMjIzLDcgKzIyMyw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKFBy
b2plY3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlkZ2VcYyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cY3NzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxlZGl0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmcmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
aHRtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxh
cHBjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmUmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBs
YXRmb3JtXG5ldHdvcmsmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXG5ldHdv
cmtcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXGN1cmwm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcY2Fpcm8mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXHdp
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGJtcCZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcZ2lmJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xpY28mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGpwZWcmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXHBuZyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNceGJtJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1x6bGliJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXG9i
alxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVn
aW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9ccGl4bWFuXHNyYyZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFw
aGljc1xjYWlybyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNzXGZpbHRl
cnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGtjYW52YXMmcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXGtjYW52YXNcZGV2aWNlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxrY2Fu
dmFzXGRldmljZVxxdWFydHomcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERp
cilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxKYXZhU2Ny
aXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRlcnMmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3Jl
Rm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVy
c1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxpbmNsdWRl
XFF0TW92aWVXaW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRpb24mcXVv
dDsiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1dJTjMyX187RU5BQkxFX0RPTV9T
VE9SQUdFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1NWRztFTkFCTEVf
U1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9T
VkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NWR19GT05UUztXRUJDT1JFX0NPTlRFWFRfTUVOVVM7
RU5BQkxFX1ZJREVPO0VOQUJMRV9YU0xUO0VOQUJMRV9YUEFUSCINCisJCQkJUHJlcHJvY2Vzc29y
RGVmaW5pdGlvbnM9Il9fV0lOMzJfXztFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VOQUJMRV9T
VkdfQVNfSU1BR0U7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVDtFTkFC
TEVfU1ZHX0ZPTlRTO1dFQkNPUkVfQ09OVEVYVF9NRU5VUztFTkFCTEVfWFNMVDtFTkFCTEVfWFBB
VEgiDQogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KIAkJCQlQcmVjb21waWxlZEhlYWRl
clRocm91Z2g9IldlYkNvcmVQcmVmaXguaCINCiAJCQkJRm9yY2VkSW5jbHVkZUZpbGVzPSJXZWJD
b3JlUHJlZml4LmgiDQpAQCAtMjg1LDcgKzI4NSw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVv
dDskKFByb2plY3REaXIpLi5cJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLiZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5cYnJpZGdlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxicmlk
Z2VcYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cY3NzJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxlZGl0aW5nJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmcmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHJlbmRlcmluZ1xzdHlsZSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cYmluZGluZ3NcanMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGRvbSZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caGlzdG9yeSZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5caHRtbCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5caW5zcGVjdG9yJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxsb2FkZXImcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxv
YWRlclxhcHBjYWNoZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cbG9hZGVyXGFyY2hpdmUm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlXGNmJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcaWNvbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5c
cGFnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGFnZVxhbmltYXRpb24mcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Vcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cc3FsJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVx3aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KS4uXHBsYXRmb3JtXG5ldHdvcmsmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3Jt
XG5ldHdvcmtcd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3Jr
XGN1cmwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNmJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljcyZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cdGV4dCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1c
Z3JhcGhpY3NcY2Fpcm8mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2Rl
cnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGJt
cCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcZ2lm
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xpY28m
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGpwZWcm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXHBuZyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNceGJtJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1x6bGliJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlx4bWwmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXG9ialxXZWJDb3JlXERlcml2ZWRTb3VyY2VzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxwbHVnaW5zJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbHVnaW5zXHdpbiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9ccGl4bWFuXHNyYyZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cY2Fpcm9cY2Fpcm9cc3JjJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2
Z1xncmFwaGljc1xjYWlybyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3ZnXGdyYXBoaWNz
XGZpbHRlcnMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGtjYW52YXMmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGtjYW52YXNcZGV2aWNlJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpciku
LlxrY2FudmFzXGRldmljZVxxdWFydHomcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2ZyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cc3RvcmFnZSZxdW90OzsmcXVvdDskKFdlYktpdE91
dHB1dERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxK
YXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cRm9yd2FyZGluZ0hlYWRl
cnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcaWN1JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxpbmNsdWRlXGljb252JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGly
KVxpbmNsdWRlXHNxbGl0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVk
ZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5SGVhZGVycyZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxDb3JlRm91bmRhdGlvblxPU1hDb21wYXRpYmlsaXR5
SGVhZGVyc1xHTlVDb21wYXRpYmlsaXR5JnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxp
bmNsdWRlXFF0TW92aWVXaW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xhbmltYXRp
b24mcXVvdDsiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1dJTjMyX187RU5BQkxF
X0RPTV9TVE9SQUdFO0VOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1NWRztF
TkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdfVVNFO0VO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NWR19GT05UUztXRUJDT1JFX0NPTlRFWFRf
TUVOVVM7RU5BQkxFX1ZJREVPO0VOQUJMRV9YU0xUO0VOQUJMRV9YUEFUSCINCisJCQkJUHJlcHJv
Y2Vzc29yRGVmaW5pdGlvbnM9Il9fV0lOMzJfXztFTkFCTEVfRE9NX1NUT1JBR0U7RU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUztFTkFCTEVfU1ZHO0VOQUJMRV9TVkdfQU5JTUFUSU9OO0VO
QUJMRV9TVkdfQVNfSU1BR0U7RU5BQkxFX1NWR19VU0U7RU5BQkxFX1NWR19GT1JFSUdOX09CSkVD
VDtFTkFCTEVfU1ZHX0ZPTlRTO1dFQkNPUkVfQ09OVEVYVF9NRU5VUztFTkFCTEVfWFNMVDtFTkFC
TEVfWFBBVEgiDQogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KIAkJCQlQcmVjb21waWxl
ZEhlYWRlclRocm91Z2g9IldlYkNvcmVQcmVmaXguaCINCiAJCQkJRm9yY2VkSW5jbHVkZUZpbGVz
PSJXZWJDb3JlUHJlZml4LmgiDQpAQCAtMjczNiwxMSArMjczNiwxMSBAQAogCQkJCT4NCiAJCQk8
L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRnJhbWVMb2Fk
ZXJDbGllbnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRnJhbWVMb2FkZXJDbGll
bnQuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbG9hZGVyXEZyYW1lTG9hZGVyQ2xpZW50LmNwcCINCisJCQkJUmVsYXRpdmVQYXRoPSIu
Llxsb2FkZXJcRnJhbWVMb2FkZXJDbGllbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8
RmlsZQ0KQEAgLTMxNjgsMTUgKzMxNjgsMTUgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIg0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXExlbmd0aFNpemUuaCINCiAJCQkJPg0KIAkJCTwvRmls
ZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmgi
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGlua0hhc2guY3BwIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cTGVu
Z3RoU2l6ZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmgiDQog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkBAIC0zOTQzLDEwICszOTQzLDQwIEBACiAJ
CQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQ
bGF5ZXIuY3BwIg0KIAkJCQkJPg0KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm98V2luMzIiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
fFdpbjMyIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8L0Zp
bGU+DQogCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNz
XE1lZGlhUGxheWVyLmgiDQogCQkJCQk+DQorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJ
CQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSINCisJCQkJCQk+DQorCQkJCQkJPFRvb2wNCisJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRv
b2wiDQorCQkJCQkJLz4NCisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4NCisJCQkJCQk8VG9vbA0KKwkJCQkJCQlO
YW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkJCQkvPg0KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxncmFwaGljc1xQYXRoLmNwcCINCkBAIC00MDEwLDYgKzQwNDAsMjIgQEAKIAkJCQkJ
PEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxDb2xv
clNhZmFyaS5jcHAiDQogCQkJCQkJPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJ
CQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiDQorCQkJCQkJCT4NCisJCQkJCQkJPFRvb2wNCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiDQorCQkJCQkJCS8+DQorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJ
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJCT4NCisJCQkJCQkJPFRvb2wN
CisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCS8+DQorCQkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQogCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cRm9udENhY2hlV2luLmNwcCINCkBA
IC00NDE0LDEwICs0NDYwLDQyIEBACiAJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lV2luLmNw
cCINCiAJCQkJCQk+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJ
CQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbg0KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4u
aCINCiAJCQkJCQk+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQor
CQkJCQkJCS8+DQorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJCT4NCisJCQkJCQkJPFRvb2wNCisJCQkJCQkJ
CU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KKwkJCQkJCQkvPg0KKwkJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQogCQkJCQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXE9wZW5UeXBlVXRpbGl0aWVzLmNwcCINCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAko
cmV2aXNpb24gMzg2OTQpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRl
ZC1maWxlcy5zaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNSArNjUsNiBAQCBta2RpciAtcCAiJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTCiBjZCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzIgogCiBleHBvcnQgV2ViQ29yZT0iJHtYU1JDUk9PVH0iCi1leHBvcnQgRkVB
VFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9J
Q09OREFUQUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfWFBBVEgg
RU5BQkxFX1NWRyBFTkFCTEVfU1ZHX0FOSU1BVElPTiBFTkFCTEVfU1ZHX0ZPTlRTIEVOQUJMRV9T
VkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZHX1VTRSBFTkFC
TEVfV09SS0VSUyBFTkFCTEVfVklERU8iCisjZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxF
X0RBVEFCQVNFIEVOQUJMRV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NW
R19BTklNQVRJT04gRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVO
QUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJ
REVPIgorZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01f
U1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NW
R19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5B
QkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMiCiBtYWtlIC1mICIkV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIiAtaiAke05VTUNQVVN9IHx8IGV4aXQgMQpJbmRleDogV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJl
dmlzaW9uIDM4Njk0KQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM0Myw3ICszNDMsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYXR0cmlidXRl
IE1lc3NhZ2VFdmVudENvbnN0cnVjdG9yIE1lc3NhZ2VFdmVudDsKICAgICAgICAgYXR0cmlidXRl
IEV2ZW50RXhjZXB0aW9uQ29uc3RydWN0b3IgRXZlbnRFeGNlcHRpb247CiAKLSNpZiBFTkFCTEUo
Q0hBTk5FTF9NRVNTQUdJTkcpCisjaWYgRU5BQkxFRF9DSEFOTkVMX01FU1NBR0lORwogICAgICAg
ICBhdHRyaWJ1dGUgTWVzc2FnZVBvcnRDb25zdHJ1Y3RvciBNZXNzYWdlUG9ydDsKICNlbmRpZgog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAkocmV2aXNpb24gMzg2OTQpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNiArNjIsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMgY29u
c3QgdW5zaWduZWQgYXF1YUZvY3VzUmluZ0NvbG9yID0gMHhGRjdEQUREOTsKKworQ29sb3IgZm9j
dXNSaW5nQ29sb3IoKQoreworICAgIHN0YXRpYyBDb2xvciBmb2N1c1JpbmdDb2xvcjsKKworICAg
IGlmICghZm9jdXNSaW5nQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICBmb2N1c1JpbmdDb2xvciA9
IGFxdWFGb2N1c1JpbmdDb2xvcjsKKworICAgIHJldHVybiBmb2N1c1JpbmdDb2xvcjsKK30KKwog
c3RhdGljIGlubGluZSB2b2lkIHNldENvbG9yKGNhaXJvX3QqIGNyLCBjb25zdCBDb2xvciYgY29s
KQogewogICAgIGZsb2F0IHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhOwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udERhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250RGF0YWJhc2UuY3BwCShyZXZpc2lvbiAzODY5
NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnREYXRhYmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAjaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaWYgRU5B
QkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dl
YktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8c2hsb2JqLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0xMDksNyArMTExLDkgQEAgc3RhdGljIGJvb2wg
cG9wdWxhdGVGb250RGF0YWJhc2VGcm9tUGxpcwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAgICAgd2tBZGRGb250
c0Zyb21QbGlzdFJlcHJlc2VudGF0aW9uKGRhdGEuZ2V0KCkpOworI2VuZGlmCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTExOSwxNyArMTIzLDIxIEBAIHN0YXRpYyBib29sIHBvcHVsYXRlRm9u
dERhdGFiYXNlRnJvbUZpbGUKICAgICBpZiAoIWRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAgICAgd2tBZGRGb250c0luRGly
ZWN0b3J5KGRpcmVjdG9yeS5nZXQoKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIHZvaWQgd3JpdGVGb250RGF0YWJhc2VUb1BsaXN0KCkKIHsKKyNpZiBFTkFCTEUoU0FG
QVJJX0lOVEVSRkFDRSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRhKEFkb3B0Q0YsIHdr
Q3JlYXRlRm9udHNQbGlzdFJlcHJlc2VudGF0aW9uKCkpOwogICAgIGlmICghZGF0YSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgc2FmZUNyZWF0ZUZpbGUoZm9udHNQbGlzdFBhdGgoKSwgZGF0YS5n
ZXQoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBwb3B1bGF0ZUZvbnREYXRhYmFzZSgpCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YS5oCShy
ZXZpc2lvbiAzODY5NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAg
Rm9udFBsYXRmb3JtRGF0YSgpCiAjaWYgUExBVEZPUk0oQ0FJUk8pCiAgICAgICAgIDogbV9mb250
RmFjZSgwKQorICAgICAgICAsIG1fc2NhbGVkRm9udCgwKQogICAgICAgICAsCiAjZWxzZQogICAg
ICAgICA6CkluZGV4OiBXZWJLaXQvd2luL1dlYkFyY2hpdmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViQXJjaGl2ZS5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9X
ZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTAgQEAKIAogI2luY2x1
ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RyZWFtLmgiCisKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5oPgorI2Vu
ZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00Miw2ICs0NSw3IEBAIFdlYkFy
Y2hpdmUqIFdlYkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKCkKICAgICByZXR1cm4gaW5zdGFuY2U7
CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogV2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6Y3JlYXRl
SW5zdGFuY2UoUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSkKIHsKICAg
ICBXZWJBcmNoaXZlKiBpbnN0YW5jZSA9IG5ldyBXZWJBcmNoaXZlKGNvcmVBcmNoaXZlKTsKQEAg
LTU3LDYgKzYxLDEzIEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoUGFzc1JlZlB0cjxMZWdhY3kK
ICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudC5hZGQoIldlYkFyY2hpdmUi
KTsKIH0KKyNlbHNlCitXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKGludCBpZ25vcmUpCisgICAgOiBt
X3JlZkNvdW50KDApCit7CisgICAgZ0NsYXNzQ291bnQrKzsKK30KKyNlbmRpZgogCiBXZWJBcmNo
aXZlOjp+V2ViQXJjaGl2ZSgpCiB7CkBAIC0xMTgsNyArMTI5LDkgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJBcmNoaXZlOjppbgogICAgIGlmICghZG9tTm9kZSkKICAgICAgICAgcmV0
dXJuIEVfTk9JTlRFUkZBQ0U7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fYXJjaGl2ZSA9
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShkb21Ob2RlLT5ub2RlKCkpOworI2VuZGlmCiAgICAg
CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0xNDQsNiArMTU3LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJBcmNoaXZlOjpzdQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJB
cmNoaXZlOjpkYXRhKAogICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIElTdHJlYW0qKiBzdHJl
YW0pCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRh
dGEgPSBtX2FyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOwogICAgIGlmICghY2ZEYXRh
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTUzLDQgKzE2Nyw3IEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6ZGEKICAgICAqc3RyZWFtID0gTWVtb3J5U3RyZWFt
OjpjcmVhdGVJbnN0YW5jZShidWZmZXIpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAg
IHJldHVybiBFX05PVElNUEw7CisjZW5kaWYKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViQXJjaGl2
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQXJjaGl2ZS5oCShyZXZpc2lvbiAzODY5
NCkKKysrIFdlYktpdC93aW4vV2ViQXJjaGl2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwyMSAr
MjgsMjkgQEAKIAogI2luY2x1ZGUgIldlYktpdC5oIgogCisjaWYgVVNFKENGTkVUV09SSykKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmU7CiB9CisjZW5kaWYK
IAogY2xhc3MgV2ViQXJjaGl2ZSA6IHB1YmxpYyBJV2ViQXJjaGl2ZQogewogcHVibGljOgogICAg
IHN0YXRpYyBXZWJBcmNoaXZlKiBjcmVhdGVJbnN0YW5jZSgpOworI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgc3RhdGljIFdlYkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOwogcHJvdGVjdGVkOgogICAgIFdlYkFyY2hpdmUoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7CiAgICAgfldlYkFyY2hpdmUoKTsKKyNl
bHNlCisgICAgV2ViQXJjaGl2ZShpbnQpOworcHJvdGVjdGVkOgorICAgIH5XZWJBcmNoaXZlKCk7
CisjZW5kaWYKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCkBAIC03OCw3ICs4Niw5IEBAIHB1
YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQ7CisjaWYgVVNFKENGTkVU
V09SSykKICAgICBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4gbV9hcmNoaXZlOwor
I2VuZGlmCiB9OwogCiAjZW5kaWYgLy8gV2ViQXJjaGl2ZV9oCkluZGV4OiBXZWJLaXQvd2luL1dl
YkNvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29va2llTWFu
YWdlci5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTIgQEAKICNpbmNsdWRlICJXZWJLaXRE
TEwuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQ29va2llU3RvcmFnZVdpbi5oPgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVkZSAiTm90
SW1wbGVtZW50ZWQuaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
MzYsOSArNDAsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkNvb2tpZU1hbmFn
ZXIqIFdlYkNvb2tpZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIHsKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogICAgIFdlYkNvb2tpZU1hbmFnZXIqIG1hbmFnZXIgPSBuZXcgV2ViQ29va2llTWFuYWdl
cjsKICAgICBtYW5hZ2VyLT5BZGRSZWYoKTsKICAgICByZXR1cm4gbWFuYWdlcjsgICAgCisjZWxz
ZQorICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogV2ViQ29va2llTWFuYWdlcjo6V2ViQ29va2ll
TWFuYWdlcigpCkBAIC01OCw2ICs2Niw3IEBAIFdlYkNvb2tpZU1hbmFnZXI6On5XZWJDb29raWVN
YW5hZ2VyKCkKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpR
dWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgICpwcHZPYmplY3QgPSAwOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlk
LCBJSURfSVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29v
a2llTWFuYWdlcio+KHRoaXMpOwpAQCAtNjgsNiArNzcsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJDb29raWVNYW5hZwogCiAgICAgQWRkUmVmKCk7CiAgICAgcmV0dXJuIFNfT0s7
CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYK
IH0KIAogVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcjo6QWRkUmVmKCkK
QEAgLTg5LDE2ICsxMDIsMjYgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFu
YWdlcgogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpjb29raWVT
dG9yYWdlKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYq
IHN0b3JhZ2UpCiB7Ci0gICAgaWYgKCFzdG9yYWdlKQorI2lmIFVTRShDRk5FVFdPUkspCisgICBp
ZiAoIXN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICAqc3RvcmFnZSA9
IGN1cnJlbnRDb29raWVTdG9yYWdlKCk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVTdG9yYWdlKCAKICAg
ICAvKiBbaW5dICovIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgc3RvcmFnZSkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIHNldEN1cnJlbnRDb29raWVTdG9yYWdlKHN0b3JhZ2UpOwogICAgIHJl
dHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlM
OworI2VuZGlmCiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAkocmV2aXNpb24gMzg2OTQpCisrKyBXZWJL
aXQvd2luL1dlYkRvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsOSBAQAog
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCiAjcHJhZ21hIHdhcm5pbmcocHVzaCwgMCkKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DRi5oPgorI2Vu
ZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNTUs
NiArNTcsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2lmIFVTRShDRk5FVFdP
UkspCiAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzdGF0aWMgdm9pZCBkaWRT
dGFydENhbGxiYWNrKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3RDYWxsYmFjayhD
RlVSTERvd25sb2FkUmVmIGRvd25sb2FkLCBDRlVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZVUkxS
ZXNwb25zZVJlZiByZWRpcmVjdGlvblJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
QEAgLTc0LDYgKzc3LDcgQEAgc3RhdGljIFVJbnQzMiBCdW5kbGVNYWdpY051bWJlciA9IDB4REVD
QQogCiBzdGF0aWMgQ0ZEYXRhUmVmIGV4dHJhY3RSZXN1bWVEYXRhRnJvbUJ1bmRsZShjb25zdCBT
dHJpbmcmIGJ1bmRsZVBhdGgpOwogc3RhdGljIEhSRVNVTFQgYXBwZW5kUmVzdW1lRGF0YVRvQnVu
ZGxlKENGRGF0YVJlZiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOworI2Vu
ZGlmCiAKIC8vIFdlYkRvd25sb2FkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtODYsNiArOTAsNyBAQCBXZWJEb3du
bG9hZDo6V2ViRG93bmxvYWQoKQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZSA/IGRlbGVnYXRl
IDogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCk7CiAgICAgQ0ZVUkxD
b25uZWN0aW9uUmVmIGNvbm5lY3Rpb24gPSBoYW5kbGUtPmNvbm5lY3Rpb24oKTsKICAgICBpZiAo
IWNvbm5lY3Rpb24pIHsKQEAgLTExMywxMCArMTE4LDEyIEBAIHZvaWQgV2ViRG93bmxvYWQ6Omlu
aXQoUmVzb3VyY2VIYW5kbGUqIGgKICAgICAvLyBFaXRoZXIgd2F5LCB3ZSBuZWVkIHRvIHJlbGVh
c2UgdGhlIGNvbm5lY3Rpb24gdG8gYmFsYW5jZSBvdXQgcmVmIGNvdW50cwogICAgIGhhbmRsZS0+
cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOwogICAgIENGUmVsZWFzZShjb25uZWN0aW9u
KTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwg
SVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1IoIkRlbGVnYXRlIGlzICVwIiwg
bV9kZWxlZ2F0ZS5nZXQoKSk7CiAKQEAgLTEzMyw2ICsxNDAsNyBAQCB2b2lkIFdlYkRvd25sb2Fk
Ojppbml0KGNvbnN0IEtVUkwmIHVybCwgCiAgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlRG93bmxv
YWRXaXRoUnVuTG9vcChtX2Rvd25sb2FkLmdldCgpLCBSZXNvdXJjZUhhbmRsZTo6bG9hZGVyUnVu
TG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgTE9HKERvd25sb2FkLCAiV2Vi
RG93bmxvYWQgLSBJbml0aWFsaXplZCBkb3dubG9hZCBvZiB1cmwgJXMgaW4gV2ViRG93bmxvYWQg
JXAiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcyk7CisjZW5kaWYKIH0KIAogV2Vi
RG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC0yMDYsNiArMjE0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxS
ZXF1ZXN0KiByZXF1ZXN0LCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViRG93bmxvYWREZWxlZ2F0
ZSogZGVsZWdhdGUpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViTXV0YWJs
ZVVSTFJlcXVlc3Q+IHdlYlJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0IHx8IEZBSUxFRChyZXF1
ZXN0LT5RdWVyeUludGVyZmFjZSgmd2ViUmVxdWVzdCkpKSB7CiAgICAgICAgIExPRyhEb3dubG9h
ZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGZhaWxlZCAtIG5vdCBhIFdlYk11dGFi
bGVVUkxSZXF1ZXN0Iik7ICAgIApAQCAtMjM3LDEyICsyNDYsMTcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHN0YXJ0ZWQgZG93bmxvYWQgb2YgdXJsICVz
Iiwgd2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
IHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKICAgICAgICAgLyogW2luXSAqLyBC
U1RSIGJ1bmRsZVBhdGgsIAogICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRl
KiBkZWxlZ2F0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIkF0
dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRo
LCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgZXh0cmFjdFJlc3VtZURhdGFGcm9t
QnVuZGxlKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CkBA
IC0yODMsNiArMjk3LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6
OmkKIAogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGNv
bXBsZXRlLCByZXN1bWVkIGRvd25sb2FkIG9mIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRo
LCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1cm4g
U19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNl
bmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5SZXN1
bWVEb3dubG9hZERlY29kZWRXaXRoRW5jb2RpbmdNSU1FVHlwZSgKQEAgLTI5NSw2ICszMTMsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnN0YXJ0KCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU3RhcnRpbmcgZG93bmxvYWQgKCVw
KSIsIHRoaXMpOwogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
QEAgLTMwNSwxMCArMzI0LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OnMKICAgICBkaWRTdGFydCgpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsKCkKIHsKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9h
ZCAoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwpAQCAtMzE2LDEwICszNDAsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJE
b3dubG9hZDo6YwogICAgIENGVVJMRG93bmxvYWRDYW5jZWwobV9kb3dubG9hZC5nZXQoKSk7CiAg
ICAgbV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKIHsKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3du
bG9hZCAoJXApLCB3cml0aW5nIHJlc3VtZSBpbmZvcm1hdGlvbiB0byBmaWxlIGlmIHBvc3NpYmxl
IiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fZG93bmxvYWQpOwogICAgIGlmICghbV9kb3dubG9hZCkK
QEAgLTM0NiwyMSArMzc1LDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OmMKIGV4aXQ6CiAgICAgbV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIGhyOworI2Vsc2UK
KyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmRlbGV0ZXNGaWxlVXBvbkZhaWx1
cmUoCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KQogeworI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogICAgICpyZXN1bHQgPSBDRlVSTERvd25sb2FkRGVsZXRlc1Vwb25GYWlsdXJlKG1fZG93bmxv
YWQuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7
CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRG93bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKAogICAgICAgICAvKiBbaW5d
ICovIEJTVFIgdGFyZ2V0UGF0aCwgCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNUUiog
YnVuZGxlUGF0aCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghdGFyZ2V0UGF0aCkK
ICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIApAQCAtMzc2LDYgKzQxNSwxMCBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpiCiAgICAgaWYgKCEqYnVuZGxlUGF0
aCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpyZXF1ZXN0KApAQCAtMzkyLDE2ICs0MzUs
MjIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cgogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgK
ICAgICAgICAgLyogW2luXSAqLyBCT09MIGRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpCiB7CisjaWYg
VVNFKENGTkVUV09SSykKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAgICAgQ0ZVUkxEb3dubG9hZFNldERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25sb2FkLmdl
dCgpLCAhIWRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UK
KyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKAogICAg
ICAgICAvKiBbaW5dICovIEJTVFIgcGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxv
d092ZXJ3cml0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3dubG9hZCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtNDE1LDYgKzQ2NCwxMCBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93
bmxvYWQgLSBTZXQgZGVzdGluYXRpb24gdG8gJXMiLCBtX2J1bmRsZVBhdGguYXNjaWkoKS5kYXRh
KCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
IHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogLy8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyMiw2ICs0NzUsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2lu
XSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgaWYgKG1fZG93bmxvYWQpIHsKICAgICAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbCht
X2Rvd25sb2FkLmdldCgpKTsKICAgICAgICAgbV9kb3dubG9hZCA9IDA7CkBAIC00MzMsMTEgKzQ4
NywxNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgbV9k
ZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJ
TDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpj
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCiAgICAg
ICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Up
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNo
YWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NDUsMTIgKzUwNCwx
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgaWYgKG1f
ZG93bmxvYWQpCiAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQu
Z2V0KCksIDAsIHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1
dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyogW2luXSAq
LyBJV2ViVVJMQ3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVU
V09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxs
ZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAg
cmV0dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NjQsOCArNTI4LDEzIEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnUKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAg
Q0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFs
LmdldCgpLCB3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRo
Q2hhbGxlbmdlUmVmKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogLy8gQ0ZVUkxEb3dubG9hZCBDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBXZWJEb3dubG9h
ZDo6ZGlkU3RhcnQoKQogewpAQCAtNzk4LDMgKzg2Nyw0IEBAIGV4aXQ6CiAgICAgZmNsb3NlKGJ1
bmRsZSk7CiAgICAgcmV0dXJuIGhyOwogfQorI2VuZGlmCkluZGV4OiBXZWJLaXQvd2luL1dlYkRv
d25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShyZXZpc2lv
biAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3JlZGVu
dGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBD
RlVSTERvd25sb2FkIENhbGxiYWNrcwogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJl
cXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJl
Zik7CkBAIC0xMTYsMTMgKzExNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0
aW5hdGlvbihDRlVSTFJlZik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZh
aWwoQ0ZFcnJvclJlZik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291
bnQ7CiAKICAgICBXZWJDb3JlOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXZWJDb3JlOjpT
dHJpbmcgbV9idW5kbGVQYXRoOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENG
VVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CisjZW5kaWYKICAgICBDT01QdHI8SVdlYk11dGFi
bGVVUkxSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAgQ09NUHRyPElXZWJEb3dubG9hZERlbGVnYXRl
PiBtX2RlbGVnYXRlOwogCkluZGV4OiBXZWJLaXQvd2luL1dlYkVycm9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkVycm9yLmNwcAkocmV2aXNpb24gMzg2OTQpCisrKyBXZWJLaXQv
d2luL1dlYkVycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAotI2lmIFVTRShD
Rk5FVFdPUkspCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKSW5kZXg6
IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJh
bWUuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODEzLDYgKzE4MTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkZyYW1lOjpzcG9vCiAgICAgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cygmaGVhZGVySGVpZ2h0
LCAmZm9vdGVySGVpZ2h0KTsKICAgICBHcmFwaGljc0NvbnRleHQgc3Bvb2xDdHgocGN0eCk7CiAK
KyNpZiBQTEFURk9STShDRykKICAgICBmb3IgKFVJTlQgaWkgPSBzdGFydFBhZ2U7IGlpIDwgZW5k
UGFnZTsgaWkrKykgewogICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0ID0gbV9wYWdlUmVjdHNbaWld
OwogCkBAIC0xODU2LDYgKzE4NTcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZy
YW1lOjpzcG9vCiAgICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7CiAgICAgICAgIENHQ29u
dGV4dFJlc3RvcmVHU3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAgCiAgICAgcmV0dXJuIFNf
T0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24gMzg2OTQpCisrKyBXZWJL
aXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsOSBA
QAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNwcmFnbWEgd2Fybmlu
Zyhwb3ApCiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTk5LDggKzEwMSwxMCBAQCB2b2lkIFdlYkRyYXdUZXh0
KFdlYlRleHRSZW5kZXJJbmZvKiBpbmZvCiAKICAgICBpbnQgb2xkRm9udFNtb290aGluZ0xldmVs
ID0gLTE7CiAgICAgaWYgKGluZm8tPm92ZXJyaWRlU21vb3RoaW5nTGV2ZWwgPj0gMCkgeworI2lm
IEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgICAgICBvbGRGb250U21vb3RoaW5nTGV2ZWwg
PSB3a0dldEZvbnRTbW9vdGhpbmdMZXZlbCgpOwogICAgICAgICB3a1NldEZvbnRTbW9vdGhpbmdM
ZXZlbChpbmZvLT5vdmVycmlkZVNtb290aGluZ0xldmVsKTsKKyNlbmRpZgogICAgIH0KIAogICAg
IHsKQEAgLTExMywxNSArMTE3LDIxIEBAIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJlbmRlcklu
Zm8qIGluZm8KIAogICAgICAgICAvLyBTZXQgc2hhZG93IHNldHRpbmcKICAgICAgICAgaWYgKGlu
Zm8tPnN0cnVjdFNpemUgPT0gc2l6ZW9mKFdlYlRleHRSZW5kZXJJbmZvKSAmJgorI2lmIFBMQVRG
T1JNKENHKQogICAgICAgICAgICAgKGluZm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZvLT5zaGFk
b3dPZmZzZXQuY3kgfHwgaW5mby0+c2hhZG93Qmx1ciB8fCBpbmZvLT5zaGFkb3dDb2xvcikpCisj
ZWxpZiBQTEFURk9STShDQUlSTykKKyAgICAgICAgICAgIChpbmZvLT5zaGFkb3dPZmZzZXQuY3gg
fHwgaW5mby0+c2hhZG93T2Zmc2V0LmN5IHx8IGluZm8tPnNoYWRvd0JsdXIpKQorI2VuZGlmCiAg
ICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhpbmZvLT5zaGFkb3dPZmZzZXQsIGluZm8tPnNo
YWRvd0JsdXIsIGluZm8tPnNoYWRvd0NvbG9yKTsKIAogICAgICAgICBXZWJDb3JlRHJhd1RleHRB
dFBvaW50KGNvbnRleHQsIGRyYXdTdHJpbmcsIGluZm8tPnB0LCBtYWtlRm9udCgqKGluZm8tPmRl
c2NyaXB0aW9uKSksIGluZm8tPmNvbG9yLCBpbmZvLT51bmRlcmxpbmVkSW5kZXgpOwogICAgICAg
ICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFD
RSkKICAgICBpZiAoaW5mby0+b3ZlcnJpZGVTbW9vdGhpbmdMZXZlbCA+PSAwKQogICAgICAgICB3
a1NldEZvbnRTbW9vdGhpbmdMZXZlbChvbGRGb250U21vb3RoaW5nTGV2ZWwpOworI2VuZGlmCiB9
CiAKIGZsb2F0IFRleHRGbG9hdFdpZHRoKExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwgY29uc3Qg
V2ViRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0
R3JhcGhpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmgJKHJl
dmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw4ICszMCwxMyBAQAogCiBleHRlcm4gIkMiIHsKIAorI2lmIFBMQVRGT1JNKENH
KQogdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvciogQ0dDb2xvclJlZjsKIHR5cGVkZWYgc3RydWN0IENH
Q29udGV4dCogQ0dDb250ZXh0UmVmOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCit0eXBlZGVmIHVu
c2lnbmVkIENvbG9yUmVmOyAgICAgICAgLy8gUkdCQSBxdWFkcnVwbGV0Cit0eXBlZGVmIHN0cnVj
dCBfY2Fpcm8qIENhaXJvQ29udGV4dFJlZjsKKyNlbmRpZgogCiB0eXBlZGVmIHdjaGFyX3QgV0NI
QVI7CiB0eXBlZGVmIF9fbnVsbHRlcm1pbmF0ZWQgY29uc3QgV0NIQVIqIExQQ1dTVFI7CkBAIC00
OSwxOCArNTQsMzAgQEAgc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7CiBzdHJ1Y3QgV2ViVGV4
dFJlbmRlckluZm8KIHsKICAgICBEV09SRCBzdHJ1Y3RTaXplOworI2lmIFBMQVRGT1JNKENHKQog
ICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBD
YWlyb0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VuZGlmCiAgICAgTFBDVFNUUiB0ZXh0OwogICAg
IGludCBsZW5ndGg7CiAgICAgUE9JTlQgcHQ7CiAgICAgY29uc3QgV2ViRm9udERlc2NyaXB0aW9u
KiBkZXNjcmlwdGlvbjsKKyNpZiBQTEFURk9STShDRykKICAgICBDR0NvbG9yUmVmIGNvbG9yOwor
I2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgQ29sb3JSZWYgY29sb3I7CisjZW5kaWYKICAgICBp
bnQgdW5kZXJsaW5lZEluZGV4OwogICAgIGJvb2wgZHJhd0FzUGFzc3dvcmQ7CiAgICAgaW50IG92
ZXJyaWRlU21vb3RoaW5nTGV2ZWw7IC8vIHBhc3MgaW4gLTEgaWYgY2FsbGVyIGRvZXMgbm90IHdh
bnQgdG8gb3ZlcnJpZGUgc21vb3RoaW5nIGxldmVsCiAgICAgU0laRSBzaGFkb3dPZmZzZXQ7CiAg
ICAgaW50IHNoYWRvd0JsdXI7CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJlZiBzaGFk
b3dDb2xvcjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENvbG9yUmVmIHNoYWRvd0NvbG9y
OworI2VuZGlmCiB9OwogCiB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKik7Cklu
ZGV4OiBXZWJLaXQvd2luL1dlYktpdFByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViS2l0UHJlZml4LmgJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9XZWJLaXRQcmVm
aXguaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDExIEBACiAgKi8KIAogI2lmbmRlZiBf
V0lOMzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMAorI2RlZmluZSBfV0lOMzJf
V0lOTlQgMHgwNTAxCiAjZW5kaWYKIAogI2lmbmRlZiBXSU5WRVIKLSNkZWZpbmUgV0lOVkVSIDB4
MDUwMAorI2RlZmluZSBXSU5WRVIgMHgwNTAxCiAjZW5kaWYKIAogLy8gSWYgd2UgZG9uJ3QgZGVm
aW5lIHRoZXNlLCB0aGV5IGdldCBkZWZpbmVkIGluIHdpbmRlZi5oLiAKSW5kZXg6IFdlYktpdC93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkK
IAorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIC8vIElXZWJVUkxSZXF1ZXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM2Nyw5ICszNjksMTMgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUgogewogICAgIGlmICghcmVzdWx0KQog
ICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJM
UmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVzdC5j
ZlVSTFJlcXVlc3QoKSkpOwogICAgICpyZXN1bHQgPSBjcmVhdGVJbnN0YW5jZShSZXNvdXJjZVJl
cXVlc3QobXV0YWJsZVJlcXVlc3QuZ2V0KCkpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisg
ICAgcmV0dXJuIEVfTk9USU1QTDsKKyNlbmRpZgogfQogCiAvLyBJV2ViTXV0YWJsZVVSTFJlcXVl
c3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJ
bmRleDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDkgQEAKICNpbmNs
dWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDxzaGZvbGRlci5oPgogI2luY2x1ZGUgPHRjaGFyLmg+
CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIApAQCAtOTY2LDcgKzk2OCw5
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXMKICAgICBzZXRJbnRl
Z2VyVmFsdWUoQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5KSwgc21v
b3RoaW5nVHlwZSk7CiAgICAgaWYgKHNtb290aGluZ1R5cGUgPT0gRm9udFNtb290aGluZ1R5cGVX
aW5kb3dzKQogICAgICAgICBzbW9vdGhpbmdUeXBlID0gRm9udFNtb290aGluZ1R5cGVTdGFuZGFy
ZDsKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICB3a1NldEZvbnRTbW9vdGhpbmdM
ZXZlbCgoaW50KXNtb290aGluZ1R5cGUpOworI2VuZGlmCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
SW5kZXg6IFdlYktpdC93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dp
bi9XZWJUZXh0UmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw5IEBACiAj
aW5jbHVkZSAiV2ViS2l0RExMLmgiCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlN0cmlu
Zy5oPgorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktpdFN5c3Rl
bUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0
ZUluc3RhbmNlKCkKQEAgLTkwLDYgKzkyLDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJUZXh0UmVuZGVyZQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBzdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihmb250RmlsZVBhdGgpLCBzdGF0aWNf
Y2FzdDxDRkluZGV4Pih3Y3NsZW4oZm9udEZpbGVQYXRoKSkpKTsKKyNpZiBFTkFCTEUoU0FGQVJJ
X0lOVEVSRkFDRSkKICAgICB3a0FkZEZvbnRzQXRQYXRoKHN0cmluZy5nZXQoKSk7CisjZW5kaWYK
ICAgICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOSArMTQ5
LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGkKIAogICAgIC8v
IEZJWE1FOiBBZnRlciB3ZSBjaGFuZ2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgdG8gdXNlICJS
ZXNvdXJjZUhhbmRsZSIgYXMgdGhlIGFic3RyYWN0ICJTZW5kZXIiIG9yICJTb3VyY2Ugb2YgdGhp
cyBBdXRoIENoYWxsZW5nZSIsIHRoZW4gd2UnbGwKICAgICAvLyBjb25zdHJ1Y3QgdGhlIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIHdpdGggdGhhdCBhcyBvYnRhaW5lZCBmcm9tIHRoZSB3ZWJTZW5k
ZXIKLQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlNwYWNlLT5wcm90ZWN0aW9uU3BhY2UoKSwgd2Vi
Q3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsIHdlYlJlc3BvbnNlLT5yZXNvdXJjZVJlc3BvbnNl
KCksIHdlYkVycm9yLT5yZXNvdXJjZUVycm9yKCkpOworI2VuZGlmCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuaCIK
IAogI2luY2x1ZGUgIkNPTVB0ci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKICNpbmNsdWRlICJXZWJVUkxDcmVkZW50aWFsLmgiCkBAIC0xMDAsMjkgKzEwMSw0MCBAQCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENP
TVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBj
aGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKHdlYkNoYWxsZW5nZS0+YXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpj
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCiAgICAg
ICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2Up
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNo
YWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIG1faGFuZGxlLT5yZWNlaXZl
ZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwod2ViQ2hhbGxlbmdlLT5hdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OnVzZUNy
ZWRlbnRpYWwoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTENyZWRlbnRpYWwqIGNyZWRlbnRp
YWwsIAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSog
Y2hhbGxlbmdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7CiAgICAg
aWYgKCF3ZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xMzMsNiArMTQ1
LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGkKIAogICAgIG1f
aGFuZGxlLT5yZWNlaXZlZENyZWRlbnRpYWwod2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpLCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCkpOwogICAgIHJldHVybiBTX09L
OworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5k
aWYKIH0KIAogLy8gV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJ
bmRleDogV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9X
ZWJVUkxSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDEwIEBACiAjaW5j
bHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViTG9jYWxpemFibGVTdHJp
bmdzLmgiCiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKKwogI2luY2x1
ZGUgPHd0Zi9wbGF0Zm9ybS5oPgogI3ByYWdtYSB3YXJuaW5nKCBwdXNoLCAwICkKICNpbmNsdWRl
IDxXZWJDb3JlL0JTdHJpbmcuaD4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMzg2OTQpCisrKyBXZWJL
aXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMywxOCBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Zh
bHVlLmg+CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENh
Y2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgorI2Vu
ZGlmCisKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorCisjaWYg
RU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNl
L1dlYktpdFN5c3RlbUludGVyZmFjZS5oPiAKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDxkaW1tLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+CkBAIC0zNjYsNiAr
Mzc0LDggQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIGlm
IChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwpCiAgICAg
ICAgIHJldHVybjsKIAorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQorCiAjaWZkZWYgQ0ZV
UkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZVByZXNlbnQKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNo
ZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkp
OwogI2Vsc2UKQEAgLTU0OSw2ICs1NTksNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwo
V2ViQ2FjaGVNb2RlCiAgICAgc19kaWRTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKICAgICBzX2NhY2hl
TW9kZWwgPSBjYWNoZU1vZGVsOwogICAgIHJldHVybjsKKyNlbmRpZgogfQogCiBXZWJDYWNoZU1v
ZGVsIFdlYlZpZXc6OmNhY2hlTW9kZWwoKQpAQCAtNDE5Nyw5ICs0MjA4LDExIEBAIEhSRVNVTFQg
dXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4KICAgICBpZiAoRkFJTEVEKGhyKSkKICAg
ICAgICAgcmV0dXJuIGhyOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBTZXQgY29va2ll
IHN0b3JhZ2UgYWNjZXB0IHBvbGljeQogICAgIGlmIChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNv
b2tpZVN0b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGFjY2VwdFBvbGlj
eSk7CisjZW5kaWYKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyMyw2ICsyMjMsNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0lt
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENHKQogICAgIENHQ29u
dGV4dFJlZiBjb250ZXh0UmVmOwogICAgIGltYWdlID0gYWxsb2NJbWFnZSh3b3JraW5nREMsIGlt
YWdlU2l6ZSwgJmNvbnRleHRSZWYpOwogICAgIGlmICghaW1hZ2UpIHsKQEAgLTI1OCw2ICsyNTks
NyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltCiAgICAgV2ViQ29y
ZURyYXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgbGFiZWwsIHRleHRQb3MsIGxhYmVsRm9u
dCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKIAogICAgIENHQ29udGV4dFJlbGVhc2UoY29udGV4
dFJlZik7CisjZW5kaWYKICAgICBEZWxldGVEQyh3b3JraW5nREMpOwogICAgIFJlbGVhc2VEQygw
LCBkYyk7CiAgICAgcmV0dXJuIGltYWdlOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysg
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDT01Qcm9wZXJ0eUJhZy5oIgog
I2luY2x1ZGUgIkVtYmVkZGVkV2lkZ2V0LmgiCiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJz
LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJDYWNoZWRQYWdl
UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJXZWJVUkxS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNwcmFnbWEgd2FybmluZyhwdXNoLCAw
KQotI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KQEAgLTEwNSw2ICsxMDUsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEFTU0VSVChj
aGFsbGVuZ2Uuc291cmNlSGFuZGxlKCkpOwogCiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2Vi
RnJhbWUtPndlYlZpZXcoKTsKQEAgLTExOCw2ICsxMTksOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZERlbGVnYXRl
IGRvZXNuJ3QgZXhpc3Qgb3IgZmFpbHMgdG8gaGFuZGxlIHRoZSBjYWxsLCB3ZSB0ZWxsIHRoZSBS
ZXNvdXJjZUhhbmRsZQogICAgIC8vIHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbCAtIHRo
aXMgaXMgdGhlIGJlc3QgYXBwcm94aW1hdGlvbiBvZiBNYWMgYmVoYXZpb3IKICAgICBjaGFsbGVu
Z2Uuc291cmNlSGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVu
dGlhbChjaGFsbGVuZ2UpOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0K
IAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkBAIC00NzEs
MjEgKzQ3NSw1MiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1ECiAg
ICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAorI2lmIEVOQUJMRShTQUZBUklf
SU5URVJGQUNFKQogICAgIEFTU0VSVChjb3JlRnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpID09IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCkpOwogCiAgICAgV2ViQ2FjaGVkUGFn
ZVBsYXRmb3JtRGF0YSogd2ViUGxhdGZvcm1EYXRhID0gbmV3IFdlYkNhY2hlZFBhZ2VQbGF0Zm9y
bURhdGEoc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNlKGNvcmVG
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpKSk7CiAgICAgY2FjaGVkUGFnZS0+c2V0
Q2FjaGVkUGFnZVBsYXRmb3JtRGF0YSh3ZWJQbGF0Zm9ybURhdGEpOworI2VuZGlmCiB9CiAKIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KQogewotICAgIFdlYlZpZXcqIHZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgRnJh
bWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUpOworCisgICAg
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOworCisgICAgYm9v
bCBpc01haW5GcmFtZSA9IGZyYW1lID09IHBhZ2UtPm1haW5GcmFtZSgpOworCisgICAgaWYgKGlz
TWFpbkZyYW1lICYmIGZyYW1lLT52aWV3KCkpCisgICAgICAgIGZyYW1lLT52aWV3KCktPnNldFBh
cmVudFZpc2libGUoZmFsc2UpOworCisgICAgZnJhbWUtPnNldFZpZXcoMCk7CisKKyAgICBXZWJW
aWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOworCisgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXc7CisgICAgaWYgKGlzTWFpbkZyYW1lKSB7CisgICAgICAgIFJFQ1QgcmVjdDsKKyAg
ICAgICAgd2ViVmlldy0+ZnJhbWVSZWN0KCZyZWN0KTsKKyAgICAgICAgZnJhbWVWaWV3ID0gbmV3
IEZyYW1lVmlldyhmcmFtZSwgSW50UmVjdChyZWN0KS5zaXplKCkpOworICAgIH0gZWxzZQorICAg
ICAgICBmcmFtZVZpZXcgPSBuZXcgRnJhbWVWaWV3KGZyYW1lKTsKKworICAgIGZyYW1lLT5zZXRW
aWV3KGZyYW1lVmlldyk7CisgICAgZnJhbWVWaWV3LT5kZXJlZigpOyAvLyBGcmFtZVZpZXdzIGFy
ZSBjcmVhdGVkIHdpdGggYSByZWYgY291bnQgb2YgMS4gUmVsZWFzZSB0aGlzIHJlZiBzaW5jZSB3
ZSd2ZSBhc3NpZ25lZCBpdCB0byBmcmFtZS4KKworICAgIG1fd2ViRnJhbWUtPnVwZGF0ZUJhY2tn
cm91bmQoKTsKKworICAgIGlmIChpc01haW5GcmFtZSkKKyAgICAgICAgZnJhbWVWaWV3LT5zZXRQ
YXJlbnRWaXNpYmxlKHRydWUpOworCisgICAgaWYgKGZyYW1lLT5vd25lclJlbmRlcmVyKCkpCisg
ICAgICAgIGZyYW1lLT5vd25lclJlbmRlcmVyKCktPnNldFdpZGdldChmcmFtZVZpZXcpOwogCi0g
ICAgUkVDVCByZWN0OwotICAgIHZpZXctPmZyYW1lUmVjdCgmcmVjdCk7Ci0gICAgYm9vbCB0cmFu
c3BhcmVudCA9IHZpZXctPnRyYW5zcGFyZW50KCk7Ci0gICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
ID0gdHJhbnNwYXJlbnQgPyBDb2xvcjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hpdGU7Ci0gICAg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1Bh
Z2UoY29yZShtX3dlYkZyYW1lKSwgSW50UmVjdChyZWN0KS5zaXplKCksIGJhY2tncm91bmRDb2xv
ciwgdHJhbnNwYXJlbnQpOworICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyID0g
ZnJhbWUtPm93bmVyRWxlbWVudCgpKQorICAgICAgICBmcmFtZS0+dmlldygpLT5zZXRDYW5IYXZl
U2Nyb2xsYmFycyhvd25lci0+c2Nyb2xsaW5nTW9kZSgpICE9IFNjcm9sbGJhckFsd2F5c09mZik7
CiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgpIGNvbnN0Cklu
ZGV4OiBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnJjCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQucmMJKHJldmlzaW9uIDM4Njk0KQorKysgV2Vi
S2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5yYwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsx
LDkgQEAKIC8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQu
CiAvLwogI2luY2x1ZGUgInJlc291cmNlLmgiCisjaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKICNp
bmNsdWRlICJhdXRvdmVyc2lvbi5oIgorI2VuZGlmCiAjaW5jbHVkZSAid2lucmVzLmgiCiAKICNp
ZmRlZiBfV0lOMzIKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCShy
ZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yODcsMTcgKzI4NywxOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0K
IAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImRl
bGF5aW1wLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgY29tZGxnMzIubGli
IGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGli
IG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHVzcDEwLmxpYiBjb21jdGwzMi5saWIgdmVyc2lvbi5s
aWIgc2hsd2FwaS5saWIgbGlieG1sMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGxpYnhzbHQk
KExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBpY3VpbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGli
IGljdXVjJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgU1FMaXRlMyQoTGlicmFyeUNvbmZpZ1N1
ZmZpeCkubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBDb3JlRm91bmRh
dGlvbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIENvcmVHcmFwaGljcy5saWIgQ0ZOZXR3b3Jr
JChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgSmF2YVNjcmlwdENvcmUkKFdlYktpdENvbmZpZ1N1
ZmZpeCkubGliIFdlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYkNvcmUkKFdl
YktpdENvbmZpZ1N1ZmZpeCkubGliIFdURiQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIgV2ViS2l0
U3lzdGVtSW50ZXJmYWNlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBtc2ltZzMyLmxpYiBRVE1v
dmllV2luJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBjcnlwdDMyLmxpYiBjYWlyby5saWIgZ2lm
bGliLmxpYiBqcGVnLmxpYiBsaWJwbmcubGliIGxpYmN1cmxfaW1wLmxpYiB3czJfMzIubGliIHdp
bmluZXQubGliIFdsZGFwMzIubGliIGlwaGxwYXBpLmxpYiINCisJCQkJQWRkaXRpb25hbERlcGVu
ZGVuY2llcz0iZGVsYXlpbXAubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiBj
b21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5s
aWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgdXNwMTAubGliIGNvbWN0bDMyLmxp
YiB2ZXJzaW9uLmxpYiBzaGx3YXBpLmxpYiBsaWJ4bWwyJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5s
aWIgbGlieHNsdCQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGljdWluJChMaWJyYXJ5Q29uZmln
U3VmZml4KS5saWIgaWN1dWMkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBTUUxpdGUzJChMaWJy
YXJ5Q29uZmlnU3VmZml4KS5saWIgcHRocmVhZFZDMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGli
IENGTGl0ZV9EZWJ1Zy5saWIgSmF2YVNjcmlwdENvcmUkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGli
IFdlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYkNvcmUkKFdlYktpdENvbmZp
Z1N1ZmZpeCkubGliIFdURiQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIgbXNpbWczMi5saWIgY3J5
cHQzMi5saWIgY2Fpcm8ubGliIGdpZmxpYi5saWIganBlZy5saWIgbGlicG5nLmxpYiBsaWJjdXJs
X2ltcC5saWIgd3MyXzMyLmxpYiB3aW5pbmV0LmxpYiBXbGRhcDMyLmxpYiBpcGhscGFwaS5saWIi
DQogCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSQoV2ViS2l0RExMQ29u
ZmlnU3VmZml4KS5kbGwiDQogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiINCiAJ
CQkJTW9kdWxlRGVmaW5pdGlvbkZpbGU9IldlYktpdCQoV2ViS2l0RExMQ29uZmlnU3VmZml4KS5k
ZWYiDQotCQkJCURlbGF5TG9hZERMTHM9ImNvbWRsZzMyLmRsbDt1c3AxMC5kbGw7Y29tY3RsMzIu
ZGxsO3ZlcnNpb24uZGxsO2xpYnhzbHQkKExpYnJhcnlDb25maWdTdWZmaXgpLmRsbDtTUUxpdGUz
JChMaWJyYXJ5Q29uZmlnU3VmZml4KS5kbGw7bXNpbWczMi5kbGw7UVRNb3ZpZVdpbiQoV2ViS2l0
Q29uZmlnU3VmZml4KS5kbGw7aXBobHBhcGkuZGxsIg0KKwkJCQlEZWxheUxvYWRETExzPSJjb21k
bGczMi5kbGw7dXNwMTAuZGxsO2NvbWN0bDMyLmRsbDt2ZXJzaW9uLmRsbDtsaWJ4c2x0JChMaWJy
YXJ5Q29uZmlnU3VmZml4KS5kbGw7U1FMaXRlMyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkuZGxsO21z
aW1nMzIuZGxsO2lwaGxwYXBpLmRsbCINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZD
QUxpbmtUb29sIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wi
DQorCQkJCVZlcmJvc2VPdXRwdXQ9ImZhbHNlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFt
ZT0iVkNYRENNYWtlVG9vbCINCkBAIC0zNjUsMTEgKzM2NiwxMSBAQAogCQkJLz4NCiAJCQk8VG9v
bA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9
ImRlbGF5aW1wLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgY29tZGxnMzIu
bGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQu
bGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHVzcDEwLmxpYiBjb21jdGwzMi5saWIgdmVyc2lv
bi5saWIgc2hsd2FwaS5saWIgbGlieG1sMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGxpYnhz
bHQkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBpY3VpbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCku
bGliIGljdXVjJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgU1FMaXRlMyQoTGlicmFyeUNvbmZp
Z1N1ZmZpeCkubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBDb3JlRm91
bmRhdGlvbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIENGTmV0d29yayQoTGlicmFyeUNvbmZp
Z1N1ZmZpeCkubGliIENvcmVHcmFwaGljcyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIEphdmFT
Y3JpcHRDb3JlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBXZWJLaXRHVUlEJChXZWJLaXRDb25m
aWdTdWZmaXgpLmxpYiBXZWJDb3JlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBXVEYkKFdlYktp
dENvbmZpZ1N1ZmZpeCkubGliIFdlYktpdFN5c3RlbUludGVyZmFjZSQoV2ViS2l0Q29uZmlnU3Vm
Zml4KS5saWIgbXNpbWczMi5saWIgUVRNb3ZpZVdpbiQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIg
Y3J5cHQzMi5saWIgY2Fpcm8ubGliIGdpZmxpYi5saWIganBlZy5saWIgbGlicG5nLmxpYiBsaWJj
dXJsX2ltcC5saWIgd3MyXzMyLmxpYiB3aW5pbmV0LmxpYiBXbGRhcDMyLmxpYiBpcGhscGFwaS5s
aWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImRlbGF5aW1wLmxpYiBrZXJuZWwzMi5s
aWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMy
LmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIu
bGliIHVzcDEwLmxpYiBjb21jdGwzMi5saWIgdmVyc2lvbi5saWIgc2hsd2FwaS5saWIgbGlieG1s
MiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGxpYnhzbHQkKExpYnJhcnlDb25maWdTdWZmaXgp
LmxpYiBpY3VpbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGljdXVjJChMaWJyYXJ5Q29uZmln
U3VmZml4KS5saWIgU1FMaXRlMyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIHB0aHJlYWRWQzIk
KExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBDRkxpdGUubGliIEphdmFTY3JpcHRDb3JlJChXZWJL
aXRDb25maWdTdWZmaXgpLmxpYiBXZWJLaXRHVUlEJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBX
ZWJDb3JlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBXVEYkKFdlYktpdENvbmZpZ1N1ZmZpeCku
bGliIG1zaW1nMzIubGliIGNyeXB0MzIubGliIGNhaXJvLmxpYiBnaWZsaWIubGliIGpwZWcubGli
IGxpYnBuZy5saWIgbGliY3VybF9pbXAubGliIHdzMl8zMi5saWIgd2luaW5ldC5saWIgV2xkYXAz
Mi5saWIgaXBobHBhcGkubGliIg0KIAkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0
TmFtZSkkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkuZGxsIg0KIAkJCQlBZGRpdGlvbmFsTGlicmFy
eURpcmVjdG9yaWVzPSIiDQogCQkJCU1vZHVsZURlZmluaXRpb25GaWxlPSJXZWJLaXQkKFdlYktp
dERMTENvbmZpZ1N1ZmZpeCkuZGVmIg0KLQkJCQlEZWxheUxvYWRETExzPSJjb21kbGczMi5kbGw7
dXNwMTAuZGxsO2NvbWN0bDMyLmRsbDt2ZXJzaW9uLmRsbDtsaWJ4c2x0JChMaWJyYXJ5Q29uZmln
U3VmZml4KS5kbGw7U1FMaXRlMyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkuZGxsO21zaW1nMzIuZGxs
O1FUTW92aWVXaW4kKFdlYktpdENvbmZpZ1N1ZmZpeCkuZGxsO2lwaGxwYXBpLmRsbCINCisJCQkJ
RGVsYXlMb2FkRExMcz0iY29tZGxnMzIuZGxsO3VzcDEwLmRsbDtjb21jdGwzMi5kbGw7dmVyc2lv
bi5kbGw7bGlieHNsdCQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkuZGxsO1NRTGl0ZTMkKExpYnJhcnlD
b25maWdTdWZmaXgpLmRsbDttc2ltZzMyLmRsbDtpcGhscGFwaS5kbGwiDQogCQkJLz4NCiAJCQk8
VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25535</attachid>
            <date>2008-11-26 14:06:33 -0800</date>
            <delta_ts>2008-11-29 19:57:49 -0800</delta_ts>
            <desc>Patch against current sources</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>53389</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Bc3NlcnRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvQXNzZXJ0aW9ucy5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL0Fzc2VydGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxMCAr
MzYsMTAgQEAKIAogI2lmIENPTVBJTEVSKE1TVkMpCiAjaWZuZGVmIFdJTlZFUgotI2RlZmluZSBX
SU5WRVIgMHgwNTAwCisjZGVmaW5lIFdJTlZFUiAweDA1MDEKICNlbmRpZgogI2lmbmRlZiBfV0lO
MzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMAorI2RlZmluZSBfV0lOMzJfV0lO
TlQgMHgwNTAxCiAjZW5kaWYKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8Y3J0ZGJn
Lmg+CkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzg2OTQpCisrKyBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCw3IEBA
CiAjaWYgUExBVEZPUk0oTUFDKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0cgMQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0kgMQorI2RlZmluZSBFTkFCTEVfU0FGQVJJX0lOVEVSRkFDRSAxCiAjZW5k
aWYKIAogLyogUExBVEZPUk0oU0tJQSkgZm9yIFdpbi9MaW51eCwgQ0cvQ0kgZm9yIE1hYyAqLwpA
QCAtMTUxLDYgKzE1Miw3IEBACiAvKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgY2hhbmdlZCBmcm9t
IGEgYmxhY2tsaXN0IHRvIGEgd2hpdGVsaXN0ICovCiAjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBM
QVRGT1JNKFFUKSAmJiAhUExBVEZPUk0oV1gpICYmICFQTEFURk9STShDSFJPTUlVTSkKICNkZWZp
bmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEKKyN1bmRlZiBFTkFCTEVfVklERU8KICNlbmRpZgogCiAv
KiBDUFUgKi8KQEAgLTI1Myw3ICsyNTUsNyBAQAogI2VuZGlmCiAKICNpZiAoUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShXSU4pKSAmJiAhZGVmaW5lZChFTkFCTEVfSlNDX01VTFRJUExFX1RIUkVB
RFMpCi0jZGVmaW5lIEVOQUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUyAxCisvKiAjZGVmaW5lIEVO
QUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUyAxICovCiAjZW5kaWYKIAogLyogZm9yIFVuaWNvZGUs
IEtERSB1c2VzIFF0ICovCkBAIC0yODksNiArMjkxLDcgQEAKIAogI2lmIFBMQVRGT1JNKFdJTikK
ICNkZWZpbmUgV1RGX1VTRV9XSU5JTkVUIDEKKy8qICNkZWZpbmUgV1RGX1VTRV9DVVJMIDEgKi8K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCkBAIC00MTcsNyArNDIwLDcgQEAKICNkZWZpbmUg
RU5BQkxFX0FTU0VNQkxFUiAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9QQU5fU0NS
T0xMSU5HKSAmJiAoUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShDSFJPTUlVTSkgfHwgKFBMQVRG
T1JNKFdYKSAmJiBQTEFURk9STShXSU5fT1MpKSkKKyNpZiAhZGVmaW5lZChFTkFCTEVfUEFOX1ND
Uk9MTElORykgJiYgKFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IChQTEFU
Rk9STShXWCkgJiYgUExBVEZPUk0oV0lOX09TKSkgfHwgKFBMQVRGT1JNKENBSVJPKSAmJiBQTEFU
Rk9STShXSU5fT1MpKSkKICNkZWZpbmUgRU5BQkxFX1BBTl9TQ1JPTExJTkcgMQogI2VuZGlmCiAK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHJldmlzaW9uIDM4Njk0KQorKysgSmF2YVNjcmlw
dENvcmUvd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNiArMTE1LDcgQEAg
dm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmllcik7CiAjaWYgVVNFKFBUSFJFQURTKQog
dHlwZWRlZiBwdGhyZWFkX211dGV4X3QgUGxhdGZvcm1NdXRleDsKIHR5cGVkZWYgcHRocmVhZF9j
b25kX3QgUGxhdGZvcm1Db25kaXRpb247Cit0eXBlZGVmIHB0aHJlYWRfa2V5X3QgUGxhdGZvcm1U
aHJlYWRTdG9yYWdlS2V5OwogI2VsaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBHT3duUHRyPEdN
dXRleD4gUGxhdGZvcm1NdXRleDsKIHR5cGVkZWYgR093blB0cjxHQ29uZD4gUGxhdGZvcm1Db25k
aXRpb247CkBAIC0xMzQsNiArMTM1LDcgQEAgc3RydWN0IFBsYXRmb3JtQ29uZGl0aW9uIHsKICAg
ICBIQU5ETEUgbV9xdWV1ZTsKICAgICBIQU5ETEUgbV9tdXRleDsKIH07Cit0eXBlZGVmIERXT1JE
IFBsYXRmb3JtVGhyZWFkU3RvcmFnZUtleTsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3Jt
TXV0ZXg7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29uZGl0aW9uOwpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlUHJlZml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHJl
dmlzaW9uIDM4Njk0KQorKysgV2ViQ29yZS9XZWJDb3JlUHJlZml4LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDExICszOCwxMSBAQAogI2lmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMy
KQogCiAjaWZuZGVmIF9XSU4zMl9XSU5OVAotI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNTAwCisj
ZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA1MDEKICNlbmRpZgogCiAjaWZuZGVmIFdJTlZFUgotI2Rl
ZmluZSBXSU5WRVIgMHgwNTAwCisjZGVmaW5lIFdJTlZFUiAweDA1MDEKICNlbmRpZgogCiAjaWZu
ZGVmIF9XSU5TT0NLQVBJXwpJbmRleDogV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDExICszMywxMSBAQAogI2lmIFBMQVRGT1JNKFdJTl9PUykKIAog
I2lmbmRlZiBfV0lOMzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMAorI2RlZmlu
ZSBfV0lOMzJfV0lOTlQgMHgwNTAxCiAjZW5kaWYKIAogI2lmbmRlZiBXSU5WRVIKLSNkZWZpbmUg
V0lOVkVSIDB4MDUwMAorI2RlZmluZSBXSU5WRVIgMHgwNTAxCiAjZW5kaWYKIAogLy8gSWYgd2Ug
ZG9uJ3QgZGVmaW5lIHRoZXNlLCB0aGV5IGdldCBkZWZpbmVkIGluIHdpbmRlZi5oLgpAQCAtOTEs
OSArOTEsMTYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQorI2lmIDAKICNkZWZpbmUg
V1RGX1BMQVRGT1JNX0NHIDEKICN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJUk8KICNkZWZpbmUgV1RG
X1VTRV9DRk5FVFdPUksgMQorI2Vsc2UKKyN1bmRlZiBXVEZfUExBVEZPUk1fQ0cKKyNkZWZpbmUg
V1RGX1BMQVRGT1JNX0NBSVJPIDEKKyN1bmRlZiBXVEZfVVNFX0NGTkVUV09SSworI2RlZmluZSBX
VEZfVVNFX0NVUkwgMQorI2VuZGlmCiAjdW5kZWYgV1RGX1VTRV9XSU5JTkVUCiAjZGVmaW5lIFdU
Rl9QTEFURk9STV9DRiAxCiAjZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3
IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTEiPz4NCis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlv
UHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOCwwMCINCisJ
VmVyc2lvbj0iOC4wMCINCiAJTmFtZT0iV2ViQ29yZSINCiAJUHJvamVjdEdVSUQ9InsxQzE2MzM3
Qi1BQ0YzLTREMDMtQUE5MC04NTFDNUI1RUFEQTZ9Ig0KIAlSb290TmFtZXNwYWNlPSJXZWJDb3Jl
Ig0KQEAgLTIyMyw3ICsyMjMsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCINCiAJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQcm9qZWN0
RGlyKS4uXCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cZWRp
dGluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGh0bWwm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXBwY2Fj
aGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2UmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQoUHJvamVj
dERpcikuLlxwYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm0mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9y
bVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3b3JrXHdp
biZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJsJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZiZxdW90OzsmcXVvdDskKFByb2plY3RE
aXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRm
b3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBoaWNzXGNh
aXJvJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW4mcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xibXAmcXVvdDs7JnF1
b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGdpZiZxdW90OzsmcXVv
dDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcaWNvJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xqcGVnJnF1b3Q7OyZxdW90
OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xwbmcmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXHhibSZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcemxpYiZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2Vi
Q29yZVxEZXJpdmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2lucyZx
dW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7JChQcm9q
ZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXHBpeG1hblxzcmMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyYyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3JhcGhpY3Nc
Y2Fpcm8mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxrY2FudmFzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERp
cikuLlxrY2FudmFzXGRldmljZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ca2NhbnZhc1xk
ZXZpY2VccXVhcnR6JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmcmcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGlu
Y2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENv
cmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxpbmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxpY29udiZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxz
cWxpdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2YVNjcmlw
dENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5k
YXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnNcR05V
Q29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVkZVxRdE1v
dmllV2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1b3Q7Ig0K
LQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19XSU4zMl9fO0VOQUJMRV9ET01fU1RPUkFH
RTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxFX1NWR19B
TklNQVRJT047RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX1VTRTtFTkFCTEVfU1ZHX0ZP
UkVJR05fT0JKRUNUO0VOQUJMRV9TVkdfRk9OVFM7V0VCQ09SRV9DT05URVhUX01FTlVTO0VOQUJM
RV9WSURFTztFTkFCTEVfWFNMVDtFTkFCTEVfWFBBVEgiDQorCQkJCVByZXByb2Nlc3NvckRlZmlu
aXRpb25zPSJfX1dJTjMyX187RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9PRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVfU1ZHX0FT
X0lNQUdFO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5BQkxFX1NW
R19GT05UUztXRUJDT1JFX0NPTlRFWFRfTUVOVVM7RU5BQkxFX1hTTFQ7RU5BQkxFX1hQQVRIIg0K
IAkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCQkJUHJlY29tcGlsZWRIZWFkZXJUaHJv
dWdoPSJXZWJDb3JlUHJlZml4LmgiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iV2ViQ29yZVBy
ZWZpeC5oIg0KQEAgLTI4NSw3ICsyODUsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXCZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi4mcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXGJyaWRnZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5cYnJpZGdlXGMm
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGNzcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIp
Li5cZWRpdGluZyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccmVuZGVyaW5nJnF1b3Q7OyZx
dW90OyQoUHJvamVjdERpcikuLlxyZW5kZXJpbmdcc3R5bGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKS4uXGJpbmRpbmdzXGpzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxkb20mcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGhpc3RvcnkmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XGh0bWwmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGluc3BlY3RvciZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5cbG9hZGVyJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJc
YXBwY2FjaGUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXGxvYWRlclxhcmNoaXZlJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxsb2FkZXJcYXJjaGl2ZVxjZiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5cbG9hZGVyXGljb24mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2Um
cXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBhZ2VcYW5pbWF0aW9uJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcikuLlxwYWdlXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZv
cm0mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXHNxbCZxdW90OzsmcXVvdDsk
KFByb2plY3REaXIpLi5ccGxhdGZvcm1cd2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxw
bGF0Zm9ybVxuZXR3b3JrJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxuZXR3
b3JrXHdpbiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1cbmV0d29ya1xjdXJs
JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxjZiZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpLi5ccGxhdGZvcm1cZ3JhcGhpY3MmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4u
XHBsYXRmb3JtXHRleHQmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGdyYXBo
aWNzXGNhaXJvJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxncmFwaGljc1x3
aW4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzJnF1
b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xibXAmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXGdpZiZxdW90
OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcaWNvJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xqcGVnJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcikuLlxwbGF0Zm9ybVxpbWFnZS1kZWNvZGVyc1xwbmcmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGltYWdlLWRlY29kZXJzXHhibSZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ccGxhdGZvcm1caW1hZ2UtZGVjb2RlcnNcemxpYiZxdW90Ozsm
cXVvdDskKFByb2plY3REaXIpLi5ceG1sJnF1b3Q7OyZxdW90OyQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcV2ViQ29yZVxEZXJpdmVkU291cmNlcyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1
Z2lucyZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ccGx1Z2luc1x3aW4mcXVvdDs7JnF1b3Q7
JChQcm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXHBpeG1hblxzcmMmcXVvdDs7JnF1b3Q7JChQ
cm9qZWN0RGlyKS4uXHBsYXRmb3JtXGNhaXJvXGNhaXJvXHNyYyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpLi5cc3ZnXGdyYXBoaWNzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcZ3Jh
cGhpY3NcY2Fpcm8mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN2Z1xncmFwaGljc1xmaWx0
ZXJzJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxrY2FudmFzJnF1b3Q7OyZxdW90OyQoUHJv
amVjdERpcikuLlxrY2FudmFzXGRldmljZSZxdW90OzsmcXVvdDskKFByb2plY3REaXIpLi5ca2Nh
bnZhc1xkZXZpY2VccXVhcnR6JnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmcmcXVvdDs7
JnF1b3Q7JChQcm9qZWN0RGlyKS4uXHN0b3JhZ2UmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXRE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRPdXRwdXREaXIpXGluY2x1ZGVcSmF2YVNj
cmlwdENvcmUmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKS4uXEZvcndhcmRpbmdIZWFkZXJzJnF1
b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXGljdSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxpY29udiZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxzcWxpdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVcSmF2
YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29y
ZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXEluY2x1ZGVcQ29yZUZvdW5kYXRpb25cT1NYQ29tcGF0aWJpbGl0eUhlYWRl
cnNcR05VQ29tcGF0aWJpbGl0eSZxdW90OzsmcXVvdDskKFdlYktpdE91dHB1dERpcilcaW5jbHVk
ZVxRdE1vdmllV2luJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikuLlxzdmdcYW5pbWF0aW9uJnF1
b3Q7Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19XSU4zMl9fO0VOQUJMRV9ET01f
U1RPUkFHRTtFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TO0VOQUJMRV9TVkc7RU5BQkxF
X1NWR19BTklNQVRJT047RU5BQkxFX1NWR19BU19JTUFHRTtFTkFCTEVfU1ZHX1VTRTtFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUO0VOQUJMRV9TVkdfRk9OVFM7V0VCQ09SRV9DT05URVhUX01FTlVT
O0VOQUJMRV9WSURFTztFTkFCTEVfWFNMVDtFTkFCTEVfWFBBVEgiDQorCQkJCVByZXByb2Nlc3Nv
ckRlZmluaXRpb25zPSJfX1dJTjMyX187RU5BQkxFX0RPTV9TVE9SQUdFO0VOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlM7RU5BQkxFX1NWRztFTkFCTEVfU1ZHX0FOSU1BVElPTjtFTkFCTEVf
U1ZHX0FTX0lNQUdFO0VOQUJMRV9TVkdfVVNFO0VOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q7RU5B
QkxFX1NWR19GT05UUztXRUJDT1JFX0NPTlRFWFRfTUVOVVM7RU5BQkxFX1hTTFQ7RU5BQkxFX1hQ
QVRIIg0KIAkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCiAJCQkJUHJlY29tcGlsZWRIZWFk
ZXJUaHJvdWdoPSJXZWJDb3JlUHJlZml4LmgiDQogCQkJCUZvcmNlZEluY2x1ZGVGaWxlcz0iV2Vi
Q29yZVByZWZpeC5oIg0KQEAgLTI3MzYsMTEgKzI3MzYsMTEgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXEZyYW1lTG9hZGVyQ2xp
ZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVyXEZyYW1lTG9hZGVyQ2xpZW50LmNw
cCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGxvYWRlclxGcmFtZUxvYWRlckNsaWVudC5jcHAiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9h
ZGVyXEZyYW1lTG9hZGVyQ2xpZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CkBAIC0zMTY4LDE1ICszMTY4LDE1IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCINCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwbGF0Zm9ybVxMZW5ndGhTaXplLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxMaW5rSGFzaC5oIg0KKwkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXExpbmtIYXNoLmNwcCINCiAJCQkJPg0KIAkJCTwv
RmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXExlbmd0aFNp
emUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxMaW5rSGFzaC5oIg0KIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQpAQCAtMzk0Nyw2ICszOTQ3LDIyIEBACiAJCQkJPEZp
bGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcTWVkaWFQbGF5ZXIu
aCINCiAJCQkJCT4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvfFdpbjMyIg0KKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCT4N
CisJCQkJCQk8VG9vbA0KKwkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkJCQkv
Pg0KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
KwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiDQorCQkJCQkJPg0KKwkJCQkJCTxUb29sDQorCQkJCQkJCU5hbWU9IlZDQ3VzdG9t
QnVpbGRUb29sIg0KKwkJCQkJCS8+DQorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXFBhdGguY3BwIg0KQEAgLTQwMTAsNiArNDAyNiwyMiBAQAogCQkJCQk8RmlsZQ0KIAkJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3Ncd2luXENvbG9yU2FmYXJpLmNwcCIN
CiAJCQkJCQk+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQkJCU5hbWU9IkRlYnVn
X0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJ
Pg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJ
CQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KKwkJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQkJLz4NCisJCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXHdpblxGb250Q2FjaGVXaW4uY3BwIg0KQEAgLTQ0MTQsMTAgKzQ0
NDYsNDIgQEAKIAkJCQkJPEZpbGUNCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXHdpblxNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVXaW4uY3BwIg0KIAkJCQkJCT4N
CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2lu
MzIiDQorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCQk+DQorCQkJCQkJ
CTxUb29sDQorCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCQkvPg0KKwkJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIg0KKwkJCQkJCQk+DQorCQkJCQkJCTxUb29sDQorCQkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJCQkvPg0KKwkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJ
CQk8L0ZpbGU+DQogCQkJCQk8RmlsZQ0KIAkJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
Z3JhcGhpY3Ncd2luXE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVdpbi5oIg0KIAkJCQkJCT4N
CisJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2lu
MzIiDQorCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJCQk+DQorCQkJCQkJ
CTxUb29sDQorCQkJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCisJCQkJCQkJLz4NCisJ
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSINCisJCQkJCQkJPg0KKwkJCQkJCQk8VG9vbA0KKwkJCQkJCQkJTmFtZT0iVkNDdXN0
b21CdWlsZFRvb2wiDQorCQkJCQkJCS8+DQorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJ
CQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1x3aW5cT3BlblR5cGVVdGlsaXRpZXMuY3BwIg0KSW5kZXg6IFdlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCShyZXZpc2lvbiAzODY5
NCkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCSh3
b3JraW5nIGNvcHkpCkBAIC02NSw1ICs2NSw2IEBAIG1rZGlyIC1wICIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vRGVyaXZlZFMKIGNkICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMi
CiAKIGV4cG9ydCBXZWJDb3JlPSIke1hTUkNST09UfSIKLWV4cG9ydCBGRUFUVVJFX0RFRklORVM9
IkVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxFX0lDT05EQVRBQkFTRSBF
TkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9YUEFUSCBFTkFCTEVfU1ZHIEVO
QUJMRV9TVkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfRk9OVFMgRU5BQkxFX1NWR19GT1JFSUdOX09C
SkVDVCBFTkFCTEVfU1ZHX0FTX0lNQUdFIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9XT1JLRVJTIEVO
QUJMRV9WSURFTyIKKyNleHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5B
QkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUyBFTkFCTEVfWFBBVEggRU5BQkxFX1NWRyBFTkFCTEVfU1ZHX0FOSU1BVElPTiBF
TkFCTEVfU1ZHX0ZPTlRTIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19BU19J
TUFHRSBFTkFCTEVfU1ZHX1VTRSBFTkFCTEVfV09SS0VSUyBFTkFCTEVfVklERU8iCitleHBvcnQg
RkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJM
RV9JQ09OREFUQUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfWFBB
VEggRU5BQkxFX1NWRyBFTkFCTEVfU1ZHX0FOSU1BVElPTiBFTkFCTEVfU1ZHX0ZPTlRTIEVOQUJM
RV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZHX1VTRSBF
TkFCTEVfV09SS0VSUyIKIG1ha2UgLWYgIiRXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UiIC1q
ICR7TlVNQ1BVU30gfHwgZXhpdCAxCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAkocmV2aXNpb24gMzg2
OTQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgYXF1YUZvY3VzUmluZ0NvbG9yID0gMHhG
RjdEQUREOTsKKworQ29sb3IgZm9jdXNSaW5nQ29sb3IoKQoreworICAgIHN0YXRpYyBDb2xvciBm
b2N1c1JpbmdDb2xvcjsKKworICAgIGlmICghZm9jdXNSaW5nQ29sb3IuaXNWYWxpZCgpKQorICAg
ICAgICBmb2N1c1JpbmdDb2xvciA9IGFxdWFGb2N1c1JpbmdDb2xvcjsKKworICAgIHJldHVybiBm
b2N1c1JpbmdDb2xvcjsKK30KKwogc3RhdGljIGlubGluZSB2b2lkIHNldENvbG9yKGNhaXJvX3Qq
IGNyLCBjb25zdCBDb2xvciYgY29sKQogewogICAgIGZsb2F0IHJlZCwgZ3JlZW4sIGJsdWUsIGFs
cGhhOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udERhdGFiYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250RGF0YWJh
c2UuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnREYXRhYmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNs
dWRlICJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCiAjaW5j
bHVkZSA8c2hsb2JqLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0xMDksNyAr
MTExLDkgQEAgc3RhdGljIGJvb2wgcG9wdWxhdGVGb250RGF0YWJhc2VGcm9tUGxpcwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRF
UkZBQ0UpCiAgICAgd2tBZGRGb250c0Zyb21QbGlzdFJlcHJlc2VudGF0aW9uKGRhdGEuZ2V0KCkp
OworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExOSwxNyArMTIzLDIxIEBAIHN0
YXRpYyBib29sIHBvcHVsYXRlRm9udERhdGFiYXNlRnJvbUZpbGUKICAgICBpZiAoIWRpcmVjdG9y
eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0Up
CiAgICAgd2tBZGRGb250c0luRGlyZWN0b3J5KGRpcmVjdG9yeS5nZXQoKSk7CisjZW5kaWYKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgd3JpdGVGb250RGF0YWJhc2VUb1BsaXN0
KCkKIHsKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBkYXRhKEFkb3B0Q0YsIHdrQ3JlYXRlRm9udHNQbGlzdFJlcHJlc2VudGF0aW9uKCkpOwog
ICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc2FmZUNyZWF0ZUZpbGUoZm9u
dHNQbGlzdFBhdGgoKSwgZGF0YS5nZXQoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBwb3B1bGF0ZUZv
bnREYXRhYmFzZSgpCkluZGV4OiBXZWJLaXQvd2luL1dlYkFyY2hpdmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0
L3dpbi9XZWJBcmNoaXZlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTAgQEAKIAog
I2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RyZWFtLmgiCisK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2ZS5o
PgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00Miw2ICs0NSw3IEBA
IFdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6OmNyZWF0ZUluc3RhbmNlKCkKICAgICByZXR1cm4gaW5z
dGFuY2U7CiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogV2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6
Y3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSkK
IHsKICAgICBXZWJBcmNoaXZlKiBpbnN0YW5jZSA9IG5ldyBXZWJBcmNoaXZlKGNvcmVBcmNoaXZl
KTsKQEAgLTU3LDYgKzYxLDEzIEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoUGFzc1JlZlB0cjxM
ZWdhY3kKICAgICBnQ2xhc3NDb3VudCsrOwogICAgIGdDbGFzc05hbWVDb3VudC5hZGQoIldlYkFy
Y2hpdmUiKTsKIH0KKyNlbHNlCitXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKGludCBpZ25vcmUpCisg
ICAgOiBtX3JlZkNvdW50KDApCit7CisgICAgZ0NsYXNzQ291bnQrKzsKK30KKyNlbmRpZgogCiBX
ZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSgpCiB7CkBAIC0xMTgsNyArMTI5LDkgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjppbgogICAgIGlmICghZG9tTm9kZSkKICAgICAg
ICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fYXJj
aGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShkb21Ob2RlLT5ub2RlKCkpOworI2VuZGlm
CiAgICAgCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0xNDQsNiArMTU3LDcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJBcmNoaXZlOjpzdQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJBcmNoaXZlOjpkYXRhKAogICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIElTdHJlYW0q
KiBzdHJlYW0pCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiBjZkRhdGEgPSBtX2FyY2hpdmUtPnJhd0RhdGFSZXByZXNlbnRhdGlvbigpOwogICAgIGlmICgh
Y2ZEYXRhKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTUzLDQgKzE2Nyw3IEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6ZGEKICAgICAqc3RyZWFtID0gTWVtb3J5
U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShidWZmZXIpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxz
ZQorICAgIHJldHVybiBFX05PVElNUEw7CisjZW5kaWYKIH0KSW5kZXg6IFdlYktpdC93aW4vV2Vi
QXJjaGl2ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQXJjaGl2ZS5oCShyZXZpc2lv
biAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViQXJjaGl2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyMSArMjgsMjkgQEAKIAogI2luY2x1ZGUgIldlYktpdC5oIgogCisjaWYgVVNFKENGTkVUV09S
SykKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmU7CiB9Cisj
ZW5kaWYKIAogY2xhc3MgV2ViQXJjaGl2ZSA6IHB1YmxpYyBJV2ViQXJjaGl2ZQogewogcHVibGlj
OgogICAgIHN0YXRpYyBXZWJBcmNoaXZlKiBjcmVhdGVJbnN0YW5jZSgpOworI2lmIFVTRShDRk5F
VFdPUkspCiAgICAgc3RhdGljIFdlYkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8
V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOwogcHJvdGVjdGVkOgogICAgIFdlYkFyY2hpdmUo
UGFzc1JlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7CiAgICAgfldlYkFyY2hpdmUo
KTsKKyNlbHNlCisgICAgV2ViQXJjaGl2ZShpbnQpOworcHJvdGVjdGVkOgorICAgIH5XZWJBcmNo
aXZlKCk7CisjZW5kaWYKIAogcHVibGljOgogICAgIC8vIElVbmtub3duCkBAIC03OCw3ICs4Niw5
IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQ7CisjaWYgVVNF
KENGTkVUV09SSykKICAgICBSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4gbV9hcmNo
aXZlOworI2VuZGlmCiB9OwogCiAjZW5kaWYgLy8gV2ViQXJjaGl2ZV9oCkluZGV4OiBXZWJLaXQv
d2luL1dlYkNvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29v
a2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9XZWJDb29raWVN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsMTIgQEAKICNpbmNsdWRlICJX
ZWJLaXRETEwuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZVdpbi5oPgorI2VsaWYgVVNFKENVUkwpCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApAQCAtMzYsOSArNDAsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFdlYkNvb2tp
ZU1hbmFnZXIqIFdlYkNvb2tpZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIFdlYkNvb2tpZU1hbmFnZXIqIG1hbmFnZXIgPSBuZXcgV2ViQ29va2ll
TWFuYWdlcjsKICAgICBtYW5hZ2VyLT5BZGRSZWYoKTsKICAgICByZXR1cm4gbWFuYWdlcjsgICAg
CisjZWxzZQorICAgcmV0dXJuIDA7CisjZW5kaWYKIH0KIAogV2ViQ29va2llTWFuYWdlcjo6V2Vi
Q29va2llTWFuYWdlcigpCkBAIC01OCw2ICs2Niw3IEBAIFdlYkNvb2tpZU1hbmFnZXI6On5XZWJD
b29raWVNYW5hZ2VyKCkKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5h
Z2VyOjpRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKIHsKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgICpwcHZPYmplY3QgPSAwOwogICAgIGlmIChJc0VxdWFsR1VJ
RChyaWlkLCBJSURfSVVua25vd24pKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29va2llTWFuYWdlcio+KHRoaXMpOwpAQCAtNjgsNiArNzcsMTAgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZwogCiAgICAgQWRkUmVmKCk7CiAgICAgcmV0dXJu
IFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7Cisj
ZW5kaWYKIH0KIAogVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcjo6QWRk
UmVmKCkKQEAgLTg5LDE2ICsxMDIsMjYgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29v
a2llTWFuYWdlcgogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpj
b29raWVTdG9yYWdlKCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYqIHN0b3JhZ2UpCiB7Ci0gICAgaWYgKCFzdG9yYWdlKQorI2lmIFVTRShDRk5FVFdPUksp
CisgICBpZiAoIXN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKICAgICAqc3Rv
cmFnZSA9IGN1cnJlbnRDb29raWVTdG9yYWdlKCk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQor
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVTdG9yYWdl
KCAKICAgICAvKiBbaW5dICovIENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgc3RvcmFnZSkKIHsKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIHNldEN1cnJlbnRDb29raWVTdG9yYWdlKHN0b3JhZ2UpOwog
ICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4g
RV9GQUlMOworI2VuZGlmCiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAkocmV2aXNpb24gMzg2OTQpCisr
KyBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMs
OSBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCiAjcHJhZ21hIHdhcm5pbmcocHVzaCwgMCkK
KyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DRi5o
PgorI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpA
QCAtNTUsNiArNTcsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2lmIFVTRShD
Rk5FVFdPUkspCiAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzdGF0aWMgdm9p
ZCBkaWRTdGFydENhbGxiYWNrKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pOwogc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3RDYWxs
YmFjayhDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkLCBDRlVSTFJlcXVlc3RSZWYgcmVxdWVzdCwg
Q0ZVUkxSZXNwb25zZVJlZiByZWRpcmVjdGlvblJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKQEAgLTc0LDYgKzc3LDcgQEAgc3RhdGljIFVJbnQzMiBCdW5kbGVNYWdpY051bWJlciA9
IDB4REVDQQogCiBzdGF0aWMgQ0ZEYXRhUmVmIGV4dHJhY3RSZXN1bWVEYXRhRnJvbUJ1bmRsZShj
b25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOwogc3RhdGljIEhSRVNVTFQgYXBwZW5kUmVzdW1lRGF0
YVRvQnVuZGxlKENGRGF0YVJlZiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgp
OworI2VuZGlmCiAKIC8vIFdlYkRvd25sb2FkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtODYsNiArOTAsNyBAQCBX
ZWJEb3dubG9hZDo6V2ViRG93bmxvYWQoKQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0
ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZSA/IGRl
bGVnYXRlIDogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCk7CiAgICAg
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm5lY3Rpb24gPSBoYW5kbGUtPmNvbm5lY3Rpb24oKTsKICAg
ICBpZiAoIWNvbm5lY3Rpb24pIHsKQEAgLTExMywxMCArMTE4LDEyIEBAIHZvaWQgV2ViRG93bmxv
YWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUqIGgKICAgICAvLyBFaXRoZXIgd2F5LCB3ZSBuZWVkIHRv
IHJlbGVhc2UgdGhlIGNvbm5lY3Rpb24gdG8gYmFsYW5jZSBvdXQgcmVmIGNvdW50cwogICAgIGhh
bmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOwogICAgIENGUmVsZWFzZShjb25u
ZWN0aW9uKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwm
IHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1IoIkRlbGVnYXRlIGlz
ICVwIiwgbV9kZWxlZ2F0ZS5nZXQoKSk7CiAKQEAgLTEzMyw2ICsxNDAsNyBAQCB2b2lkIFdlYkRv
d25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgCiAgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxl
RG93bmxvYWRXaXRoUnVuTG9vcChtX2Rvd25sb2FkLmdldCgpLCBSZXNvdXJjZUhhbmRsZTo6bG9h
ZGVyUnVuTG9vcCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgTE9HKERvd25sb2Fk
LCAiV2ViRG93bmxvYWQgLSBJbml0aWFsaXplZCBkb3dubG9hZCBvZiB1cmwgJXMgaW4gV2ViRG93
bmxvYWQgJXAiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcyk7CisjZW5kaWYKIH0K
IAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC0yMDYsNiArMjE0LDcgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogICAgICAgICAvKiBbaW5dICovIElX
ZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViRG93bmxvYWRE
ZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2Vi
TXV0YWJsZVVSTFJlcXVlc3Q+IHdlYlJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0IHx8IEZBSUxF
RChyZXF1ZXN0LT5RdWVyeUludGVyZmFjZSgmd2ViUmVxdWVzdCkpKSB7CiAgICAgICAgIExPRyhE
b3dubG9hZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGZhaWxlZCAtIG5vdCBhIFdl
Yk11dGFibGVVUkxSZXF1ZXN0Iik7ICAgIApAQCAtMjM3LDEyICsyNDYsMTcgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAiV2Vi
RG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHN0YXJ0ZWQgZG93bmxvYWQgb2Yg
dXJsICVzIiwgd2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKICAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGJ1bmRsZVBhdGgsIAogICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERl
bGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9h
ZCwgIkF0dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5k
bGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgZXh0cmFjdFJlc3VtZURh
dGFGcm9tQnVuZGxlKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkp
KSk7CkBAIC0yODMsNiArMjk3LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93
bmxvYWQ6OmkKIAogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1
ZXN0IGNvbXBsZXRlLCByZXN1bWVkIGRvd25sb2FkIG9mIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5k
bGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKICAgICBy
ZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJ
TDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpj
YW5SZXN1bWVEb3dubG9hZERlY29kZWRXaXRoRW5jb2RpbmdNSU1FVHlwZSgKQEAgLTI5NSw2ICsz
MTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnN0YXJ0KCkKIHsKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU3RhcnRpbmcgZG93bmxv
YWQgKCVwKSIsIHRoaXMpOwogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKQEAgLTMwNSwxMCArMzI0LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OnMKICAgICBkaWRTdGFydCgpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQor
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsKCkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBk
b3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwpAQCAtMzE2LDEwICszNDAsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJEb3dubG9hZDo6YwogICAgIENGVVJMRG93bmxvYWRDYW5jZWwobV9kb3dubG9hZC5nZXQo
KSk7CiAgICAgbV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKIHsKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGlu
ZyBkb3dubG9hZCAoJXApLCB3cml0aW5nIHJlc3VtZSBpbmZvcm1hdGlvbiB0byBmaWxlIGlmIHBv
c3NpYmxlIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fZG93bmxvYWQpOwogICAgIGlmICghbV9kb3du
bG9hZCkKQEAgLTM0NiwyMSArMzc1LDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OmMKIGV4aXQ6CiAgICAgbV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIGhyOwor
I2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmRlbGV0ZXNGaWxlVXBv
bkZhaWx1cmUoCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KQogewor
I2lmIFVTRShDRk5FVFdPUkspCiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogICAgICpyZXN1bHQgPSBDRlVSTERvd25sb2FkRGVsZXRlc1Vwb25GYWlsdXJlKG1f
ZG93bmxvYWQuZ2V0KCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRG93bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKAogICAgICAgICAv
KiBbaW5dICovIEJTVFIgdGFyZ2V0UGF0aCwgCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8g
QlNUUiogYnVuZGxlUGF0aCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghdGFyZ2V0
UGF0aCkKICAgICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIApAQCAtMzc2LDYgKzQxNSwxMCBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpiCiAgICAgaWYgKCEqYnVu
ZGxlUGF0aCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICByZXR1cm4gU19PSzsKKyNlbHNl
CisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpyZXF1ZXN0KApAQCAtMzkyLDE2
ICs0MzUsMjIgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cgogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c2V0RGVsZXRlc0ZpbGVVcG9uRmFp
bHVyZSgKICAgICAgICAgLyogW2luXSAqLyBCT09MIGRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpCiB7
CisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAgICAgQ0ZVUkxEb3dubG9hZFNldERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25s
b2FkLmdldCgpLCAhIWRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpOwogICAgIHJldHVybiBTX09LOwor
I2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9u
KAogICAgICAgICAvKiBbaW5dICovIEJTVFIgcGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8gQk9P
TCBhbGxvd092ZXJ3cml0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3du
bG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtNDE1LDYgKzQ2NCwxMCBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzCiAgICAgTE9HKERvd25sb2FkLCAi
V2ViRG93bmxvYWQgLSBTZXQgZGVzdGluYXRpb24gdG8gJXMiLCBtX2J1bmRsZVBhdGguYXNjaWko
KS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogLy8gSVdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyMiw2ICs0NzUsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAg
LyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKQogeworI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgaWYgKG1fZG93bmxvYWQpIHsKICAgICAgICAgQ0ZVUkxEb3dubG9hZENh
bmNlbChtX2Rvd25sb2FkLmdldCgpKTsKICAgICAgICAgbV9kb3dubG9hZCA9IDA7CkBAIC00MzMs
MTEgKzQ4NywxNiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAg
ICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAK
ICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJu
IEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25s
b2FkOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
CiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFs
bGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAo
IXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NDUsMTIg
KzUwNCwxNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAg
aWYgKG1fZG93bmxvYWQpCiAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93
bmxvYWQuZ2V0KCksIDAsIHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5j
ZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyog
W2luXSAqLyBJV2ViVVJMQ3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNF
KENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdl
YkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAg
ICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NjQsOCArNTI4LDEzIEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnUKICAgICBpZiAobV9kb3dubG9hZCkKICAg
ICAgICAgQ0ZVUkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVk
ZW50aWFsLmdldCgpLCB3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZV
UkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdElt
cGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogLy8gQ0ZVUkxEb3dubG9hZCBDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBXZWJE
b3dubG9hZDo6ZGlkU3RhcnQoKQogewpAQCAtNzk4LDMgKzg2Nyw0IEBAIGV4aXQ6CiAgICAgZmNs
b3NlKGJ1bmRsZSk7CiAgICAgcmV0dXJuIGhyOwogfQorI2VuZGlmCkluZGV4OiBXZWJLaXQvd2lu
L1dlYkRvd25sb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShy
ZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
Q3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpOwogCisjaWYgVVNFKENGTkVUV09SSykKICAg
ICAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcwogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICBD
RlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNw
b25zZVJlZik7CkBAIC0xMTYsMTMgKzExNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVh
dGVEZXN0aW5hdGlvbihDRlVSTFJlZik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lk
IGRpZEZhaWwoQ0ZFcnJvclJlZik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1f
cmVmQ291bnQ7CiAKICAgICBXZWJDb3JlOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXZWJD
b3JlOjpTdHJpbmcgbV9idW5kbGVQYXRoOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWlu
UHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CisjZW5kaWYKICAgICBDT01QdHI8SVdl
Yk11dGFibGVVUkxSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAgQ09NUHRyPElXZWJEb3dubG9hZERl
bGVnYXRlPiBtX2RlbGVnYXRlOwogCkluZGV4OiBXZWJLaXQvd2luL1dlYkVycm9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkVycm9yLmNwcAkocmV2aXNpb24gMzg2OTQpCisrKyBX
ZWJLaXQvd2luL1dlYkVycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAotI2lm
IFVTRShDRk5FVFdPUkspCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8
V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAK
SW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODEzLDYgKzE4MTMsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cygmaGVhZGVy
SGVpZ2h0LCAmZm9vdGVySGVpZ2h0KTsKICAgICBHcmFwaGljc0NvbnRleHQgc3Bvb2xDdHgocGN0
eCk7CiAKKyNpZiBQTEFURk9STShDRykKICAgICBmb3IgKFVJTlQgaWkgPSBzdGFydFBhZ2U7IGlp
IDwgZW5kUGFnZTsgaWkrKykgewogICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0ID0gbV9wYWdlUmVj
dHNbaWldOwogCkBAIC0xODU2LDYgKzE4NTcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkZyYW1lOjpzcG9vCiAgICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7CiAgICAgICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAgCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24gMzg2OTQpCisr
KyBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyAr
NDUsOSBAQAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNwcmFnbWEg
d2FybmluZyhwb3ApCiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTk5LDggKzEwMSwxMCBAQCB2b2lkIFdlYkRy
YXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKiBpbmZvCiAKICAgICBpbnQgb2xkRm9udFNtb290aGlu
Z0xldmVsID0gLTE7CiAgICAgaWYgKGluZm8tPm92ZXJyaWRlU21vb3RoaW5nTGV2ZWwgPj0gMCkg
eworI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgICAgICBvbGRGb250U21vb3RoaW5n
TGV2ZWwgPSB3a0dldEZvbnRTbW9vdGhpbmdMZXZlbCgpOwogICAgICAgICB3a1NldEZvbnRTbW9v
dGhpbmdMZXZlbChpbmZvLT5vdmVycmlkZVNtb290aGluZ0xldmVsKTsKKyNlbmRpZgogICAgIH0K
IAogICAgIHsKQEAgLTExMywxNSArMTE3LDIxIEBAIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJl
bmRlckluZm8qIGluZm8KIAogICAgICAgICAvLyBTZXQgc2hhZG93IHNldHRpbmcKICAgICAgICAg
aWYgKGluZm8tPnN0cnVjdFNpemUgPT0gc2l6ZW9mKFdlYlRleHRSZW5kZXJJbmZvKSAmJgorI2lm
IFBMQVRGT1JNKENHKQogICAgICAgICAgICAgKGluZm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZv
LT5zaGFkb3dPZmZzZXQuY3kgfHwgaW5mby0+c2hhZG93Qmx1ciB8fCBpbmZvLT5zaGFkb3dDb2xv
cikpCisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICAgICAgICAgIChpbmZvLT5zaGFkb3dPZmZz
ZXQuY3ggfHwgaW5mby0+c2hhZG93T2Zmc2V0LmN5IHx8IGluZm8tPnNoYWRvd0JsdXIpKQorI2Vu
ZGlmCiAgICAgICAgICAgICBjb250ZXh0LnNldFNoYWRvdyhpbmZvLT5zaGFkb3dPZmZzZXQsIGlu
Zm8tPnNoYWRvd0JsdXIsIGluZm8tPnNoYWRvd0NvbG9yKTsKIAogICAgICAgICBXZWJDb3JlRHJh
d1RleHRBdFBvaW50KGNvbnRleHQsIGRyYXdTdHJpbmcsIGluZm8tPnB0LCBtYWtlRm9udCgqKGlu
Zm8tPmRlc2NyaXB0aW9uKSksIGluZm8tPmNvbG9yLCBpbmZvLT51bmRlcmxpbmVkSW5kZXgpOwog
ICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAgICB9CiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lO
VEVSRkFDRSkKICAgICBpZiAoaW5mby0+b3ZlcnJpZGVTbW9vdGhpbmdMZXZlbCA+PSAwKQogICAg
ICAgICB3a1NldEZvbnRTbW9vdGhpbmdMZXZlbChvbGRGb250U21vb3RoaW5nTGV2ZWwpOworI2Vu
ZGlmCiB9CiAKIGZsb2F0IFRleHRGbG9hdFdpZHRoKExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwg
Y29uc3QgV2ViRm9udERlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbikKSW5kZXg6IFdlYktpdC93aW4v
V2ViS2l0R3JhcGhpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNz
LmgJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMyBAQAogCiBleHRlcm4gIkMiIHsKIAorI2lmIFBMQVRG
T1JNKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xvciogQ0dDb2xvclJlZjsKIHR5cGVkZWYgc3Ry
dWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCit0eXBl
ZGVmIHVuc2lnbmVkIENvbG9yUmVmOyAgICAgICAgLy8gUkdCQSBxdWFkcnVwbGV0Cit0eXBlZGVm
IHN0cnVjdCBfY2Fpcm8qIENhaXJvQ29udGV4dFJlZjsKKyNlbmRpZgogCiB0eXBlZGVmIHdjaGFy
X3QgV0NIQVI7CiB0eXBlZGVmIF9fbnVsbHRlcm1pbmF0ZWQgY29uc3QgV0NIQVIqIExQQ1dTVFI7
CkBAIC00OSwxOCArNTQsMzAgQEAgc3RydWN0IFdlYkZvbnREZXNjcmlwdGlvbiB7CiBzdHJ1Y3Qg
V2ViVGV4dFJlbmRlckluZm8KIHsKICAgICBEV09SRCBzdHJ1Y3RTaXplOworI2lmIFBMQVRGT1JN
KENHKQogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShDQUlSTykK
KyAgICBDYWlyb0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VuZGlmCiAgICAgTFBDVFNUUiB0ZXh0
OwogICAgIGludCBsZW5ndGg7CiAgICAgUE9JTlQgcHQ7CiAgICAgY29uc3QgV2ViRm9udERlc2Ny
aXB0aW9uKiBkZXNjcmlwdGlvbjsKKyNpZiBQTEFURk9STShDRykKICAgICBDR0NvbG9yUmVmIGNv
bG9yOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgQ29sb3JSZWYgY29sb3I7CisjZW5kaWYK
ICAgICBpbnQgdW5kZXJsaW5lZEluZGV4OwogICAgIGJvb2wgZHJhd0FzUGFzc3dvcmQ7CiAgICAg
aW50IG92ZXJyaWRlU21vb3RoaW5nTGV2ZWw7IC8vIHBhc3MgaW4gLTEgaWYgY2FsbGVyIGRvZXMg
bm90IHdhbnQgdG8gb3ZlcnJpZGUgc21vb3RoaW5nIGxldmVsCiAgICAgU0laRSBzaGFkb3dPZmZz
ZXQ7CiAgICAgaW50IHNoYWRvd0JsdXI7CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJl
ZiBzaGFkb3dDb2xvcjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENvbG9yUmVmIHNoYWRv
d0NvbG9yOworI2VuZGlmCiB9OwogCiB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZv
Kik7CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdFByZWZpeC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93aW4vV2ViS2l0UHJlZml4LmgJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0L3dpbi9XZWJL
aXRQcmVmaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDExIEBACiAgKi8KIAogI2lm
bmRlZiBfV0lOMzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMAorI2RlZmluZSBf
V0lOMzJfV0lOTlQgMHgwNTAxCiAjZW5kaWYKIAogI2lmbmRlZiBXSU5WRVIKLSNkZWZpbmUgV0lO
VkVSIDB4MDUwMAorI2RlZmluZSBXSU5WRVIgMHgwNTAxCiAjZW5kaWYKIAogLy8gSWYgd2UgZG9u
J3QgZGVmaW5lIHRoZXNlLCB0aGV5IGdldCBkZWZpbmVkIGluIHdpbmRlZi5oLiAKSW5kZXg6IFdl
YktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI3ByYWdtYSB3YXJuaW5n
KHBvcCkKIAorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIC8vIElXZWJVUkxSZXF1ZXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTM2Nyw5ICszNjksMTMgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxlVVJMUgogewogICAgIGlmICghcmVz
dWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
UmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0Ys
IENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVx
dWVzdC5jZlVSTFJlcXVlc3QoKSkpOwogICAgICpyZXN1bHQgPSBjcmVhdGVJbnN0YW5jZShSZXNv
dXJjZVJlcXVlc3QobXV0YWJsZVJlcXVlc3QuZ2V0KCkpKTsKICAgICByZXR1cm4gU19PSzsKKyNl
bHNlCisgICAgcmV0dXJuIEVfTk9USU1QTDsKKyNlbmRpZgogfQogCiAvLyBJV2ViTXV0YWJsZVVS
TFJlcXVlc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpJbmRleDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDkgQEAK
ICNpbmNsdWRlIDxzaGxvYmouaD4KICNpbmNsdWRlIDxzaGZvbGRlci5oPgogI2luY2x1ZGUgPHRj
aGFyLmg+CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIApAQCAtOTY2LDcg
Kzk2OCw5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXMKICAgICBz
ZXRJbnRlZ2VyVmFsdWUoQ0ZTVFIoV2ViS2l0Rm9udFNtb290aGluZ1R5cGVQcmVmZXJlbmNlS2V5
KSwgc21vb3RoaW5nVHlwZSk7CiAgICAgaWYgKHNtb290aGluZ1R5cGUgPT0gRm9udFNtb290aGlu
Z1R5cGVXaW5kb3dzKQogICAgICAgICBzbW9vdGhpbmdUeXBlID0gRm9udFNtb290aGluZ1R5cGVT
dGFuZGFyZDsKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICB3a1NldEZvbnRTbW9v
dGhpbmdMZXZlbCgoaW50KXNtb290aGluZ1R5cGUpOworI2VuZGlmCiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2Vi
S2l0L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw5
IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RlN0cmluZy5oPgorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6
OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkwLDYgKzkyLDggQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJUZXh0UmVuZGVyZQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihmb250RmlsZVBhdGgpLCBz
dGF0aWNfY2FzdDxDRkluZGV4Pih3Y3NsZW4oZm9udEZpbGVQYXRoKSkpKTsKKyNpZiBFTkFCTEUo
U0FGQVJJX0lOVEVSRkFDRSkKICAgICB3a0FkZEZvbnRzQXRQYXRoKHN0cmluZy5nZXQoKSk7Cisj
ZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDks
OSArMTQ5LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGkKIAog
ICAgIC8vIEZJWE1FOiBBZnRlciB3ZSBjaGFuZ2UgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgdG8g
dXNlICJSZXNvdXJjZUhhbmRsZSIgYXMgdGhlIGFic3RyYWN0ICJTZW5kZXIiIG9yICJTb3VyY2Ug
b2YgdGhpcyBBdXRoIENoYWxsZW5nZSIsIHRoZW4gd2UnbGwKICAgICAvLyBjb25zdHJ1Y3QgdGhl
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHdpdGggdGhhdCBhcyBvYnRhaW5lZCBmcm9tIHRoZSB3
ZWJTZW5kZXIKLQorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9hdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlNwYWNlLT5wcm90ZWN0aW9uU3BhY2Uo
KSwgd2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJldmlvdXNGYWlsdXJlQ291bnQsIHdlYlJlc3BvbnNlLT5yZXNvdXJjZVJl
c3BvbnNlKCksIHdlYkVycm9yLT5yZXNvdXJjZUVycm9yKCkpOworI2VuZGlmCiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIuaCIKIAogI2luY2x1ZGUgIkNPTVB0ci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuaCIKICNpbmNsdWRlICJXZWJVUkxDcmVkZW50aWFsLmgiCkBAIC0xMDAsMjkgKzEwMSw0
MCBAQCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjYW5j
ZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1
ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKHdlYkNoYWxsZW5n
ZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
CiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFs
bGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAo
IXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIG1faGFuZGxlLT5y
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwod2ViQ2hhbGxlbmdlLT5h
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6
OnVzZUNyZWRlbnRpYWwoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTENyZWRlbnRpYWwqIGNy
ZWRlbnRpYWwsIAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSogY2hhbGxlbmdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7
CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xMzMs
NiArMTQ1LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGkKIAog
ICAgIG1faGFuZGxlLT5yZWNlaXZlZENyZWRlbnRpYWwod2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpLCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCkpOwogICAgIHJldHVy
biBTX09LOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX0ZBSUw7
CisjZW5kaWYKIH0KIAogLy8gV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpJbmRleDogV2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHJldmlzaW9uIDM4Njk0KQorKysgV2ViS2l0
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDEwIEBA
CiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdIZWxwZXJzLmgiCiAjaW5jbHVkZSAiV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmgiCiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKKwog
I2luY2x1ZGUgPHd0Zi9wbGF0Zm9ybS5oPgogI3ByYWdtYSB3YXJuaW5nKCBwdXNoLCAwICkKICNp
bmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMzg2OTQpCisr
KyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEwMywx
OCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU1ZhbHVlLmg+CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9D
RlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5o
PgorI2VuZGlmCisKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgor
CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50
ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPiAKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDxkaW1tLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+CkBAIC0z
NjYsNiArMzc0LDggQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQog
ICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwp
CiAgICAgICAgIHJldHVybjsKIAorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQorCiAjaWZk
ZWYgQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZVByZXNlbnQKICAgICBSZXRhaW5QdHI8Q0ZV
UkxDYWNoZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENh
Y2hlKCkpOwogI2Vsc2UKQEAgLTU0OSw2ICs1NTksNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hl
TW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAgc19kaWRTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKICAgICBz
X2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOwogICAgIHJldHVybjsKKyNlbmRpZgogfQogCiBXZWJD
YWNoZU1vZGVsIFdlYlZpZXc6OmNhY2hlTW9kZWwoKQpAQCAtNDE5Nyw5ICs0MjA4LDExIEBAIEhS
RVNVTFQgdXBkYXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4KICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGhyOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBTZXQg
Y29va2llIHN0b3JhZ2UgYWNjZXB0IHBvbGljeQogICAgIGlmIChDRkhUVFBDb29raWVTdG9yYWdl
UmVmIGNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhU
VFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGFjY2Vw
dFBvbGljeSk7CisjZW5kaWYKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCShyZXZpc2lvbiAzODY5NCkKKysr
IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIyMyw2ICsyMjMsNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRl
RHJhZ0ltCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENHKQogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0UmVmOwogICAgIGltYWdlID0gYWxsb2NJbWFnZSh3b3JraW5n
REMsIGltYWdlU2l6ZSwgJmNvbnRleHRSZWYpOwogICAgIGlmICghaW1hZ2UpIHsKQEAgLTI1OCw2
ICsyNTksNyBAQCBEcmFnSW1hZ2VSZWYgV2ViRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltCiAgICAg
V2ViQ29yZURyYXdEb3VibGVkVGV4dEF0UG9pbnQoY29udGV4dCwgbGFiZWwsIHRleHRQb3MsIGxh
YmVsRm9udCwgdG9wQ29sb3IsIGJvdHRvbUNvbG9yKTsKIAogICAgIENHQ29udGV4dFJlbGVhc2Uo
Y29udGV4dFJlZik7CisjZW5kaWYKICAgICBEZWxldGVEQyh3b3JraW5nREMpOwogICAgIFJlbGVh
c2VEQygwLCBkYyk7CiAgICAgcmV0dXJuIGltYWdlOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDM4Njk0
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJDT01Qcm9wZXJ0eUJh
Zy5oIgogI2luY2x1ZGUgIkVtYmVkZGVkV2lkZ2V0LmgiCiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdI
ZWxwZXJzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJDYWNo
ZWRQYWdlUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTQ2LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJX
ZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNwcmFnbWEgd2FybmluZyhw
dXNoLCAwKQotI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KQEAgLTEwNSw2ICsxMDUsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50Ojphc3NpZ25JZGVudGlmCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEFT
U0VSVChjaGFsbGVuZ2Uuc291cmNlSGFuZGxlKCkpOwogCiAgICAgV2ViVmlldyogd2ViVmlldyA9
IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKQEAgLTExOCw2ICsxMTksOSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZERl
bGVnYXRlIGRvZXNuJ3QgZXhpc3Qgb3IgZmFpbHMgdG8gaGFuZGxlIHRoZSBjYWxsLCB3ZSB0ZWxs
IHRoZSBSZXNvdXJjZUhhbmRsZQogICAgIC8vIHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlh
bCAtIHRoaXMgaXMgdGhlIGJlc3QgYXBwcm94aW1hdGlvbiBvZiBNYWMgYmVoYXZpb3IKICAgICBj
aGFsbGVuZ2Uuc291cmNlSGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0
Q3JlZGVudGlhbChjaGFsbGVuZ2UpOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkBA
IC00NzEsMjEgKzQ3NSw1MiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZv
cm1ECiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAorI2lmIEVOQUJMRShT
QUZBUklfSU5URVJGQUNFKQogICAgIEFTU0VSVChjb3JlRnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpID09IGNhY2hlZFBhZ2UtPmRvY3VtZW50TG9hZGVyKCkpOwogCiAgICAgV2ViQ2Fj
aGVkUGFnZVBsYXRmb3JtRGF0YSogd2ViUGxhdGZvcm1EYXRhID0gbmV3IFdlYkNhY2hlZFBhZ2VQ
bGF0Zm9ybURhdGEoc3RhdGljX2Nhc3Q8SVdlYkRhdGFTb3VyY2UqPihnZXRXZWJEYXRhU291cmNl
KGNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpKSk7CiAgICAgY2FjaGVkUGFn
ZS0+c2V0Q2FjaGVkUGFnZVBsYXRmb3JtRGF0YSh3ZWJQbGF0Zm9ybURhdGEpOworI2VuZGlmCiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5l
d1BhZ2UoKQogewotICAgIFdlYlZpZXcqIHZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7Cisg
ICAgRnJhbWUqIGZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKKyAgICBBU1NFUlQoZnJhbWUpOwor
CisgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisgICAgQVNTRVJUKHBhZ2UpOworCisg
ICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lID09IHBhZ2UtPm1haW5GcmFtZSgpOworCisgICAg
aWYgKGlzTWFpbkZyYW1lICYmIGZyYW1lLT52aWV3KCkpCisgICAgICAgIGZyYW1lLT52aWV3KCkt
PnNldFBhcmVudFZpc2libGUoZmFsc2UpOworCisgICAgZnJhbWUtPnNldFZpZXcoMCk7CisKKyAg
ICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOworCisgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXc7CisgICAgaWYgKGlzTWFpbkZyYW1lKSB7CisgICAgICAgIFJFQ1QgcmVj
dDsKKyAgICAgICAgd2ViVmlldy0+ZnJhbWVSZWN0KCZyZWN0KTsKKyAgICAgICAgZnJhbWVWaWV3
ID0gbmV3IEZyYW1lVmlldyhmcmFtZSwgSW50UmVjdChyZWN0KS5zaXplKCkpOworICAgIH0gZWxz
ZQorICAgICAgICBmcmFtZVZpZXcgPSBuZXcgRnJhbWVWaWV3KGZyYW1lKTsKKworICAgIGZyYW1l
LT5zZXRWaWV3KGZyYW1lVmlldyk7CisgICAgZnJhbWVWaWV3LT5kZXJlZigpOyAvLyBGcmFtZVZp
ZXdzIGFyZSBjcmVhdGVkIHdpdGggYSByZWYgY291bnQgb2YgMS4gUmVsZWFzZSB0aGlzIHJlZiBz
aW5jZSB3ZSd2ZSBhc3NpZ25lZCBpdCB0byBmcmFtZS4KKworICAgIG1fd2ViRnJhbWUtPnVwZGF0
ZUJhY2tncm91bmQoKTsKKworICAgIGlmIChpc01haW5GcmFtZSkKKyAgICAgICAgZnJhbWVWaWV3
LT5zZXRQYXJlbnRWaXNpYmxlKHRydWUpOworCisgICAgaWYgKGZyYW1lLT5vd25lclJlbmRlcmVy
KCkpCisgICAgICAgIGZyYW1lLT5vd25lclJlbmRlcmVyKCktPnNldFdpZGdldChmcmFtZVZpZXcp
OwogCi0gICAgUkVDVCByZWN0OwotICAgIHZpZXctPmZyYW1lUmVjdCgmcmVjdCk7Ci0gICAgYm9v
bCB0cmFuc3BhcmVudCA9IHZpZXctPnRyYW5zcGFyZW50KCk7Ci0gICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gdHJhbnNwYXJlbnQgPyBDb2xvcjo6dHJhbnNwYXJlbnQgOiBDb2xvcjo6d2hpdGU7
Ci0gICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZv
ck5ld1BhZ2UoY29yZShtX3dlYkZyYW1lKSwgSW50UmVjdChyZWN0KS5zaXplKCksIGJhY2tncm91
bmRDb2xvciwgdHJhbnNwYXJlbnQpOworICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyID0gZnJhbWUtPm93bmVyRWxlbWVudCgpKQorICAgICAgICBmcmFtZS0+dmlldygpLT5zZXRD
YW5IYXZlU2Nyb2xsYmFycyhvd25lci0+c2Nyb2xsaW5nTW9kZSgpICE9IFNjcm9sbGJhckFsd2F5
c09mZik7CiB9CiAKIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbkNhY2hlUGFnZSgpIGNv
bnN0CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdC52Y3Byb2ovV2ViS2l0LnJjCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQucmMJKHJldmlzaW9uIDM4Njk0KQor
KysgV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdC5yYwkod29ya2luZyBjb3B5KQpAQCAt
MSw3ICsxLDkgQEAKIC8vIE1pY3Jvc29mdCBWaXN1YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBz
Y3JpcHQuCiAvLwogI2luY2x1ZGUgInJlc291cmNlLmgiCisjaWZuZGVmIEFQU1RVRElPX0lOVk9L
RUQKICNpbmNsdWRlICJhdXRvdmVyc2lvbi5oIgorI2VuZGlmCiAjaW5jbHVkZSAid2lucmVzLmgi
CiAKICNpZmRlZiBfV0lOMzIKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNw
cm9qCShyZXZpc2lvbiAzODY5NCkKKysrIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQu
dmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODcsMTcgKzI4NywxOCBAQAogCQkJLz4NCiAJCQk8
VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNp
ZXM9ImRlbGF5aW1wLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgY29tZGxn
MzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1
aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHVzcDEwLmxpYiBjb21jdGwzMi5saWIgdmVy
c2lvbi5saWIgc2hsd2FwaS5saWIgbGlieG1sMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGxp
YnhzbHQkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBpY3VpbiQoTGlicmFyeUNvbmZpZ1N1ZmZp
eCkubGliIGljdXVjJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgU1FMaXRlMyQoTGlicmFyeUNv
bmZpZ1N1ZmZpeCkubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBDb3Jl
Rm91bmRhdGlvbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIENvcmVHcmFwaGljcy5saWIgQ0ZO
ZXR3b3JrJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgSmF2YVNjcmlwdENvcmUkKFdlYktpdENv
bmZpZ1N1ZmZpeCkubGliIFdlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYkNv
cmUkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdURiQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIg
V2ViS2l0U3lzdGVtSW50ZXJmYWNlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBtc2ltZzMyLmxp
YiBRVE1vdmllV2luJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBjcnlwdDMyLmxpYiBjYWlyby5s
aWIgZ2lmbGliLmxpYiBqcGVnLmxpYiBsaWJwbmcubGliIGxpYmN1cmxfaW1wLmxpYiB3czJfMzIu
bGliIHdpbmluZXQubGliIFdsZGFwMzIubGliIGlwaGxwYXBpLmxpYiINCisJCQkJQWRkaXRpb25h
bERlcGVuZGVuY2llcz0iZGVsYXlpbXAubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMy
LmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVh
dXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgdXNwMTAubGliIGNvbWN0
bDMyLmxpYiB2ZXJzaW9uLmxpYiBzaGx3YXBpLmxpYiBsaWJ4bWwyJChMaWJyYXJ5Q29uZmlnU3Vm
Zml4KS5saWIgbGlieHNsdCQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGljdWluJChMaWJyYXJ5
Q29uZmlnU3VmZml4KS5saWIgaWN1dWMkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBTUUxpdGUz
JChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgcHRocmVhZFZDMiQoTGlicmFyeUNvbmZpZ1N1ZmZp
eCkubGliIENGTGl0ZV9EZWJ1Zy5saWIgSmF2YVNjcmlwdENvcmUkKFdlYktpdENvbmZpZ1N1ZmZp
eCkubGliIFdlYktpdEdVSUQkKFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYkNvcmUkKFdlYktp
dENvbmZpZ1N1ZmZpeCkubGliIFdURiQoV2ViS2l0Q29uZmlnU3VmZml4KS5saWIgbXNpbWczMi5s
aWIgY3J5cHQzMi5saWIgY2Fpcm8ubGliIGdpZmxpYi5saWIganBlZy5saWIgbGlicG5nLmxpYiBs
aWJjdXJsX2ltcC5saWIgd3MyXzMyLmxpYiB3aW5pbmV0LmxpYiBXbGRhcDMyLmxpYiBpcGhscGFw
aS5saWIiDQogCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKSQoV2ViS2l0
RExMQ29uZmlnU3VmZml4KS5kbGwiDQogCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9
IiINCiAJCQkJTW9kdWxlRGVmaW5pdGlvbkZpbGU9IldlYktpdCQoV2ViS2l0RExMQ29uZmlnU3Vm
Zml4KS5kZWYiDQotCQkJCURlbGF5TG9hZERMTHM9ImNvbWRsZzMyLmRsbDt1c3AxMC5kbGw7Y29t
Y3RsMzIuZGxsO3ZlcnNpb24uZGxsO2xpYnhzbHQkKExpYnJhcnlDb25maWdTdWZmaXgpLmRsbDtT
UUxpdGUzJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5kbGw7bXNpbWczMi5kbGw7UVRNb3ZpZVdpbiQo
V2ViS2l0Q29uZmlnU3VmZml4KS5kbGw7aXBobHBhcGkuZGxsIg0KKwkJCQlEZWxheUxvYWRETExz
PSJjb21kbGczMi5kbGw7dXNwMTAuZGxsO2NvbWN0bDMyLmRsbDt2ZXJzaW9uLmRsbDtsaWJ4c2x0
JChMaWJyYXJ5Q29uZmlnU3VmZml4KS5kbGw7U1FMaXRlMyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCku
ZGxsO21zaW1nMzIuZGxsO2lwaGxwYXBpLmRsbCINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5h
bWU9IlZDQUxpbmtUb29sIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5pZmVz
dFRvb2wiDQorCQkJCVZlcmJvc2VPdXRwdXQ9ImZhbHNlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJ
CQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCkBAIC0zNjUsMTEgKzM2NiwxMSBAQAogCQkJLz4NCiAJ
CQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRl
bmNpZXM9ImRlbGF5aW1wLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgY29t
ZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGli
IHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIHVzcDEwLmxpYiBjb21jdGwzMi5saWIg
dmVyc2lvbi5saWIgc2hsd2FwaS5saWIgbGlieG1sMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGli
IGxpYnhzbHQkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBpY3VpbiQoTGlicmFyeUNvbmZpZ1N1
ZmZpeCkubGliIGljdXVjJChMaWJyYXJ5Q29uZmlnU3VmZml4KS5saWIgU1FMaXRlMyQoTGlicmFy
eUNvbmZpZ1N1ZmZpeCkubGliIHB0aHJlYWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBD
b3JlRm91bmRhdGlvbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIENGTmV0d29yayQoTGlicmFy
eUNvbmZpZ1N1ZmZpeCkubGliIENvcmVHcmFwaGljcyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGli
IEphdmFTY3JpcHRDb3JlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBXZWJLaXRHVUlEJChXZWJL
aXRDb25maWdTdWZmaXgpLmxpYiBXZWJDb3JlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBXVEYk
KFdlYktpdENvbmZpZ1N1ZmZpeCkubGliIFdlYktpdFN5c3RlbUludGVyZmFjZSQoV2ViS2l0Q29u
ZmlnU3VmZml4KS5saWIgbXNpbWczMi5saWIgUVRNb3ZpZVdpbiQoV2ViS2l0Q29uZmlnU3VmZml4
KS5saWIgY3J5cHQzMi5saWIgY2Fpcm8ubGliIGdpZmxpYi5saWIganBlZy5saWIgbGlicG5nLmxp
YiBsaWJjdXJsX2ltcC5saWIgd3MyXzMyLmxpYiB3aW5pbmV0LmxpYiBXbGRhcDMyLmxpYiBpcGhs
cGFwaS5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImRlbGF5aW1wLmxpYiBrZXJu
ZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBz
aGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2Ri
Y2NwMzIubGliIHVzcDEwLmxpYiBjb21jdGwzMi5saWIgdmVyc2lvbi5saWIgc2hsd2FwaS5saWIg
bGlieG1sMiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGxpYnhzbHQkKExpYnJhcnlDb25maWdT
dWZmaXgpLmxpYiBpY3VpbiQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIGljdXVjJChMaWJyYXJ5
Q29uZmlnU3VmZml4KS5saWIgU1FMaXRlMyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkubGliIHB0aHJl
YWRWQzIkKExpYnJhcnlDb25maWdTdWZmaXgpLmxpYiBDRkxpdGUubGliIEphdmFTY3JpcHRDb3Jl
JChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBXZWJLaXRHVUlEJChXZWJLaXRDb25maWdTdWZmaXgp
LmxpYiBXZWJDb3JlJChXZWJLaXRDb25maWdTdWZmaXgpLmxpYiBXVEYkKFdlYktpdENvbmZpZ1N1
ZmZpeCkubGliIG1zaW1nMzIubGliIGNyeXB0MzIubGliIGNhaXJvLmxpYiBnaWZsaWIubGliIGpw
ZWcubGliIGxpYnBuZy5saWIgbGliY3VybF9pbXAubGliIHdzMl8zMi5saWIgd2luaW5ldC5saWIg
V2xkYXAzMi5saWIgaXBobHBhcGkubGliIg0KIAkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQ
cm9qZWN0TmFtZSkkKFdlYktpdERMTENvbmZpZ1N1ZmZpeCkuZGxsIg0KIAkJCQlBZGRpdGlvbmFs
TGlicmFyeURpcmVjdG9yaWVzPSIiDQogCQkJCU1vZHVsZURlZmluaXRpb25GaWxlPSJXZWJLaXQk
KFdlYktpdERMTENvbmZpZ1N1ZmZpeCkuZGVmIg0KLQkJCQlEZWxheUxvYWRETExzPSJjb21kbGcz
Mi5kbGw7dXNwMTAuZGxsO2NvbWN0bDMyLmRsbDt2ZXJzaW9uLmRsbDtsaWJ4c2x0JChMaWJyYXJ5
Q29uZmlnU3VmZml4KS5kbGw7U1FMaXRlMyQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkuZGxsO21zaW1n
MzIuZGxsO1FUTW92aWVXaW4kKFdlYktpdENvbmZpZ1N1ZmZpeCkuZGxsO2lwaGxwYXBpLmRsbCIN
CisJCQkJRGVsYXlMb2FkRExMcz0iY29tZGxnMzIuZGxsO3VzcDEwLmRsbDtjb21jdGwzMi5kbGw7
dmVyc2lvbi5kbGw7bGlieHNsdCQoTGlicmFyeUNvbmZpZ1N1ZmZpeCkuZGxsO1NRTGl0ZTMkKExp
YnJhcnlDb25maWdTdWZmaXgpLmRsbDttc2ltZzMyLmRsbDtpcGhscGFwaS5kbGwiDQogCQkJLz4N
CiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25604</attachid>
            <date>2008-11-29 19:34:57 -0800</date>
            <delta_ts>2008-12-11 13:36:27 -0800</delta_ts>
            <desc>Patch against ToT</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>35328</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzODg0OCkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDcgQEAKICNp
ZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRyAxCiAjZGVmaW5lIFdURl9Q
TEFURk9STV9DSSAxCisjZGVmaW5lIEVOQUJMRV9TQUZBUklfSU5URVJGQUNFIDEKICNlbmRpZgog
CiAvKiBQTEFURk9STShTS0lBKSBmb3IgV2luL0xpbnV4LCBDRy9DSSBmb3IgTWFjICovCkBAIC0x
NTEsNiArMTUyLDcgQEAKIC8qIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGZyb20gYSBi
bGFja2xpc3QgdG8gYSB3aGl0ZWxpc3QgKi8KICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oUVQpICYmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0FJUk8gMQorI3VuZGVmIEVOQUJMRV9WSURFTwogI2VuZGlmCiAKIC8qIENQ
VSAqLwpAQCAtMjY3LDcgKzI2OSw3IEBACiAjZW5kaWYKIAogI2lmIChQTEFURk9STShNQUMpIHx8
IFBMQVRGT1JNKFdJTikpICYmICFkZWZpbmVkKEVOQUJMRV9KU0NfTVVMVElQTEVfVEhSRUFEUykK
LSNkZWZpbmUgRU5BQkxFX0pTQ19NVUxUSVBMRV9USFJFQURTIDEKKy8qICNkZWZpbmUgRU5BQkxF
X0pTQ19NVUxUSVBMRV9USFJFQURTIDEgKi8KICNlbmRpZgogCiAvKiBmb3IgVW5pY29kZSwgS0RF
IHVzZXMgUXQgKi8KQEAgLTMwMyw2ICszMDUsNyBAQAogCiAjaWYgUExBVEZPUk0oV0lOKQogI2Rl
ZmluZSBXVEZfVVNFX1dJTklORVQgMQorLyogI2RlZmluZSBXVEZfVVNFX0NVUkwgMSAqLwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShXWCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHJldmlz
aW9uIDM4ODQ4KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTksNiArMTE5LDcgQEAgdm9pZCBkZXRhY2hUaHJlYWQoVGhyZWFkSWRlbnRpZmll
cik7CiAjaWYgVVNFKFBUSFJFQURTKQogdHlwZWRlZiBwdGhyZWFkX211dGV4X3QgUGxhdGZvcm1N
dXRleDsKIHR5cGVkZWYgcHRocmVhZF9jb25kX3QgUGxhdGZvcm1Db25kaXRpb247Cit0eXBlZGVm
IHB0aHJlYWRfa2V5X3QgUGxhdGZvcm1UaHJlYWRTdG9yYWdlS2V5OwogI2VsaWYgUExBVEZPUk0o
R1RLKQogdHlwZWRlZiBHT3duUHRyPEdNdXRleD4gUGxhdGZvcm1NdXRleDsKIHR5cGVkZWYgR093
blB0cjxHQ29uZD4gUGxhdGZvcm1Db25kaXRpb247CkBAIC0xMzgsNiArMTM5LDcgQEAgc3RydWN0
IFBsYXRmb3JtQ29uZGl0aW9uIHsKICAgICBIQU5ETEUgbV9xdWV1ZTsKICAgICBIQU5ETEUgbV9t
dXRleDsKIH07Cit0eXBlZGVmIERXT1JEIFBsYXRmb3JtVGhyZWFkU3RvcmFnZUtleTsKICNlbHNl
CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtTXV0ZXg7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29u
ZGl0aW9uOwpJbmRleDogV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nv
bmZpZy5oCShyZXZpc2lvbiAzODg0OCkKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkxLDkgKzkxLDE3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKKyNpZiAw
CiAjZGVmaW5lIFdURl9QTEFURk9STV9DRyAxCiAjdW5kZWYgV1RGX1BMQVRGT1JNX0NBSVJPCiAj
ZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKKyN1bmRlZiBXVEZfVVNFX0NVUkwKKyNlbHNlCisj
dW5kZWYgV1RGX1BMQVRGT1JNX0NHCisjZGVmaW5lIFdURl9QTEFURk9STV9DQUlSTyAxCisjdW5k
ZWYgV1RGX1VTRV9DRk5FVFdPUksKKyNkZWZpbmUgV1RGX1VTRV9DVVJMIDEKKyNlbmRpZgogI3Vu
ZGVmIFdURl9VU0VfV0lOSU5FVAogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0YgMQogI2RlZmluZSBX
VEZfVVNFX1BUSFJFQURTIDAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agkocmV2aXNpb24gMzg4NDgpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDE0LDYgKzQwMTQsMjIgQEAKIAkJCQkJPEZpbGUNCiAJ
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxDb2xvclNhZmFyaS5j
cHAiDQogCQkJCQkJPg0KKwkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJCQlOYW1lPSJE
ZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJ
CQkJCT4NCisJCQkJCQkJPFRvb2wNCisJCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkJCS8+DQorCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24NCisJCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb3xXaW4zMiINCisJCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQkJCT4NCisJCQkJCQkJPFRvb2wNCisJCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkJCS8+DQorCQkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4NCiAJCQkJCTwvRmlsZT4NCiAJCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1x3aW5cRm9udENhY2hlV2luLmNwcCINCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAkocmV2aXNp
b24gMzg4NDgpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxl
cy5zaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNSArNjUsNiBAQCBta2RpciAtcCAiJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L0Rlcml2ZWRTCiBjZCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRT
b3VyY2VzIgogCiBleHBvcnQgV2ViQ29yZT0iJHtYU1JDUk9PVH0iCi1leHBvcnQgRkVBVFVSRV9E
RUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFU
QUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfWFBBVEggRU5BQkxF
X1NWRyBFTkFCTEVfU1ZHX0FOSU1BVElPTiBFTkFCTEVfU1ZHX0ZPTlRTIEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZHX1VTRSBFTkFCTEVfV09S
S0VSUyBFTkFCTEVfVklERU8iCisjZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFC
QVNFIEVOQUJMRV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NWR19BTklN
QVRJT04gRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9T
VkdfQVNfSU1BR0UgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJREVPIgor
ZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01fU1RPUkFH
RSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgRU5B
QkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NWR19GT05U
UyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NW
R19VU0UgRU5BQkxFX1dPUktFUlMiCiBtYWtlIC1mICIkV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlIiAtaiAke05VTUNQVVN9IHx8IGV4aXQgMQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHJldmlz
aW9uIDM4ODQ4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0Nv
bnRleHRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDE4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGFxdWFGb2N1c1JpbmdDb2xv
ciA9IDB4RkY3REFERDk7CisKK0NvbG9yIGZvY3VzUmluZ0NvbG9yKCkKK3sKKyAgICBzdGF0aWMg
Q29sb3IgZm9jdXNSaW5nQ29sb3I7CisKKyAgICBpZiAoIWZvY3VzUmluZ0NvbG9yLmlzVmFsaWQo
KSkKKyAgICAgICAgZm9jdXNSaW5nQ29sb3IgPSBhcXVhRm9jdXNSaW5nQ29sb3I7CisKKyAgICBy
ZXR1cm4gZm9jdXNSaW5nQ29sb3I7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRDb2xvcihj
YWlyb190KiBjciwgY29uc3QgQ29sb3ImIGNvbCkKIHsKICAgICBmbG9hdCByZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnREYXRh
YmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dERhdGFiYXNlLmNwcAkocmV2aXNpb24gMzg4NDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250RGF0YWJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw5IEBA
CiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRp
ZgogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAt
MTA5LDcgKzExMSw5IEBAIHN0YXRpYyBib29sIHBvcHVsYXRlRm9udERhdGFiYXNlRnJvbVBsaXMK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJMRShTQUZB
UklfSU5URVJGQUNFKQogICAgIHdrQWRkRm9udHNGcm9tUGxpc3RSZXByZXNlbnRhdGlvbihkYXRh
LmdldCgpKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTksMTcgKzEyMywy
MSBAQCBzdGF0aWMgYm9vbCBwb3B1bGF0ZUZvbnREYXRhYmFzZUZyb21GaWxlCiAgICAgaWYgKCFk
aXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJMRShTQUZBUklfSU5U
RVJGQUNFKQogICAgIHdrQWRkRm9udHNJbkRpcmVjdG9yeShkaXJlY3RvcnkuZ2V0KCkpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyB2b2lkIHdyaXRlRm9udERhdGFiYXNl
VG9QbGlzdCgpCiB7CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAgICAgUmV0YWluUHRy
PENGRGF0YVJlZj4gZGF0YShBZG9wdENGLCB3a0NyZWF0ZUZvbnRzUGxpc3RSZXByZXNlbnRhdGlv
bigpKTsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIHNhZmVDcmVhdGVG
aWxlKGZvbnRzUGxpc3RQYXRoKCksIGRhdGEuZ2V0KCkpOworI2VuZGlmCiB9CiAKIHZvaWQgcG9w
dWxhdGVGb250RGF0YWJhc2UoKQpJbmRleDogV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkFyY2hpdmUuY3BwCShyZXZpc2lvbiAzODg0OCkKKysr
IFdlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDEw
IEBACiAKICNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIk1lbW9yeVN0cmVh
bS5oIgorCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFy
Y2hpdmUuaD4KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDIsNiAr
NDUsNyBAQCBXZWJBcmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZSgpCiAgICAgcmV0
dXJuIGluc3RhbmNlOwogfQogCisjaWYgVVNFKENGTkVUV09SSykKIFdlYkFyY2hpdmUqIFdlYkFy
Y2hpdmU6OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFy
Y2hpdmUpCiB7CiAgICAgV2ViQXJjaGl2ZSogaW5zdGFuY2UgPSBuZXcgV2ViQXJjaGl2ZShjb3Jl
QXJjaGl2ZSk7CkBAIC01Nyw2ICs2MSwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFBhc3NS
ZWZQdHI8TGVnYWN5CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQuYWRk
KCJXZWJBcmNoaXZlIik7CiB9CisjZWxzZQorV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShpbnQgaWdu
b3JlKQorICAgIDogbV9yZWZDb3VudCgwKQoreworICAgIGdDbGFzc0NvdW50Kys7Cit9CisjZW5k
aWYKIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewpAQCAtMTE4LDcgKzEyOSw5IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6aW4KICAgICBpZiAoIWRvbU5vZGUp
CiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCisjaWYgVVNFKENGTkVUV09SSykKICAg
ICBtX2FyY2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZG9tTm9kZS0+bm9kZSgpKTsK
KyNlbmRpZgogICAgIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMTQ0LDYgKzE1Nyw3IEBAIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6c3UKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViQXJjaGl2ZTo6ZGF0YSgKICAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBJ
U3RyZWFtKiogc3RyZWFtKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gY2ZEYXRhID0gbV9hcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKICAg
ICBpZiAoIWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTE1Myw0ICsxNjcsNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6OmRhCiAgICAgKnN0cmVhbSA9
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoYnVmZmVyKTsKIAogICAgIHJldHVybiBTX09L
OworI2Vsc2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9CkluZGV4OiBXZWJLaXQv
d2luL1dlYkFyY2hpdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkFyY2hpdmUuaAko
cmV2aXNpb24gMzg4NDgpCisrKyBXZWJLaXQvd2luL1dlYkFyY2hpdmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMjEgKzI4LDI5IEBACiAKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2lmIFVTRShD
Rk5FVFdPUkspCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBMZWdhY3lXZWJBcmNoaXZl
OwogfQorI2VuZGlmCiAKIGNsYXNzIFdlYkFyY2hpdmUgOiBwdWJsaWMgSVdlYkFyY2hpdmUKIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgV2ViQXJjaGl2ZSogY3JlYXRlSW5zdGFuY2UoKTsKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIHN0YXRpYyBXZWJBcmNoaXZlKiBjcmVhdGVJbnN0YW5jZShQYXNz
UmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU+KTsKIHByb3RlY3RlZDoKICAgICBXZWJB
cmNoaXZlKFBhc3NSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOwogICAgIH5XZWJB
cmNoaXZlKCk7CisjZWxzZQorICAgIFdlYkFyY2hpdmUoaW50KTsKK3Byb3RlY3RlZDoKKyAgICB+
V2ViQXJjaGl2ZSgpOworI2VuZGlmCiAKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgpAQCAtNzgs
NyArODYsOSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNvdW50Owor
I2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU+
IG1fYXJjaGl2ZTsKKyNlbmRpZgogfTsKIAogI2VuZGlmIC8vIFdlYkFyY2hpdmVfaApJbmRleDog
V2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYkNvb2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAzODg0OCkKKysrIFdlYktpdC93aW4vV2Vi
Q29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEyIEBACiAjaW5j
bHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogCisjaWYg
VVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VXaW4uaD4KKyNlbGlmIFVTRShDVVJMKQor
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTM2LDkgKzQwLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBX
ZWJDb29raWVNYW5hZ2VyKiBXZWJDb29raWVNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiB7Cisj
aWYgVVNFKENGTkVUV09SSykKICAgICBXZWJDb29raWVNYW5hZ2VyKiBtYW5hZ2VyID0gbmV3IFdl
YkNvb2tpZU1hbmFnZXI7CiAgICAgbWFuYWdlci0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIG1hbmFn
ZXI7ICAgIAorI2Vsc2UKKyAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFdlYkNvb2tpZU1hbmFn
ZXI6OldlYkNvb2tpZU1hbmFnZXIoKQpAQCAtNTgsNiArNjYsNyBAQCBXZWJDb29raWVNYW5hZ2Vy
Ojp+V2ViQ29va2llTWFuYWdlcigpCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29v
a2llTWFuYWdlcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3Qp
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICAqcHB2T2JqZWN0ID0gMDsKICAgICBpZiAoSXNF
cXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYkNvb2tpZU1hbmFnZXIqPih0aGlzKTsKQEAgLTY4LDYgKzc3LDEwIEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWcKIAogICAgIEFkZFJlZigpOwogICAg
IHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9G
QUlMOworI2VuZGlmCiB9CiAKIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFn
ZXI6OkFkZFJlZigpCkBAIC04OSwxNiArMTAyLDI2IEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBF
IFdlYkNvb2tpZU1hbmFnZXIKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFu
YWdlcjo6Y29va2llU3RvcmFnZSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBDRkhUVFBDb29r
aWVTdG9yYWdlUmVmKiBzdG9yYWdlKQogewotICAgIGlmICghc3RvcmFnZSkKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQorICAgaWYgKCFzdG9yYWdlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAg
ICAgKnN0b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpOwogICAgIHJldHVybiBTX09LOwor
I2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2ll
U3RvcmFnZSggCiAgICAgLyogW2luXSAqLyBDRkhUVFBDb29raWVTdG9yYWdlUmVmIHN0b3JhZ2Up
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBzZXRDdXJyZW50Q29va2llU3RvcmFnZShzdG9y
YWdlKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAg
cmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAJKHJldmlzaW9uIDM4
ODQ4KQorKysgV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDEyICszOCwxNiBAQAogI2luY2x1ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJX
ZWJVUkxSZXNwb25zZS5oIgogCisjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+CisKICNpbmNsdWRl
IDxpby5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAK
ICNwcmFnbWEgd2FybmluZyhwdXNoLCAwKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNGLmg+CisjZW5kaWYKICNpbmNsdWRlIDxXZWJDb3JlL0JT
dHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC01NSw2ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCisjaWYgVVNFKENGTkVUV09SSykKIC8vIENGVVJMRG93bmxvYWQgQ2Fs
bGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIHN0YXRpYyB2b2lkIGRpZFN0YXJ0Q2FsbGJhY2soQ0ZVUkxEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiBzdGF0aWMgQ0ZVUkxSZXF1
ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWQs
IENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIHJlZGlyZWN0aW9uUmVz
cG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtNzQsNiArNzksNyBAQCBzdGF0aWMg
VUludDMyIEJ1bmRsZU1hZ2ljTnVtYmVyID0gMHhERUNBCiAKIHN0YXRpYyBDRkRhdGFSZWYgZXh0
cmFjdFJlc3VtZURhdGFGcm9tQnVuZGxlKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7CiBzdGF0
aWMgSFJFU1VMVCBhcHBlbmRSZXN1bWVEYXRhVG9CdW5kbGUoQ0ZEYXRhUmVmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7CisjZW5kaWYKIAogLy8gV2ViRG93bmxvYWQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCkBAIC04Niw2ICs5Miw3IEBAIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiAKIHZv
aWQgV2ViRG93bmxvYWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgSVdl
YkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
bV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiA9
IGhhbmRsZS0+Y29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbikgewpAQCAtMTEzLDEw
ICsxMjAsMTIgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhhbmRsZSogaAogICAg
IC8vIEVpdGhlciB3YXksIHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUgY29ubmVjdGlvbiB0byBiYWxh
bmNlIG91dCByZWYgY291bnRzCiAgICAgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25s
b2FkKCk7CiAgICAgQ0ZSZWxlYXNlKGNvbm5lY3Rpb24pOworI2VuZGlmCiB9CiAKIHZvaWQgV2Vi
RG93bmxvYWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVs
ZWdhdGUpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGUg
PyBkZWxlZ2F0ZSA6IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpOwog
ICAgIExPR19FUlJPUigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsKIApAQCAt
MTMzLDYgKzE0Miw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCAK
ICAgICBDRlVSTERvd25sb2FkU2NoZWR1bGVEb3dubG9hZFdpdGhSdW5Mb29wKG1fZG93bmxvYWQu
Z2V0KCksIFJlc291cmNlSGFuZGxlOjpsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7CiAKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIEluaXRpYWxpemVkIGRv
d25sb2FkIG9mIHVybCAlcyBpbiBXZWJEb3dubG9hZCAlcCIsIHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCB0aGlzKTsKKyNlbmRpZgogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkK
QEAgLTIwNiw2ICsyMTYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2Fk
OjppCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIAogICAgICAg
ICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gd2ViUmVxdWVzdDsK
ICAgICBpZiAoIXJlcXVlc3QgfHwgRkFJTEVEKHJlcXVlc3QtPlF1ZXJ5SW50ZXJmYWNlKCZ3ZWJS
ZXF1ZXN0KSkpIHsKICAgICAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0
aFJlcXVlc3QgZmFpbGVkIC0gbm90IGEgV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsgICAgCkBAIC0y
MzcsMTIgKzI0OCwxNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpp
CiAKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIGluaXRXaXRoUmVxdWVzdCBjb21w
bGV0ZSwgc3RhcnRlZCBkb3dubG9hZCBvZiB1cmwgJXMiLCB3ZWJSZXF1ZXN0LT5yZXNvdXJjZVJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gU19PSzsK
KyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVX
aXRoQnVuZGxlKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgYnVuZGxlUGF0aCwgCiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiQXR0ZW1wdGluZyByZXN1bWUgb2YgZG93bmxv
YWQgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRo
KSkuYXNjaWkoKS5kYXRhKCkpOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdW1lRGF0
YShBZG9wdENGLCBleHRyYWN0UmVzdW1lRGF0YUZyb21CdW5kbGUoU3RyaW5nKGJ1bmRsZVBhdGgs
IFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKQEAgLTI4Myw2ICsyOTksMTAgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAi
V2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHJlc3VtZWQgZG93bmxvYWQg
b2YgYnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRo
KSkuYXNjaWkoKS5kYXRhKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxl
bWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNhblJlc3VtZURvd25sb2FkRGVjb2RlZFdpdGhFbmNv
ZGluZ01JTUVUeXBlKApAQCAtMjk1LDYgKzMxNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRG93bmxvYWQ6OmMKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9h
ZDo6c3RhcnQoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2Vi
RG93bmxvYWQgLSBTdGFydGluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX2Rv
d25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMzA1LDEwICszMjYsMTUgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cwogICAgIGRpZFN0YXJ0KCk7CiAK
ICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJu
IEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25s
b2FkOjpjYW5jZWwoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAi
V2ViRG93bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBpZiAo
IW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0zMTYsMTAgKzM0MiwxNSBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgQ0ZVUkxEb3du
bG9hZENhbmNlbChtX2Rvd25sb2FkLmdldCgpKTsKICAgICBtX2Rvd25sb2FkID0gMDsKICAgICBy
ZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJ
TDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpj
YW5jZWxGb3JSZXN1bWUoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2Fk
LCAiV2ViRG93bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCksIHdyaXRpbmcgcmVzdW1l
IGluZm9ybWF0aW9uIHRvIGZpbGUgaWYgcG9zc2libGUiLCB0aGlzKTsKICAgICBBU1NFUlQobV9k
b3dubG9hZCk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQpAQCAtMzQ2LDIxICszNzcsMzEgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YwogZXhpdDoKICAgICBtX2Rvd25s
b2FkID0gMDsKICAgICByZXR1cm4gaHI7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
IHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZDo6ZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgKICAgICAgICAgLyogW291dCwgcmV0
dmFsXSAqLyBCT09MKiByZXN1bHQpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAoIW1f
ZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgKnJlc3VsdCA9IENGVVJMRG93
bmxvYWREZWxldGVzVXBvbkZhaWx1cmUobV9kb3dubG9hZC5nZXQoKSk7CiAgICAgcmV0dXJuIFNf
T0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5k
aWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YnVuZGxlUGF0
aEZvclRhcmdldFBhdGgoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0YXJnZXRQYXRoLCAKICAg
ICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBCU1RSKiBidW5kbGVQYXRoKQogeworI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgaWYgKCF0YXJnZXRQYXRoKQogICAgICAgICByZXR1cm4gRV9JTlZBTElE
QVJHOwogCkBAIC0zNzYsNiArNDE3LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OmIKICAgICBpZiAoISpidW5kbGVQYXRoKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1
cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93
bmxvYWQ6OnJlcXVlc3QoCkBAIC0zOTIsMTYgKzQzNywyMiBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRvd25sb2FkOjpyCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25s
b2FkOjpzZXREZWxldGVzRmlsZVVwb25GYWlsdXJlKAogICAgICAgICAvKiBbaW5dICovIEJPT0wg
ZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICgh
bV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBDRlVSTERvd25sb2FkU2V0
RGVsZXRlc1Vwb25GYWlsdXJlKG1fZG93bmxvYWQuZ2V0KCksICEhZGVsZXRlc0ZpbGVVcG9uRmFp
bHVyZSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
IHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZDo6c2V0RGVzdGluYXRpb24oCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwYXRo
LCAKICAgICAgICAgLyogW2luXSAqLyBCT09MIGFsbG93T3ZlcndyaXRlKQogeworI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
CkBAIC00MTUsNiArNDY2LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OnMKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFNldCBkZXN0aW5hdGlvbiB0
byAlcyIsIG1fYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsK
KyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgog
fQogCiAvLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA
QCAtNDIyLDYgKzQ3Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6
OnMKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSopCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAobV9kb3dubG9hZCkg
ewogICAgICAgICBDRlVSTERvd25sb2FkQ2FuY2VsKG1fZG93bmxvYWQuZ2V0KCkpOwogICAgICAg
ICBtX2Rvd25sb2FkID0gMDsKQEAgLTQzMywxMSArNDg5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRG93bmxvYWQ6OmMKICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9y
KHRoaXMsIHdlYkVycm9yLmdldCgpKTsKIAogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5v
dEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1
ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4g
RV9OT0lOVEVSRkFDRTsKQEAgLTQ0NSwxMiArNTA2LDE3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRG93bmxvYWQ6OmMKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxE
b3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgMCwgd2ViQ2hhbGxlbmdlLT5h
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICBy
ZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJ
TDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjp1
c2VDcmVkZW50aWFsKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVk
ZW50aWFsLCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwog
ICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKQEAg
LTQ2NCw4ICs1MzAsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6
dQogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlh
bChtX2Rvd25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIHdlYkNoYWxsZW5nZS0+YXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgcmV0
dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7
CisjZW5kaWYKIH0KIAorI2lmIFVTRShDRk5FVFdPUkspCiAvLyBDRlVSTERvd25sb2FkIENhbGxi
YWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiB2b2lkIFdlYkRvd25sb2FkOjpkaWRTdGFydCgpCiB7CkBAIC03OTgs
MyArODY5LDQgQEAgZXhpdDoKICAgICBmY2xvc2UoYnVuZGxlKTsKICAgICByZXR1cm4gaHI7CiB9
CisjZW5kaWYKSW5kZXg6IFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL1dlYkRvd25sb2FkLmgJKHJldmlzaW9uIDM4ODQ4KQorKysgV2ViS2l0L3dpbi9X
ZWJEb3dubG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgcHVibGljOgog
ICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKICAgICAg
ICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSk7
CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tzCiAg
ICAgdm9pZCBkaWRTdGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3Qo
Q0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAgLTExNiwxMyArMTE3LDE2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKENGVVJMUmVmKTsKICAgICB2
b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChDRkVycm9yUmVmKTsKKyNlbmRpZgog
CiBwcm90ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudDsKIAogICAgIFdlYkNvcmU6OlN0cmlu
ZyBtX2Rlc3RpbmF0aW9uOwogICAgIFdlYkNvcmU6OlN0cmluZyBtX2J1bmRsZVBhdGg7CisjaWYg
VVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9h
ZDsKKyNlbmRpZgogICAgIENPTVB0cjxJV2ViTXV0YWJsZVVSTFJlcXVlc3Q+IG1fcmVxdWVzdDsK
ICAgICBDT01QdHI8SVdlYkRvd25sb2FkRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAKSW5kZXg6IFdl
YktpdC93aW4vV2ViRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRXJyb3Iu
Y3BwCShyZXZpc2lvbiAzODg0OCkKKysrIFdlYktpdC93aW4vV2ViRXJyb3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAj
cHJhZ21hIHdhcm5pbmcocG9wKQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBFTkFCTEUoU0FG
QVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIApJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDM4ODQ4KQor
KysgV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MTMsNiArMTgx
Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb28KICAgICBoZWFk
ZXJBbmRGb290ZXJIZWlnaHRzKCZoZWFkZXJIZWlnaHQsICZmb290ZXJIZWlnaHQpOwogICAgIEdy
YXBoaWNzQ29udGV4dCBzcG9vbEN0eChwY3R4KTsKIAorI2lmIFBMQVRGT1JNKENHKQogICAgIGZv
ciAoVUlOVCBpaSA9IHN0YXJ0UGFnZTsgaWkgPCBlbmRQYWdlOyBpaSsrKSB7CiAgICAgICAgIElu
dFJlY3QgcGFnZVJlY3QgPSBtX3BhZ2VSZWN0c1tpaV07CiAKQEAgLTE4NTYsNiArMTg1Nyw3IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb28KICAgICAgICAgQ0dDb250
ZXh0RW5kUGFnZShwY3R4KTsKICAgICAgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwY3R4KTsK
ICAgICB9CisjZW5kaWYKICAKICAgICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFdlYktpdC93aW4v
V2ViS2l0R3JhcGhpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0R3JhcGhp
Y3MuY3BwCShyZXZpc2lvbiAzODg0OCkKKysrIFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw5IEBACiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNz
L0NvcmVHcmFwaGljcy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorI2lmIEVOQUJMRShTQUZB
UklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAt
OTksOCArMTAxLDEwIEBAIHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJlbmRlckluZm8qIGluZm8K
IAogICAgIGludCBvbGRGb250U21vb3RoaW5nTGV2ZWwgPSAtMTsKICAgICBpZiAoaW5mby0+b3Zl
cnJpZGVTbW9vdGhpbmdMZXZlbCA+PSAwKSB7CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0Up
CiAgICAgICAgIG9sZEZvbnRTbW9vdGhpbmdMZXZlbCA9IHdrR2V0Rm9udFNtb290aGluZ0xldmVs
KCk7CiAgICAgICAgIHdrU2V0Rm9udFNtb290aGluZ0xldmVsKGluZm8tPm92ZXJyaWRlU21vb3Ro
aW5nTGV2ZWwpOworI2VuZGlmCiAgICAgfQogCiAgICAgewpAQCAtMTEzLDE1ICsxMTcsMjEgQEAg
dm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5mbwogCiAgICAgICAgIC8vIFNl
dCBzaGFkb3cgc2V0dGluZwogICAgICAgICBpZiAoaW5mby0+c3RydWN0U2l6ZSA9PSBzaXplb2Yo
V2ViVGV4dFJlbmRlckluZm8pICYmCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgICAgICAoaW5m
by0+c2hhZG93T2Zmc2V0LmN4IHx8IGluZm8tPnNoYWRvd09mZnNldC5jeSB8fCBpbmZvLT5zaGFk
b3dCbHVyIHx8IGluZm8tPnNoYWRvd0NvbG9yKSkKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAg
ICAgICAgICAgKGluZm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kg
fHwgaW5mby0+c2hhZG93Qmx1cikpCisjZW5kaWYKICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hh
ZG93KGluZm8tPnNoYWRvd09mZnNldCwgaW5mby0+c2hhZG93Qmx1ciwgaW5mby0+c2hhZG93Q29s
b3IpOwogCiAgICAgICAgIFdlYkNvcmVEcmF3VGV4dEF0UG9pbnQoY29udGV4dCwgZHJhd1N0cmlu
ZywgaW5mby0+cHQsIG1ha2VGb250KCooaW5mby0+ZGVzY3JpcHRpb24pKSwgaW5mby0+Y29sb3Is
IGluZm8tPnVuZGVybGluZWRJbmRleCk7CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAg
IH0KIAorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgIGlmIChpbmZvLT5vdmVycmlk
ZVNtb290aGluZ0xldmVsID49IDApCiAgICAgICAgIHdrU2V0Rm9udFNtb290aGluZ0xldmVsKG9s
ZEZvbnRTbW9vdGhpbmdMZXZlbCk7CisjZW5kaWYKIH0KIAogZmxvYXQgVGV4dEZsb2F0V2lkdGgo
TFBDVFNUUiB0ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBXZWJGb250RGVzY3JpcHRpb24mIGRlc2Ny
aXB0aW9uKQpJbmRleDogV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuaAkocmV2aXNpb24gMzg4NDgpCisrKyBXZWJLaXQv
d2luL1dlYktpdEdyYXBoaWNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEzIEBACiAK
IGV4dGVybiAiQyIgewogCisjaWYgUExBVEZPUk0oQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0NvbG9y
KiBDR0NvbG9yUmVmOwogdHlwZWRlZiBzdHJ1Y3QgQ0dDb250ZXh0KiBDR0NvbnRleHRSZWY7Cisj
ZWxpZiBQTEFURk9STShDQUlSTykKK3R5cGVkZWYgdW5zaWduZWQgQ29sb3JSZWY7ICAgICAgICAv
LyBSR0JBIHF1YWRydXBsZXQKK3R5cGVkZWYgc3RydWN0IF9jYWlybyogQ2Fpcm9Db250ZXh0UmVm
OworI2VuZGlmCiAKIHR5cGVkZWYgd2NoYXJfdCBXQ0hBUjsKIHR5cGVkZWYgX19udWxsdGVybWlu
YXRlZCBjb25zdCBXQ0hBUiogTFBDV1NUUjsKQEAgLTQ5LDE4ICs1NCwzMCBAQCBzdHJ1Y3QgV2Vi
Rm9udERlc2NyaXB0aW9uIHsKIHN0cnVjdCBXZWJUZXh0UmVuZGVySW5mbwogewogICAgIERXT1JE
IHN0cnVjdFNpemU7CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4
dDsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENhaXJvQ29udGV4dFJlZiBjZ0NvbnRleHQ7
CisjZW5kaWYKICAgICBMUENUU1RSIHRleHQ7CiAgICAgaW50IGxlbmd0aDsKICAgICBQT0lOVCBw
dDsKICAgICBjb25zdCBXZWJGb250RGVzY3JpcHRpb24qIGRlc2NyaXB0aW9uOworI2lmIFBMQVRG
T1JNKENHKQogICAgIENHQ29sb3JSZWYgY29sb3I7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAg
ICBDb2xvclJlZiBjb2xvcjsKKyNlbmRpZgogICAgIGludCB1bmRlcmxpbmVkSW5kZXg7CiAgICAg
Ym9vbCBkcmF3QXNQYXNzd29yZDsKICAgICBpbnQgb3ZlcnJpZGVTbW9vdGhpbmdMZXZlbDsgLy8g
cGFzcyBpbiAtMSBpZiBjYWxsZXIgZG9lcyBub3Qgd2FudCB0byBvdmVycmlkZSBzbW9vdGhpbmcg
bGV2ZWwKICAgICBTSVpFIHNoYWRvd09mZnNldDsKICAgICBpbnQgc2hhZG93Qmx1cjsKKyNpZiBQ
TEFURk9STShDRykKICAgICBDR0NvbG9yUmVmIHNoYWRvd0NvbG9yOworI2VsaWYgUExBVEZPUk0o
Q0FJUk8pCisgICAgQ29sb3JSZWYgc2hhZG93Q29sb3I7CisjZW5kaWYKIH07CiAKIHZvaWQgV2Vi
RHJhd1RleHQoV2ViVGV4dFJlbmRlckluZm8qKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0UHJl
Zml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRQcmVmaXguaAkocmV2aXNpb24g
Mzg4NDgpCisrKyBXZWJLaXQvd2luL1dlYktpdFByZWZpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxMSArMjcsMTEgQEAKICAqLwogCiAjaWZuZGVmIF9XSU4zMl9XSU5OVAotI2RlZmluZSBfV0lO
MzJfV0lOTlQgMHgwNTAwCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDA1MDEKICNlbmRpZgogCiAj
aWZuZGVmIFdJTlZFUgotI2RlZmluZSBXSU5WRVIgMHgwNTAwCisjZGVmaW5lIFdJTlZFUiAweDA1
MDEKICNlbmRpZgogCiAvLyBJZiB3ZSBkb24ndCBkZWZpbmUgdGhlc2UsIHRoZXkgZ2V0IGRlZmlu
ZWQgaW4gd2luZGVmLmguIApJbmRleDogV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJl
dmlzaW9uIDM4ODQ4KQorKysgV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
SGFuZGxlLmg+CiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gSVdlYlVSTFJlcXVlc3QgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMzY3LDkgKzM2OSwxMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11
dGFibGVVUkxSCiB7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7
CisjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJl
Zj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHko
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdCgpKSk7CiAgICAgKnJl
c3VsdCA9IGNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRhYmxlUmVxdWVzdC5nZXQo
KSkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOworI2Vu
ZGlmCiB9CiAKIC8vIElXZWJNdXRhYmxlVVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAko
cmV2aXNpb24gMzg4NDgpCisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYsNyArNDYsOSBAQAogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUg
PHNoZm9sZGVyLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVS
RkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgogCkBAIC05NjYsNyArOTY4LDkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJQcmVmZXJlbmNlcwogICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRGb250
U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBzbW9vdGhpbmdUeXBlKTsKICAgICBpZiAoc21v
b3RoaW5nVHlwZSA9PSBGb250U21vb3RoaW5nVHlwZVdpbmRvd3MpCiAgICAgICAgIHNtb290aGlu
Z1R5cGUgPSBGb250U21vb3RoaW5nVHlwZVN0YW5kYXJkOworI2lmIEVOQUJMRShTQUZBUklfSU5U
RVJGQUNFKQogICAgIHdrU2V0Rm9udFNtb290aGluZ0xldmVsKChpbnQpc21vb3RoaW5nVHlwZSk7
CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVGV4dFJlbmRlcmVyLmNw
cAkocmV2aXNpb24gMzg4NDgpCisrKyBXZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjaWYgRU5BQkxFKFNBRkFSSV9J
TlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBXZWJUZXh0
UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJlcjo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTAsNiArOTIs
OCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlRleHRSZW5kZXJlCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyhBZG9wdENG
LCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VW5pQ2hhcio+KGZvbnRGaWxlUGF0aCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHdjc2xlbihmb250
RmlsZVBhdGgpKSkpOworI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgIHdrQWRkRm9u
dHNBdFBhdGgoc3RyaW5nLmdldCgpKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQpJbmRl
eDogV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHJldmlz
aW9uIDM4ODQ4KQorKysgV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw5ICsxNDksMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJVUkxBdXRoZW50aQogCiAgICAgLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5nZSBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0byB1c2UgIlJlc291cmNlSGFuZGxlIiBhcyB0aGUgYWJz
dHJhY3QgIlNlbmRlciIgb3IgIlNvdXJjZSBvZiB0aGlzIEF1dGggQ2hhbGxlbmdlIiwgdGhlbiB3
ZSdsbAogICAgIC8vIGNvbnN0cnVjdCB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ugd2l0aCB0
aGF0IGFzIG9idGFpbmVkIGZyb20gdGhlIHdlYlNlbmRlcgotCisjaWYgVVNFKENGTkVUV09SSykK
ICAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
d2ViU3BhY2UtPnByb3RlY3Rpb25TcGFjZSgpLCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3Vu
dCwgd2ViUmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKSwgd2ViRXJyb3ItPnJlc291cmNlRXJy
b3IoKSk7CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDogV2ViS2l0L3dpbi9X
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAJKHJldmlzaW9u
IDM4ODQ4KQorKysgV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5oIgogCiAjaW5jbHVkZSAiQ09NUHRyLmgiCisj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRl
ICJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIldlYlVSTENyZWRl
bnRpYWwuaCIKQEAgLTEwMCwyOSArMTAxLDQwIEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdl
YlVSTEF1dGhlbnRpY2EKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAogICAg
ICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdl
KQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJD
aGFsbGVuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBtX2hhbmRsZS0+cmVjZWl2
ZWRDYW5jZWxsYXRpb24od2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsK
ICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxG
b3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1
ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0
Q3JlZGVudGlhbCh3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwogICAg
IHJldHVybiBTX09LOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBF
X0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyogW2lu
XSAqLyBJV2ViVVJMQ3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8g
SVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENG
TkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNo
YWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEzMyw2ICsxNDUsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJVUkxBdXRoZW50aQogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkQ3JlZGVudGlh
bCh3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCksIHdlYkNyZWRlbnRpYWwt
PmNyZWRlbnRpYWwoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiAvLyBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlVSTFJl
c3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAko
cmV2aXNpb24gMzg4NDgpCisrKyBXZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsMTAgQEAKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMu
aCIKICNpbmNsdWRlICJXZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKIAorI2lmIEVOQUJMRShTQUZB
UklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+CiAjcHJh
Z21hIHdhcm5pbmcoIHB1c2gsIDAgKQogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiAzODg0OCkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMywxMCArMTAzLDE4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KKworI2lmIFVTRShDRk5FVFdP
UkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPENvcmVGb3Vu
ZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkK
ICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
IAorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPGRpbW0uaD4K
ICNpbmNsdWRlIDxvbGVhY2MuaD4KQEAgLTM2Nyw2ICszNzUsOCBAQCB2b2lkIFdlYlZpZXc6OnNl
dENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAmJiBj
YWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxF
KFNBRkFSSV9JTlRFUkZBQ0UpCisKICNpZmRlZiBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hl
UHJlc2VudAogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBjZnVybENhY2hlKEFkb3B0Q0Ys
IENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CiAjZWxzZQpAQCAtNTUwLDYgKzU2MCw3
IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICBzX2RpZFNl
dENhY2hlTW9kZWwgPSB0cnVlOwogICAgIHNfY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7CiAgICAg
cmV0dXJuOworI2VuZGlmCiB9CiAKIFdlYkNhY2hlTW9kZWwgV2ViVmlldzo6Y2FjaGVNb2RlbCgp
CkBAIC00MjE2LDkgKzQyMjcsMTEgQEAgSFJFU1VMVCB1cGRhdGVTaGFyZWRTZXR0aW5nc0Zyb21Q
cmVmZXJlbgogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CiAKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIC8vIFNldCBjb29raWUgc3RvcmFnZSBhY2NlcHQgcG9saWN5CiAg
ICAgaWYgKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSA9IGN1cnJlbnRDb29r
aWVTdG9yYWdlKCkpCiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZSwgYWNjZXB0UG9saWN5KTsKKyNlbmRpZgogCiAgICAgcmV0dXJu
IFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5jcHAJKHJldmlzaW9uIDM4ODQ4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJE
cmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIERyYWdJbWFn
ZVJlZiBXZWJEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW0KICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHRSZWY7CiAgICAg
aW1hZ2UgPSBhbGxvY0ltYWdlKHdvcmtpbmdEQywgaW1hZ2VTaXplLCAmY29udGV4dFJlZik7CiAg
ICAgaWYgKCFpbWFnZSkgewpAQCAtMjU4LDYgKzI1OSw3IEBAIERyYWdJbWFnZVJlZiBXZWJEcmFn
Q2xpZW50OjpjcmVhdGVEcmFnSW0KICAgICBXZWJDb3JlRHJhd0RvdWJsZWRUZXh0QXRQb2ludChj
b250ZXh0LCBsYWJlbCwgdGV4dFBvcywgbGFiZWxGb250LCB0b3BDb2xvciwgYm90dG9tQ29sb3Ip
OwogCiAgICAgQ0dDb250ZXh0UmVsZWFzZShjb250ZXh0UmVmKTsKKyNlbmRpZgogICAgIERlbGV0
ZURDKHdvcmtpbmdEQyk7CiAgICAgUmVsZWFzZURDKDAsIGRjKTsKICAgICByZXR1cm4gaW1hZ2U7
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gMzg4NDgpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIkNPTVByb3BlcnR5QmFnLmgiCiAjaW5jbHVkZSAiRW1iZWRkZWRXaWRnZXQu
aCIKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIldlYkNhY2hlZFBhZ2VQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRl
ICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudExvYWRlci5oIgpAQCAt
MTA1LDYgKzEwNiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFzc2lnbklkZW50aWYK
IAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQogeworI2lm
IFVTRShDRk5FVFdPUkspCiAgICAgQVNTRVJUKGNoYWxsZW5nZS5zb3VyY2VIYW5kbGUoKSk7CiAK
ICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwpAQCAtMTE4LDYg
KzEyMCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAv
LyBJZiB0aGUgUmVzb3VyY2VMb2FkRGVsZWdhdGUgZG9lc24ndCBleGlzdCBvciBmYWlscyB0byBo
YW5kbGUgdGhlIGNhbGwsIHdlIHRlbGwgdGhlIFJlc291cmNlSGFuZGxlCiAgICAgLy8gdG8gY29u
dGludWUgd2l0aG91dCBjcmVkZW50aWFsIC0gdGhpcyBpcyB0aGUgYmVzdCBhcHByb3hpbWF0aW9u
IG9mIE1hYyBiZWhhdmlvcgogICAgIGNoYWxsZW5nZS5zb3VyY2VIYW5kbGUoKS0+cmVjZWl2ZWRS
ZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNoYWxsZW5nZSk7CisjZWxzZQorICAg
bm90SW1wbGVtZW50ZWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmIGNoYWxsZW5nZSkKQEAgLTQ3MiwxMCArNDc3LDEyIEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNhdmVQbGF0Zm9ybUQKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuOwogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAgICAgQVNTRVJUKGNvcmVG
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgPT0gY2FjaGVkUGFnZS0+ZG9jdW1lbnRM
b2FkZXIoKSk7CiAKICAgICBXZWJDYWNoZWRQYWdlUGxhdGZvcm1EYXRhKiB3ZWJQbGF0Zm9ybURh
dGEgPSBuZXcgV2ViQ2FjaGVkUGFnZVBsYXRmb3JtRGF0YShzdGF0aWNfY2FzdDxJV2ViRGF0YVNv
dXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKSkpKTsKICAgICBjYWNoZWRQYWdlLT5zZXRDYWNoZWRQYWdlUGxhdGZvcm1EYXRhKHdlYlBs
YXRmb3JtRGF0YSk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6dHJh
bnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCkluZGV4OiBXZWJLaXQvd2luL1dlYktpdC52
Y3Byb2ovV2ViS2l0LnJjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViS2l0LnZjcHJvai9X
ZWJLaXQucmMJKHJldmlzaW9uIDM4ODQ4KQorKysgV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dl
YktpdC5yYwkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDkgQEAKIC8vIE1pY3Jvc29mdCBWaXN1
YWwgQysrIGdlbmVyYXRlZCByZXNvdXJjZSBzY3JpcHQuCiAvLwogI2luY2x1ZGUgInJlc291cmNl
LmgiCisjaWZuZGVmIEFQU1RVRElPX0lOVk9LRUQKICNpbmNsdWRlICJhdXRvdmVyc2lvbi5oIgor
I2VuZGlmCiAjaW5jbHVkZSAid2lucmVzLmgiCiAKICNpZmRlZiBfV0lOMzIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25963</attachid>
            <date>2008-12-11 13:36:27 -0800</date>
            <delta_ts>2008-12-14 21:59:10 -0800</delta_ts>
            <desc>Patch against ToT</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>41688</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5MjEzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDgtMTItMTEgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvVGhy
ZWFkaW5nLmg6CisKKzIwMDgtMTItMTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisKIDIwMDgtMTItMTEg
IEhvbGdlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDM5
MjEzKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNCw2ICsxMzQsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgV1RGX1BMQVRGT1JN
X0NHIDEKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NJIDEKKyNkZWZpbmUgRU5BQkxFX1NBRkFSSV9J
TlRFUkZBQ0UgMQogI2VuZGlmCiAKIC8qIFBMQVRGT1JNKFNLSUEpIGZvciBXaW4vTGludXgsIENH
L0NJIGZvciBNYWMgKi8KQEAgLTE1MSw2ICsxNTIsNyBAQAogLyogRklYTUU6IFRoaXMgc2hvdWxk
IGJlIGNoYW5nZWQgZnJvbSBhIGJsYWNrbGlzdCB0byBhIHdoaXRlbGlzdCAqLwogI2lmICFQTEFU
Rk9STShNQUMpICYmICFQTEFURk9STShRVCkgJiYgIVBMQVRGT1JNKFdYKSAmJiAhUExBVEZPUk0o
Q0hST01JVU0pCiAjZGVmaW5lIFdURl9QTEFURk9STV9DQUlSTyAxCisjdW5kZWYgRU5BQkxFX1ZJ
REVPCiAjZW5kaWYKIAogLyogQ1BVICovCkBAIC0zMDMsNiArMzA1LDcgQEAKIAogI2lmIFBMQVRG
T1JNKFdJTikKICNkZWZpbmUgV1RGX1VTRV9XSU5JTkVUIDEKKy8qICNkZWZpbmUgV1RGX1VTRV9D
VVJMIDEgKi8KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvVGhyZWFkaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1RocmVh
ZGluZy5oCShyZXZpc2lvbiAzOTIxMykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw3IEBAIHZvaWQgZGV0YWNoVGhyZWFkKFRo
cmVhZElkZW50aWZpZXIpOwogI2lmIFVTRShQVEhSRUFEUykKIHR5cGVkZWYgcHRocmVhZF9tdXRl
eF90IFBsYXRmb3JtTXV0ZXg7CiB0eXBlZGVmIHB0aHJlYWRfY29uZF90IFBsYXRmb3JtQ29uZGl0
aW9uOwordHlwZWRlZiBwdGhyZWFkX2tleV90IFBsYXRmb3JtVGhyZWFkU3RvcmFnZUtleTsKICNl
bGlmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgR093blB0cjxHTXV0ZXg+IFBsYXRmb3JtTXV0ZXg7
CiB0eXBlZGVmIEdPd25QdHI8R0NvbmQ+IFBsYXRmb3JtQ29uZGl0aW9uOwpAQCAtMTM4LDYgKzEz
OSw3IEBAIHN0cnVjdCBQbGF0Zm9ybUNvbmRpdGlvbiB7CiAgICAgSEFORExFIG1fcXVldWU7CiAg
ICAgSEFORExFIG1fbXV0ZXg7CiB9OwordHlwZWRlZiBEV09SRCBQbGF0Zm9ybVRocmVhZFN0b3Jh
Z2VLZXk7CiAjZWxzZQogdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybU11dGV4OwogdHlwZWRlZiB2b2lk
KiBQbGF0Zm9ybUNvbmRpdGlvbjsKSW5kZXg6IFdlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jb25maWcuaAkocmV2aXNpb24gMzkyMTMpCisrKyBXZWJDb3JlL2NvbmZpZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw5ICs5MSwxNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShXSU4pCisjaWYgMAogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0cgMQogI3VuZGVmIFdURl9QTEFU
Rk9STV9DQUlSTwogI2RlZmluZSBXVEZfVVNFX0NGTkVUV09SSyAxCisjdW5kZWYgV1RGX1VTRV9D
VVJMCisjZWxzZQorI3VuZGVmIFdURl9QTEFURk9STV9DRworI2RlZmluZSBXVEZfUExBVEZPUk1f
Q0FJUk8gMQorI3VuZGVmIFdURl9VU0VfQ0ZORVRXT1JLCisjZGVmaW5lIFdURl9VU0VfQ1VSTCAx
CisjZW5kaWYKICN1bmRlZiBXVEZfVVNFX1dJTklORVQKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NG
IDEKICNkZWZpbmUgV1RGX1VTRV9QVEhSRUFEUyAwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAkocmV2aXNpb24gMzkyMTMpCisrKyBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaAkod29ya2luZyBj
b3B5KQpAQCAtNjUsNSArNjUsNiBAQCBta2RpciAtcCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTCiBjZCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzIgogCiBleHBv
cnQgV2ViQ29yZT0iJHtYU1JDUk9PVH0iCi1leHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVf
REFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5BQkxFX09G
RkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfWFBBVEggRU5BQkxFX1NWRyBFTkFCTEVfU1ZH
X0FOSU1BVElPTiBFTkFCTEVfU1ZHX0ZPTlRTIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5B
QkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZHX1VTRSBFTkFCTEVfV09SS0VSUyBFTkFCTEVfVklE
RU8iCisjZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01f
U1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NW
R19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5B
QkxFX1NWR19VU0UgRU5BQkxFX1dNTCBFTkFCTEVfV09SS0VSUyBFTkFCTEVfVklERU8iCitleHBv
cnQgRkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVO
QUJMRV9JQ09OREFUQUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVf
WFBBVEggRU5BQkxFX1NWRyBFTkFCTEVfU1ZHX0FOSU1BVElPTiBFTkFCTEVfU1ZHX0ZPTlRTIEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZHX1VT
RSBFTkFCTEVfV09SS0VSUyIKIG1ha2UgLWYgIiRXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Ui
IC1qICR7TlVNQ1BVU30gfHwgZXhpdCAxCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0ltYWdlU291cmNlQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VTb3VyY2VDYWlyby5jcHAJKHJldmlzaW9uIDM5MjEzKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZVNvdXJjZUNhaXJvLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAyLDggKzEwMiwxMCBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291
cmNlKCkKIAogdm9pZCBJbWFnZVNvdXJjZTo6Y2xlYXIoKQogewotICAgIGRlbGV0ZSBtX2RlY29k
ZXI7Ci0gICAgbV9kZWNvZGVyID0gMDsKKyAgICBpZiAobV9kZWNvZGVyKSB7CisgICAgICAgIGRl
bGV0ZSBtX2RlY29kZXI7CisgICAgICAgIG1fZGVjb2RlciA9IDA7CisgICAgfQogfQogCiBib29s
IEltYWdlU291cmNlOjppbml0aWFsaXplZCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L3dpbi9EcmFnSW1hZ2VDYWlyb1dpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRHJhZ0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZpc2lvbiAzOTIxMykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vd2luL0RyYWdJbWFnZUNhaXJvV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
MjUgKzI5LDE2NSBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgogI2luY2x1ZGUgIlJldGFpblB0ci5oIgogCisjaW5jbHVkZSA8Y2Fpcm8td2luMzIuaD4K
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIgorCiAjaW5j
bHVkZSA8d2luZG93cy5oPgogCitleHRlcm4gIkMiIHsKK3R5cGVkZWYgc3RydWN0IF9jYWlybyog
Q2Fpcm9Db250ZXh0UmVmOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0hCSVRNQVAgYWxs
b2NJbWFnZShIREMgZGMsIEludFNpemUgc2l6ZSwgQ2Fpcm9Db250ZXh0UmVmKiB0YXJnZXRSZWYp
Cit7CisgICAgQklUTUFQSU5GTyBibXBJbmZvID0gezB9OworICAgIGJtcEluZm8uYm1pSGVhZGVy
LmJpU2l6ZSA9IHNpemVvZihCSVRNQVBJTkZPSEVBREVSKTsKKyAgICBibXBJbmZvLmJtaUhlYWRl
ci5iaVdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIGJtcEluZm8uYm1pSGVhZGVyLmJpSGVpZ2h0
ID0gc2l6ZS5oZWlnaHQoKTsgLy8gTXVzdCBiZSBwb3NpdGl2ZSEKKyAgICBibXBJbmZvLmJtaUhl
YWRlci5iaVBsYW5lcyA9IDE7CisgICAgYm1wSW5mby5ibWlIZWFkZXIuYmlCaXRDb3VudCA9IDMy
OworICAgIGJtcEluZm8uYm1pSGVhZGVyLmJpQ29tcHJlc3Npb24gPSBCSV9SR0I7CisgICAgYm1w
SW5mby5ibWlIZWFkZXIuYmlDbHJVc2VkID0gMDsJLy8gdW51c2VkCisgICAgYm1wSW5mby5ibWlI
ZWFkZXIuYmlDbHJJbXBvcnRhbnQgPSAwOworCisgICAgTFBWT0lEIGJpdHM7CisgICAgSEJJVE1B
UCBoYm1wID0gQ3JlYXRlRElCU2VjdGlvbihkYywgJmJtcEluZm8sIERJQl9SR0JfQ09MT1JTLCAm
Yml0cywgMCwgMCk7CisKKyAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgQ2Fpcm8gc3Vy
ZmFjZSB0aGF0IHBvaW50cyB0byBhIFdpbmRvd3MgRElCLiAgVGhlIERJQiBpbnRlcnByZXRzCisg
ICAgLy8gd2l0aCB0aGUgb3Bwb3NpdGUgbWVhbmluZyBvZiBwb3NpdGl2ZSBZIGF4aXMsIHNvIGV2
ZXJ5dGhpbmcgd2UgZHJhdyBpbnRvIHRoaXMgY2Fpcm8KKyAgICAvLyBjb250ZXh0IGlzIGdvaW5n
IHRvIGJlIHVwc2lkZSBkb3duLgorICAgIGlmICghdGFyZ2V0UmVmKQorICAgICAgICByZXR1cm4g
aGJtcDsKKworICAgIGNhaXJvX3N1cmZhY2VfdCogYml0bWFwQ29udGV4dCA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25lZCBjaGFyKiliaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibXBJbmZv
LmJtaUhlYWRlci5iaVdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBibXBJbmZvLmJtaUhlYWRlci5iaUhlaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm1wSW5mby5ibWlIZWFkZXIuYmlXaWR0aCAq
IDQpOworCisgICAgaWYgKCFiaXRtYXBDb250ZXh0KSB7CisgICAgICAgIERlbGV0ZU9iamVjdCho
Ym1wKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKnRhcmdldFJlZiA9IGNhaXJv
X2NyZWF0ZSAoYml0bWFwQ29udGV4dCk7CisgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95IChiaXRt
YXBDb250ZXh0KTsKKworICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBDYWlybyBzdXJm
YWNlIHRoYXQgcG9pbnRzIHRvIGEgV2luZG93cyBESUIuICBUaGUgRElCIGludGVycHJldHMKKyAg
ICAvLyB3aXRoIHRoZSBvcHBvc2l0ZSBtZWFuaW5nIG9mIHBvc2l0aXZlIFkgYXhpcywgc28gZXZl
cnl0aGluZyB3ZSBkcmF3IGludG8gdGhpcyBjYWlybworICAgIC8vIGNvbnRleHQgaXMgZ29pbmcg
dG8gYmUgdXBzaWRlIGRvd24uCisgICAgLy8KKyAgICAvLyBTbywgd2UgbXVzdCBpbnZlcnQgdGhl
IENUTSBmb3IgdGhlIGNvbnRleHQgc28gdGhhdCBkcmF3aW5nIGNvbW1hbmRzIHdpbGwgYmUgZmxp
cHBlZAorICAgIC8vIGJlZm9yZSB0aGV5IGdldCB3cml0dGVuIHRvIHRoZSBpbnRlcm5hbCBidWZm
ZXIuCisgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4OworICAgIGNhaXJvX21hdHJpeF9pbml0KCZt
YXRyaXgsIDEuMCwgMC4wLCAwLjAsIC0xLjAsIDAuMCwgc2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fp
cm9fc2V0X21hdHJpeCgqdGFyZ2V0UmVmLCAmbWF0cml4KTsKKworICAgIHJldHVybiBoYm1wOwor
fQorCitzdGF0aWMgY2Fpcm9fc3VyZmFjZV90KiBjcmVhdGVDYWlyb0NvbnRleHRGcm9tQml0bWFw
KEhCSVRNQVAgYml0bWFwKQoreworICAgIEJJVE1BUCBpbmZvOworICAgIEdldE9iamVjdChiaXRt
YXAsIHNpemVvZihpbmZvKSwgJmluZm8pOworICAgIEFTU0VSVChpbmZvLmJtQml0c1BpeGVsID09
IDMyKTsKKworICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBDYWlybyBzdXJmYWNlIHRo
YXQgcG9pbnRzIHRvIGEgV2luZG93cyBCSVRNQVAuICBUaGUgQklUTUFQCisgICAgLy8gaGFzIHRo
ZSBvcHBvc2l0ZSBtZWFuaW5nIG9mIHBvc2l0aXZlIFkgYXhpcywgc28gZXZlcnl0aGluZyB3ZSBk
cmF3IGludG8gdGhpcyBjYWlybworICAgIC8vIGNvbnRleHQgaXMgZ29pbmcgdG8gYmUgdXBzaWRl
IGRvd24uCisgICAgcmV0dXJuIGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1
bnNpZ25lZCBjaGFyKilpbmZvLmJtQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ0FJUk9fRk9STUFUX0FSR0IzMiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5ibVdpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtSGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLmJtV2lkdGhCeXRl
cyk7Cit9CisKIERyYWdJbWFnZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2Us
IEZsb2F0U2l6ZSBzY2FsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIEZJWE1F
OiBkdWUgdG8gdGhlIHdheSBkcmFnIGltYWdlcyBhcmUgZG9uZSBvbiB3aW5kb3dzIHdlIG5lZWQg
CisgICAgLy8gdG8gcHJlcHJvY2VzcyB0aGUgYWxwaGEgY2hhbm5lbCA8cmRhcjovL3Byb2JsZW0v
NTAxNTk0Nj4KKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEludFNp
emUgc3JjU2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2UpOworICAgIEludFNpemUgZHN0U2l6ZShz
dGF0aWNfY2FzdDxpbnQ+KHNyY1NpemUud2lkdGgoKSAqIHNjYWxlLndpZHRoKCkpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHNyY1NpemUuaGVpZ2h0KCkgKiBzY2FsZS5oZWlnaHQoKSkpOworCisgICAgSEJJ
VE1BUCBoYm1wID0gMDsKKyAgICBIREMgZGMgPSBHZXREQygwKTsKKyAgICBIREMgZHN0REMgPSBD
cmVhdGVDb21wYXRpYmxlREMoZGMpOworCisgICAgaWYgKCFkc3REQykKKyAgICAgICAgZ290byBl
eGl0OworCisgICAgQ2Fpcm9Db250ZXh0UmVmIHRhcmdldENvbnRleHQ7CisgICAgaGJtcCA9IGFs
bG9jSW1hZ2UoZHN0REMsIGRzdFNpemUsICZ0YXJnZXRDb250ZXh0KTsKKyAgICBpZiAoIWhibXAp
CisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIGNhaXJvX3N1cmZhY2VfdCogc3JjSW1hZ2UgPSBj
cmVhdGVDYWlyb0NvbnRleHRGcm9tQml0bWFwKGltYWdlKTsKKworICAgIC8vIFNjYWxlIHRoZSB0
YXJnZXQgc3VyZmFjZSB0byB0aGUgbmV3IGltYWdlIHNpemUsIGFuZCBmbGlwIGl0CisgICAgLy8g
c28gdGhhdCB3aGVuIHdlIHNldCB0aGUgc3JjSW1hZ2UgYXMgdGhlIHN1cmZhY2UgaXQgd2lsbCBk
cmF3CisgICAgLy8gcmlnaHQtc2lkZS11cC4KKyAgICBjYWlyb190cmFuc2xhdGUodGFyZ2V0Q29u
dGV4dCwgMCwgZHN0U2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2NhbGUodGFyZ2V0Q29udGV4
dCwgc2NhbGUud2lkdGgoKSwgLXNjYWxlLmhlaWdodCgpKTsKKyAgICBjYWlyb19zZXRfc291cmNl
X3N1cmZhY2UgKHRhcmdldENvbnRleHQsIHNyY0ltYWdlLCAwLjAsIDAuMCk7CisKKyAgICAvLyBO
b3cgd2UgY2FuIHBhaW50IGFuZCBnZXQgdGhlIGNvcnJlY3QgcmVzdWx0CisgICAgY2Fpcm9fcGFp
bnQodGFyZ2V0Q29udGV4dCk7CiAKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgY2Fpcm9fc3VyZmFj
ZV9kZXN0cm95IChzcmNJbWFnZSk7CisgICAgY2Fpcm9fZGVzdHJveSh0YXJnZXRDb250ZXh0KTsK
KyAgICA6OkRlbGV0ZU9iamVjdChpbWFnZSk7CisgICAgaW1hZ2UgPSAwOworCitleGl0OgorICAg
IGlmICghaGJtcCkKKyAgICAgICAgaGJtcCA9IGltYWdlOworICAgIGlmIChkc3REQykKKyAgICAg
ICAgRGVsZXRlREMoZHN0REMpOworICAgIFJlbGVhc2VEQygwLCBkYyk7CisgICAgcmV0dXJuIGhi
bXA7CiB9CiAgICAgCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdl
KiBpbWcpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBIQklUTUFQIGhibXAgPSAwOwor
ICAgIEhEQyBkYyA9IEdldERDKDApOworICAgIEhEQyB3b3JraW5nREMgPSBDcmVhdGVDb21wYXRp
YmxlREMoZGMpOworICAgIGlmICghd29ya2luZ0RDKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAg
ICBDYWlyb0NvbnRleHRSZWYgZHJhd0NvbnRleHQgPSAwOworICAgIGhibXAgPSBhbGxvY0ltYWdl
KHdvcmtpbmdEQywgaW1nLT5zaXplKCksICZkcmF3Q29udGV4dCk7CisgICAgaWYgKCFoYm1wKQor
ICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBpZiAoIWRyYXdDb250ZXh0KSB7CisgICAgICAgIDo6
RGVsZXRlT2JqZWN0KGhibXApOworICAgICAgICBoYm1wID0gMDsKKyAgICB9CisKKyAgICBjYWly
b19zZXRfc291cmNlX3JnYiAoZHJhd0NvbnRleHQsIDEuMCwgMC4wLCAxLjApOworICAgIGNhaXJv
X2ZpbGxfcHJlc2VydmUgKGRyYXdDb250ZXh0KTsKKworICAgIGNhaXJvX3N1cmZhY2VfdCogc3Jj
SW1hZ2UgPSBpbWctPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisKKyAgICAvLyBEcmF3
IHRoZSBpbWFnZS4KKyAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoZHJhd0NvbnRleHQsIHNy
Y0ltYWdlLCAwLjAsIDAuMCk7CisgICAgY2Fpcm9fcGFpbnQoZHJhd0NvbnRleHQpOworCisgICAg
Y2Fpcm9fZGVzdHJveSAoZHJhd0NvbnRleHQpOwogCi0gICAgcmV0dXJuIDA7CitleGl0OgorICAg
IGlmICh3b3JraW5nREMpCisgICAgICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7CisgICAgUmVsZWFz
ZURDKDAsIGRjKTsKKyAgICByZXR1cm4gaGJtcDsKIH0KICAgICAKIH0KSW5kZXg6IFdlYktpdC93
aW4vV2ViQXJjaGl2ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNw
cAkocmV2aXNpb24gMzkyMTMpCisrKyBXZWJLaXQvd2luL1dlYkFyY2hpdmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw3ICsyOSwxMCBAQAogCiAjaW5jbHVkZSAiRE9NQ29yZUNsYXNzZXMuaCIK
ICNpbmNsdWRlICJNZW1vcnlTdHJlYW0uaCIKKworI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVk
ZSA8V2ViQ29yZS9MZWdhY3lXZWJBcmNoaXZlLmg+CisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTQyLDYgKzQ1LDcgQEAgV2ViQXJjaGl2ZSogV2ViQXJjaGl2ZTo6Y3Jl
YXRlSW5zdGFuY2UoKQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAorI2lmIFVTRShDRk5FVFdP
UkspCiBXZWJBcmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IGNvcmVBcmNoaXZlKQogewogICAgIFdlYkFyY2hpdmUqIGluc3RhbmNl
ID0gbmV3IFdlYkFyY2hpdmUoY29yZUFyY2hpdmUpOwpAQCAtNTcsNiArNjEsMTMgQEAgV2ViQXJj
aGl2ZTo6V2ViQXJjaGl2ZShQYXNzUmVmUHRyPExlZ2FjeQogICAgIGdDbGFzc0NvdW50Kys7CiAg
ICAgZ0NsYXNzTmFtZUNvdW50LmFkZCgiV2ViQXJjaGl2ZSIpOwogfQorI2Vsc2UKK1dlYkFyY2hp
dmU6OldlYkFyY2hpdmUoaW50IGlnbm9yZSkKKyAgICA6IG1fcmVmQ291bnQoMCkKK3sKKyAgICBn
Q2xhc3NDb3VudCsrOworfQorI2VuZGlmCiAKIFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKCkKIHsK
QEAgLTExOCw3ICsxMjksOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6
OmluCiAgICAgaWYgKCFkb21Ob2RlKQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKIAor
I2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9hcmNoaXZlID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGRvbU5vZGUtPm5vZGUoKSk7CisjZW5kaWYKICAgICAKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTE0NCw2ICsxNTcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6
OnN1CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6OmRhdGEoCiAgICAgICAg
IC8qIFtvdXQsIHJldHZhbF0gKi8gSVN0cmVhbSoqIHN0cmVhbSkKIHsKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZS0+cmF3RGF0
YVJlcHJlc2VudGF0aW9uKCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CkBAIC0xNTMsNCArMTY3LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJBcmNo
aXZlOjpkYQogICAgICpzdHJlYW0gPSBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKGJ1ZmZl
cik7CiAKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgcmV0dXJuIEVfTk9USU1QTDsKKyNl
bmRpZgogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9XZWJBcmNoaXZlLmgJKHJldmlzaW9uIDM5MjEzKQorKysgV2ViS2l0L3dpbi9XZWJB
cmNoaXZlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDIxICsyOCwyOSBAQAogCiAjaW5jbHVkZSAi
V2ViS2l0LmgiCiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
Y2xhc3MgTGVnYWN5V2ViQXJjaGl2ZTsKIH0KKyNlbmRpZgogCiBjbGFzcyBXZWJBcmNoaXZlIDog
cHVibGljIElXZWJBcmNoaXZlCiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFdlYkFyY2hpdmUqIGNy
ZWF0ZUluc3RhbmNlKCk7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBzdGF0aWMgV2ViQXJjaGl2
ZSogY3JlYXRlSW5zdGFuY2UoUGFzc1JlZlB0cjxXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlPik7
CiBwcm90ZWN0ZWQ6CiAgICAgV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdl
YkFyY2hpdmU+KTsKICAgICB+V2ViQXJjaGl2ZSgpOworI2Vsc2UKKyAgICBXZWJBcmNoaXZlKGlu
dCk7Citwcm90ZWN0ZWQ6CisgICAgfldlYkFyY2hpdmUoKTsKKyNlbmRpZgogCiBwdWJsaWM6CiAg
ICAgLy8gSVVua25vd24KQEAgLTc4LDcgKzg2LDkgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAg
ICAgVUxPTkcgbV9yZWZDb3VudDsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJlZlB0cjxXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlPiBtX2FyY2hpdmU7CisjZW5kaWYKIH07CiAKICNlbmRpZiAv
LyBXZWJBcmNoaXZlX2gKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29va2llTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMzky
MTMpCisrKyBXZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw4ICsyNywxMiBAQAogI2luY2x1ZGUgIldlYktpdERMTC5oIgogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXIuaCIKIAorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGSFRUUENvb2tpZXNQcml2Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlV2lu
Lmg+CisjZWxpZiBVU0UoQ1VSTCkKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0zNiw5ICs0MCwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogV2ViQ29va2llTWFuYWdlciogV2ViQ29va2llTWFuYWdlcjo6
Y3JlYXRlSW5zdGFuY2UoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgV2ViQ29va2llTWFu
YWdlciogbWFuYWdlciA9IG5ldyBXZWJDb29raWVNYW5hZ2VyOwogICAgIG1hbmFnZXItPkFkZFJl
ZigpOwogICAgIHJldHVybiBtYW5hZ2VyOyAgICAKKyNlbHNlCisgICByZXR1cm4gMDsKKyNlbmRp
ZgogfQogCiBXZWJDb29raWVNYW5hZ2VyOjpXZWJDb29raWVNYW5hZ2VyKCkKQEAgLTU4LDYgKzY2
LDcgQEAgV2ViQ29va2llTWFuYWdlcjo6fldlYkNvb2tpZU1hbmFnZXIoKQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXI6OlF1ZXJ5SW50ZXJmYWNlKFJFRklJRCBy
aWlkLCB2b2lkKiogcHB2T2JqZWN0KQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgKnBwdk9i
amVjdCA9IDA7CiAgICAgaWYgKElzRXF1YWxHVUlEKHJpaWQsIElJRF9JVW5rbm93bikpCiAgICAg
ICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb29raWVNYW5hZ2VyKj4odGhpcyk7CkBA
IC02OCw2ICs3NywxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFn
CiAKICAgICBBZGRSZWYoKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1l
bnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpBZGRSZWYoKQpAQCAtODksMTYgKzEwMiwyNiBAQCBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXI6OmNvb2tpZVN0b3JhZ2UoIAogICAgIC8qIFtyZXR2
YWxdW291dF0gKi8gQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiogc3RvcmFnZSkKIHsKLSAgICBpZiAo
IXN0b3JhZ2UpCisjaWYgVVNFKENGTkVUV09SSykKKyAgIGlmICghc3RvcmFnZSkKICAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAogICAgICpzdG9yYWdlID0gY3VycmVudENvb2tpZVN0b3JhZ2Uo
KTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0
dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkNv
b2tpZU1hbmFnZXI6OnNldENvb2tpZVN0b3JhZ2UoIAogICAgIC8qIFtpbl0gKi8gQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBzdG9yYWdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgc2V0Q3Vy
cmVudENvb2tpZVN0b3JhZ2Uoc3RvcmFnZSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KSW5kZXg6IFdl
YktpdC93aW4vV2ViRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRG93
bmxvYWQuY3BwCShyZXZpc2lvbiAzOTIxMykKKysrIFdlYktpdC93aW4vV2ViRG93bmxvYWQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTYgQEAKICNpbmNsdWRlICJXZWJVUkxDcmVk
ZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKIAorI2luY2x1ZGUgPHd0Zi9w
bGF0Zm9ybS5oPgorCiAjaW5jbHVkZSA8aW8uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2lu
Y2x1ZGUgPHN5cy90eXBlcy5oPgogCiAjcHJhZ21hIHdhcm5pbmcocHVzaCwgMCkKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DRi5oPgorI2VuZGlm
CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNTUsNiAr
NTksNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2lmIFVTRShDRk5FVFdPUksp
CiAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzdGF0aWMgdm9pZCBkaWRTdGFy
dENhbGxiYWNrKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pOwogc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3RDYWxsYmFjayhDRlVS
TERvd25sb2FkUmVmIGRvd25sb2FkLCBDRlVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgQ0ZVUkxSZXNw
b25zZVJlZiByZWRpcmVjdGlvblJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKQEAg
LTc0LDYgKzc5LDcgQEAgc3RhdGljIFVJbnQzMiBCdW5kbGVNYWdpY051bWJlciA9IDB4REVDQQog
CiBzdGF0aWMgQ0ZEYXRhUmVmIGV4dHJhY3RSZXN1bWVEYXRhRnJvbUJ1bmRsZShjb25zdCBTdHJp
bmcmIGJ1bmRsZVBhdGgpOwogc3RhdGljIEhSRVNVTFQgYXBwZW5kUmVzdW1lRGF0YVRvQnVuZGxl
KENGRGF0YVJlZiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOworI2VuZGlm
CiAKIC8vIFdlYkRvd25sb2FkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtODYsNiArOTIsNyBAQCBXZWJEb3dubG9h
ZDo6V2ViRG93bmxvYWQoKQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZSA/IGRlbGVnYXRlIDog
RGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCk7CiAgICAgQ0ZVUkxDb25u
ZWN0aW9uUmVmIGNvbm5lY3Rpb24gPSBoYW5kbGUtPmNvbm5lY3Rpb24oKTsKICAgICBpZiAoIWNv
bm5lY3Rpb24pIHsKQEAgLTExMywxMCArMTIwLDEyIEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQo
UmVzb3VyY2VIYW5kbGUqIGgKICAgICAvLyBFaXRoZXIgd2F5LCB3ZSBuZWVkIHRvIHJlbGVhc2Ug
dGhlIGNvbm5lY3Rpb24gdG8gYmFsYW5jZSBvdXQgcmVmIGNvdW50cwogICAgIGhhbmRsZS0+cmVs
ZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOwogICAgIENGUmVsZWFzZShjb25uZWN0aW9uKTsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0KGNvbnN0IEtVUkwmIHVybCwgSVdl
YkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
bV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1IoIkRlbGVnYXRlIGlzICVwIiwgbV9k
ZWxlZ2F0ZS5nZXQoKSk7CiAKQEAgLTEzMyw2ICsxNDIsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjpp
bml0KGNvbnN0IEtVUkwmIHVybCwgCiAgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlRG93bmxvYWRX
aXRoUnVuTG9vcChtX2Rvd25sb2FkLmdldCgpLCBSZXNvdXJjZUhhbmRsZTo6bG9hZGVyUnVuTG9v
cCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93
bmxvYWQgLSBJbml0aWFsaXplZCBkb3dubG9hZCBvZiB1cmwgJXMgaW4gV2ViRG93bmxvYWQgJXAi
LCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcyk7CisjZW5kaWYKIH0KIAogV2ViRG93
bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC0yMDYsNiArMjE2LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxSZXF1
ZXN0KiByZXF1ZXN0LCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViRG93bmxvYWREZWxlZ2F0ZSog
ZGVsZWdhdGUpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViTXV0YWJsZVVS
TFJlcXVlc3Q+IHdlYlJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0IHx8IEZBSUxFRChyZXF1ZXN0
LT5RdWVyeUludGVyZmFjZSgmd2ViUmVxdWVzdCkpKSB7CiAgICAgICAgIExPRyhEb3dubG9hZCwg
IldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGZhaWxlZCAtIG5vdCBhIFdlYk11dGFibGVV
UkxSZXF1ZXN0Iik7ICAgIApAQCAtMjM3LDEyICsyNDgsMTcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQg
LSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHN0YXJ0ZWQgZG93bmxvYWQgb2YgdXJsICVzIiwg
d2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJl
dHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJE
b3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RS
IGJ1bmRsZVBhdGgsIAogICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlKiBk
ZWxlZ2F0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIkF0dGVt
cHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBT
eXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIFJldGFpblB0
cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgZXh0cmFjdFJlc3VtZURhdGFGcm9tQnVu
ZGxlKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CkBAIC0y
ODMsNiArMjk5LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmkK
IAogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGNvbXBs
ZXRlLCByZXN1bWVkIGRvd25sb2FkIG9mIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBT
eXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1cm4gU19P
SzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRp
ZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5SZXN1bWVE
b3dubG9hZERlY29kZWRXaXRoRW5jb2RpbmdNSU1FVHlwZSgKQEAgLTI5NSw2ICszMTUsNyBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnN0YXJ0KCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
ICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU3RhcnRpbmcgZG93bmxvYWQgKCVwKSIs
IHRoaXMpOwogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAg
LTMwNSwxMCArMzI2LDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6
OnMKICAgICBkaWRTdGFydCgpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsKCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9hZCAo
JXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwpAQCAtMzE2LDEwICszNDIsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3du
bG9hZDo6YwogICAgIENGVVJMRG93bmxvYWRDYW5jZWwobV9kb3dubG9hZC5nZXQoKSk7CiAgICAg
bV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKIHsKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9h
ZCAoJXApLCB3cml0aW5nIHJlc3VtZSBpbmZvcm1hdGlvbiB0byBmaWxlIGlmIHBvc3NpYmxlIiwg
dGhpcyk7CiAgICAgQVNTRVJUKG1fZG93bmxvYWQpOwogICAgIGlmICghbV9kb3dubG9hZCkKQEAg
LTM0NiwyMSArMzc3LDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6
OmMKIGV4aXQ6CiAgICAgbV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIGhyOworI2Vsc2UKKyAg
IG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUo
CiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KQogeworI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
ICAgICpyZXN1bHQgPSBDRlVSTERvd25sb2FkRGVsZXRlc1Vwb25GYWlsdXJlKG1fZG93bmxvYWQu
Z2V0KCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRG93bmxvYWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKAogICAgICAgICAvKiBbaW5dICov
IEJTVFIgdGFyZ2V0UGF0aCwgCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNUUiogYnVu
ZGxlUGF0aCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghdGFyZ2V0UGF0aCkKICAg
ICAgICAgcmV0dXJuIEVfSU5WQUxJREFSRzsKIApAQCAtMzc2LDYgKzQxNywxMCBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpiCiAgICAgaWYgKCEqYnVuZGxlUGF0aCkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpyZXF1ZXN0KApAQCAtMzkyLDE2ICs0MzcsMjIg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cgogSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgKICAg
ICAgICAgLyogW2luXSAqLyBCT09MIGRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpCiB7CisjaWYgVVNF
KENGTkVUV09SSykKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAgICAgQ0ZVUkxEb3dubG9hZFNldERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25sb2FkLmdldCgp
LCAhIWRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAg
IG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKAogICAgICAg
ICAvKiBbaW5dICovIEJTVFIgcGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd092
ZXJ3cml0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3dubG9hZCkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIApAQCAtNDE1LDYgKzQ2NiwxMCBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBTZXQgZGVzdGluYXRpb24gdG8gJXMiLCBtX2J1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkp
OwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJl
dHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogLy8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQyMiw2ICs0NzcsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjpzCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRv
d25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAq
LyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKQogeworI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgaWYgKG1fZG93bmxvYWQpIHsKICAgICAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbChtX2Rv
d25sb2FkLmdldCgpKTsKICAgICAgICAgbV9kb3dubG9hZCA9IDA7CkBAIC00MzMsMTEgKzQ4OSwx
NiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgbV9kZWxl
Z2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKICAgICByZXR1
cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsK
KyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjb250
aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCiAgICAgICAg
IC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7
CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxs
ZW5nZSkKICAgICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NDUsMTIgKzUwNiwxNyBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgaWYgKG1fZG93
bmxvYWQpCiAgICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0
KCksIDAsIHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhD
aGFsbGVuZ2VSZWYoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJEb3dubG9hZDo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyogW2luXSAqLyBJ
V2ViVVJMQ3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09S
SykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5n
ZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0
dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NjQsOCArNTMwLDEzIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRG93bmxvYWQ6OnUKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZV
UkxEb3dubG9hZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdl
dCgpLCB3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hh
bGxlbmdlUmVmKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVk
KCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQog
Ly8gQ0ZVUkxEb3dubG9hZCBDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBXZWJEb3dubG9hZDo6
ZGlkU3RhcnQoKQogewpAQCAtNzk4LDMgKzg2OSw0IEBAIGV4aXQ6CiAgICAgZmNsb3NlKGJ1bmRs
ZSk7CiAgICAgcmV0dXJuIGhyOwogfQorI2VuZGlmCkluZGV4OiBXZWJLaXQvd2luL1dlYkRvd25s
b2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShyZXZpc2lvbiAz
OTIxMykKKysrIFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0
LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3JlZGVudGlh
bCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKiBjaGFsbGVuZ2UpOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBDRlVS
TERvd25sb2FkIENhbGxiYWNrcwogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJlcXVl
c3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZik7
CkBAIC0xMTYsMTMgKzExNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5h
dGlvbihDRlVSTFJlZik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwo
Q0ZFcnJvclJlZik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQ7
CiAKICAgICBXZWJDb3JlOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXZWJDb3JlOjpTdHJp
bmcgbV9idW5kbGVQYXRoOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGVVJM
RG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7CisjZW5kaWYKICAgICBDT01QdHI8SVdlYk11dGFibGVV
UkxSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAgICAgQ09NUHRyPElXZWJEb3dubG9hZERlbGVnYXRlPiBt
X2RlbGVnYXRlOwogCkluZGV4OiBXZWJLaXQvd2luL1dlYkVycm9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYkVycm9yLmNwcAkocmV2aXNpb24gMzkyMTMpCisrKyBXZWJLaXQvd2lu
L1dlYkVycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQlN0cmluZy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAotI2lmIFVTRShDRk5F
VFdPUkspCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCiAKSW5kZXg6IFdl
YktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCShyZXZpc2lvbiAzOTIxMykKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OCwxMSArOTgsMTMgQEAKIAogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3Jl
R3JhcGhpY3MuaD4KIAorI2lmIFBMQVRGT1JNKENHKQogLy8gQ0cgU1BJIHVzZWQgZm9yIHByaW50
aW5nCiBleHRlcm4gIkMiIHsKICAgICBDR0FmZmluZVRyYW5zZm9ybSBDR0NvbnRleHRHZXRCYXNl
Q1RNKENHQ29udGV4dFJlZiBjKTsgCiAgICAgdm9pZCBDR0NvbnRleHRTZXRCYXNlQ1RNKENHQ29u
dGV4dFJlZiBjLCBDR0FmZmluZVRyYW5zZm9ybSBtKTsgCiB9CisjZW5kaWYKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTgxMyw2ICsx
ODE1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3BvbwogICAgIGhl
YWRlckFuZEZvb3RlckhlaWdodHMoJmhlYWRlckhlaWdodCwgJmZvb3RlckhlaWdodCk7CiAgICAg
R3JhcGhpY3NDb250ZXh0IHNwb29sQ3R4KHBjdHgpOwogCisjaWYgUExBVEZPUk0oQ0cpCiAgICAg
Zm9yIChVSU5UIGlpID0gc3RhcnRQYWdlOyBpaSA8IGVuZFBhZ2U7IGlpKyspIHsKICAgICAgICAg
SW50UmVjdCBwYWdlUmVjdCA9IG1fcGFnZVJlY3RzW2lpXTsKIApAQCAtMTg1Niw2ICsxODU5LDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3BvbwogICAgICAgICBDR0Nv
bnRleHRFbmRQYWdlKHBjdHgpOwogICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBjdHgp
OwogICAgIH0KKyNlbmRpZgogIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dp
bi9XZWJLaXRHcmFwaGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRHcmFw
aGljcy5jcHAJKHJldmlzaW9uIDM5MjEzKQorKysgV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEwICs0MiwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
U3RyaW5nVHJ1bmNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlVGV4dFJlbmRlcmVy
Lmg+CiAKKyNpZiBQTEFURk9STShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+CisjZW5kaWYKICNwcmFnbWEgd2FybmluZyhwb3ApCiAKKyNpZiBFTkFCTEUoU0FGQVJJ
X0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmg+CisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTgx
LDEyICs4NSwyMCBAQCBzdGF0aWMgRm9udCBtYWtlRm9udChjb25zdCBXZWJGb250RGVzY3JpCiBz
dHJ1Y3QgV2ViVGV4dFJlbmRlckluZm9XaXRob3V0U2hhZG93CiB7CiAgICAgRFdPUkQgc3RydWN0
U2l6ZTsKKyNpZiBQTEFURk9STShDRykKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0OworI2Vs
aWYgUExBVEZPUk0oQ0FJUk8pCisgICAgQ2Fpcm9Db250ZXh0UmVmIGNnQ29udGV4dDsKKyNlbmRp
ZgogICAgIExQQ1RTVFIgdGV4dDsKICAgICBpbnQgbGVuZ3RoOwogICAgIFBPSU5UIHB0OwogICAg
IGNvbnN0IFdlYkZvbnREZXNjcmlwdGlvbiogZGVzY3JpcHRpb247CisjaWYgUExBVEZPUk0oQ0cp
CiAgICAgQ0dDb2xvclJlZiBjb2xvcjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIHVuc2ln
bmVkIGNvbG9yOyAgICAgICAgLy8gUkdCQSBxdWFkcnVwbGV0CisjZW5kaWYKICAgICBpbnQgdW5k
ZXJsaW5lZEluZGV4OwogICAgIGJvb2wgZHJhd0FzUGFzc3dvcmQ7CiAgICAgaW50IG92ZXJyaWRl
U21vb3RoaW5nTGV2ZWw7IC8vIHBhc3MgaW4gLTEgaWYgY2FsbGVyIGRvZXMgbm90IHdhbnQgdG8g
b3ZlcnJpZGUgc21vb3RoaW5nIGxldmVsCkBAIC05OSw4ICsxMTEsMTAgQEAgdm9pZCBXZWJEcmF3
VGV4dChXZWJUZXh0UmVuZGVySW5mbyogaW5mbwogCiAgICAgaW50IG9sZEZvbnRTbW9vdGhpbmdM
ZXZlbCA9IC0xOwogICAgIGlmIChpbmZvLT5vdmVycmlkZVNtb290aGluZ0xldmVsID49IDApIHsK
KyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICAgICAgb2xkRm9udFNtb290aGluZ0xl
dmVsID0gd2tHZXRGb250U21vb3RoaW5nTGV2ZWwoKTsKICAgICAgICAgd2tTZXRGb250U21vb3Ro
aW5nTGV2ZWwoaW5mby0+b3ZlcnJpZGVTbW9vdGhpbmdMZXZlbCk7CisjZW5kaWYKICAgICB9CiAK
ICAgICB7CkBAIC0xMTMsMTUgKzEyNywyMSBAQCB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5k
ZXJJbmZvKiBpbmZvCiAKICAgICAgICAgLy8gU2V0IHNoYWRvdyBzZXR0aW5nCiAgICAgICAgIGlm
IChpbmZvLT5zdHJ1Y3RTaXplID09IHNpemVvZihXZWJUZXh0UmVuZGVySW5mbykgJiYKKyNpZiBQ
TEFURk9STShDRykKICAgICAgICAgICAgIChpbmZvLT5zaGFkb3dPZmZzZXQuY3ggfHwgaW5mby0+
c2hhZG93T2Zmc2V0LmN5IHx8IGluZm8tPnNoYWRvd0JsdXIgfHwgaW5mby0+c2hhZG93Q29sb3Ip
KQorI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgICAgICAgICAoaW5mby0+c2hhZG93T2Zmc2V0
LmN4IHx8IGluZm8tPnNoYWRvd09mZnNldC5jeSB8fCBpbmZvLT5zaGFkb3dCbHVyKSkKKyNlbmRp
ZgogICAgICAgICAgICAgY29udGV4dC5zZXRTaGFkb3coaW5mby0+c2hhZG93T2Zmc2V0LCBpbmZv
LT5zaGFkb3dCbHVyLCBpbmZvLT5zaGFkb3dDb2xvcik7CiAKICAgICAgICAgV2ViQ29yZURyYXdU
ZXh0QXRQb2ludChjb250ZXh0LCBkcmF3U3RyaW5nLCBpbmZvLT5wdCwgbWFrZUZvbnQoKihpbmZv
LT5kZXNjcmlwdGlvbikpLCBpbmZvLT5jb2xvciwgaW5mby0+dW5kZXJsaW5lZEluZGV4KTsKICAg
ICAgICAgY29udGV4dC5yZXN0b3JlKCk7CiAgICAgfQogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRF
UkZBQ0UpCiAgICAgaWYgKGluZm8tPm92ZXJyaWRlU21vb3RoaW5nTGV2ZWwgPj0gMCkKICAgICAg
ICAgd2tTZXRGb250U21vb3RoaW5nTGV2ZWwob2xkRm9udFNtb290aGluZ0xldmVsKTsKKyNlbmRp
ZgogfQogCiBmbG9hdCBUZXh0RmxvYXRXaWR0aChMUENUU1RSIHRleHQsIGludCBsZW5ndGgsIGNv
bnN0IFdlYkZvbnREZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCkluZGV4OiBXZWJLaXQvd2luL1dl
YktpdEdyYXBoaWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5o
CShyZXZpc2lvbiAzOTIxMykKKysrIFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsOCArMzAsMTMgQEAKIAogZXh0ZXJuICJDIiB7CiAKKyNpZiBQTEFURk9S
TShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29sb3IqIENHQ29sb3JSZWY7CiB0eXBlZGVmIHN0cnVj
dCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQordHlwZWRl
ZiB1bnNpZ25lZCBDb2xvclJlZjsgICAgICAgIC8vIFJHQkEgcXVhZHJ1cGxldAordHlwZWRlZiBz
dHJ1Y3QgX2NhaXJvKiBDYWlyb0NvbnRleHRSZWY7CisjZW5kaWYKIAogdHlwZWRlZiB3Y2hhcl90
IFdDSEFSOwogdHlwZWRlZiBfX251bGx0ZXJtaW5hdGVkIGNvbnN0IFdDSEFSKiBMUENXU1RSOwpA
QCAtNDksMTggKzU0LDMwIEBAIHN0cnVjdCBXZWJGb250RGVzY3JpcHRpb24gewogc3RydWN0IFdl
YlRleHRSZW5kZXJJbmZvCiB7CiAgICAgRFdPUkQgc3RydWN0U2l6ZTsKKyNpZiBQTEFURk9STShD
RykKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisg
ICAgQ2Fpcm9Db250ZXh0UmVmIGNnQ29udGV4dDsKKyNlbmRpZgogICAgIExQQ1RTVFIgdGV4dDsK
ICAgICBpbnQgbGVuZ3RoOwogICAgIFBPSU5UIHB0OwogICAgIGNvbnN0IFdlYkZvbnREZXNjcmlw
dGlvbiogZGVzY3JpcHRpb247CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJlZiBjb2xv
cjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENvbG9yUmVmIGNvbG9yOworI2VuZGlmCiAg
ICAgaW50IHVuZGVybGluZWRJbmRleDsKICAgICBib29sIGRyYXdBc1Bhc3N3b3JkOwogICAgIGlu
dCBvdmVycmlkZVNtb290aGluZ0xldmVsOyAvLyBwYXNzIGluIC0xIGlmIGNhbGxlciBkb2VzIG5v
dCB3YW50IHRvIG92ZXJyaWRlIHNtb290aGluZyBsZXZlbAogICAgIFNJWkUgc2hhZG93T2Zmc2V0
OwogICAgIGludCBzaGFkb3dCbHVyOworI2lmIFBMQVRGT1JNKENHKQogICAgIENHQ29sb3JSZWYg
c2hhZG93Q29sb3I7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBDb2xvclJlZiBzaGFkb3dD
b2xvcjsKKyNlbmRpZgogfTsKIAogdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyop
OwpJbmRleDogV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHJldmlzaW9uIDM5MjEzKQor
KysgV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjcHJh
Z21hIHdhcm5pbmcocG9wKQogCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogLy8gSVdlYlVSTFJlcXVlc3QgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzY3LDkg
KzM2OSwxMyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYk11dGFibGVVUkxSCiB7CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisjaWYgVVNFKENGTkVU
V09SSykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVl
c3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdCgpKSk7CiAgICAgKnJlc3VsdCA9IGNyZWF0ZUlu
c3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRhYmxlUmVxdWVzdC5nZXQoKSkpOwogICAgIHJldHVy
biBTX09LOworI2Vsc2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9CiAKIC8vIElX
ZWJNdXRhYmxlVVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMzkyMTMp
CisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsOSBAQAogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNoZm9sZGVyLmg+CiAj
aW5jbHVkZSA8dGNoYXIuaD4KKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRl
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgog
CkBAIC05NjYsNyArOTY4LDkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJl
bmNlcwogICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRGb250U21vb3RoaW5nVHlwZVBy
ZWZlcmVuY2VLZXkpLCBzbW9vdGhpbmdUeXBlKTsKICAgICBpZiAoc21vb3RoaW5nVHlwZSA9PSBG
b250U21vb3RoaW5nVHlwZVdpbmRvd3MpCiAgICAgICAgIHNtb290aGluZ1R5cGUgPSBGb250U21v
b3RoaW5nVHlwZVN0YW5kYXJkOworI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgIHdr
U2V0Rm9udFNtb290aGluZ0xldmVsKChpbnQpc21vb3RoaW5nVHlwZSk7CisjZW5kaWYKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAkocmV2aXNpb24gMzky
MTMpCisrKyBXZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDcgKzMyLDkgQEAKICNpbmNsdWRlICJXZWJLaXRETEwuaCIKIAogI2luY2x1ZGUgPENvcmVG
b3VuZGF0aW9uL0NGU3RyaW5nLmg+CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5j
bHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2Vu
ZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBXZWJUZXh0UmVuZGVyZXIqIFdlYlRl
eHRSZW5kZXJlcjo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTAsNiArOTIsOCBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlRleHRSZW5kZXJlCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGZvbnRG
aWxlUGF0aCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHdjc2xlbihmb250RmlsZVBhdGgpKSkpOwor
I2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgIHdrQWRkRm9udHNBdFBhdGgoc3RyaW5n
LmdldCgpKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dpbi9X
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHJldmlzaW9uIDM5MjEzKQorKysg
V2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSw5ICsxNDksMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxB
dXRoZW50aQogCiAgICAgLy8gRklYTUU6IEFmdGVyIHdlIGNoYW5nZSBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSB0byB1c2UgIlJlc291cmNlSGFuZGxlIiBhcyB0aGUgYWJzdHJhY3QgIlNlbmRlciIg
b3IgIlNvdXJjZSBvZiB0aGlzIEF1dGggQ2hhbGxlbmdlIiwgdGhlbiB3ZSdsbAogICAgIC8vIGNv
bnN0cnVjdCB0aGUgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ugd2l0aCB0aGF0IGFzIG9idGFpbmVk
IGZyb20gdGhlIHdlYlNlbmRlcgotCisjaWYgVVNFKENGTkVUV09SSykKICAgICBtX2F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViU3BhY2UtPnByb3Rl
Y3Rpb25TcGFjZSgpLCB3ZWJDcmVkZW50aWFsLT5jcmVkZW50aWFsKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0ZhaWx1cmVDb3VudCwgd2ViUmVzcG9uc2Ut
PnJlc291cmNlUmVzcG9uc2UoKSwgd2ViRXJyb3ItPnJlc291cmNlRXJyb3IoKSk7CisjZW5kaWYK
ICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDogV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAJKHJldmlzaW9uIDM5MjEzKQorKysgV2Vi
S2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlci5oIgogCiAjaW5jbHVkZSAiQ09NUHRyLmgiCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIKQEAgLTEw
MCwyOSArMTAxLDQwIEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2EK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VT
ZW5kZXI6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5dICov
IElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKQogeworI2lmIFVTRShD
Rk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJD
aGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBtX2hhbmRsZS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24o
d2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKICAgICByZXR1cm4gU19P
SzsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2Vu
ZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXI6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2Up
OwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAg
bV9oYW5kbGUtPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCh3ZWJD
aGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkpOwogICAgIHJldHVybiBTX09LOwor
I2Vsc2UKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlcjo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3Jl
ZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBD
T01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwg
Y2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKQEAgLTEzMyw2ICsxNDUsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxB
dXRoZW50aQogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkQ3JlZGVudGlhbCh3ZWJDaGFsbGVuZ2Ut
PmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSk7
CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiAvLyBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVNlbmRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMzkyMTMp
CisrKyBXZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsMTAgQEAKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hlbHBlcnMuaCIKICNpbmNsdWRlICJX
ZWJMb2NhbGl6YWJsZVN0cmluZ3MuaCIKIAorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQog
I2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4K
KyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+CiAjcHJhZ21hIHdhcm5pbmcoIHB1
c2gsIDAgKQogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgpJbmRleDogV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lv
biAzOTIxMykKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MywxMCArMTAzLDE4IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVh
ZGluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTVmFsdWUuaD4KKworI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8
Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJv
dG9jb2xQcml2Lmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CisKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+IAorI2VuZGlmCisKICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPGRpbW0uaD4KICNpbmNsdWRlIDxvbGVh
Y2MuaD4KQEAgLTEyNSw2ICsxMzMsNyBAQCBzdGF0aWMgSGFzaFNldDxXZWJWaWV3Kj4gcGVuZGlu
Z0RlbGV0ZUJhCiBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbigpOwogc3RhdGljIFN0cmluZyB3ZWJL
aXRWZXJzaW9uKCk7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogdHlwZWRlZiBDRlVSTENhY2hlUmVm
ICgqQ29weVNoYXJlZFVSTENhY2hlRnVuY3Rpb24pKCk7CiAKIHN0YXRpYyBITU9EVUxFIGZpbmRD
Rk5ldHdvcmtNb2R1bGUoKQpAQCAtMTM4LDYgKzE0Nyw3IEBAIHN0YXRpYyBDb3B5U2hhcmVkVVJM
Q2FjaGVGdW5jdGlvbiBmaW5kQ28KIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb3B5
U2hhcmVkVVJMQ2FjaGVGdW5jdGlvbj4oR2V0UHJvY0FkZHJlc3MoZmluZENGTmV0d29ya01vZHVs
ZSgpLCAiQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSIpKTsKIH0KKyNlbmRpZgogCiBXZWJW
aWV3KiBraXQoUGFnZSogcGFnZSkKIHsKQEAgLTM4MSw2ICszOTEsNyBAQCB2b2lkIFdlYlZpZXc6
OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAgaWYgKHNfZGlkU2V0Q2FjaGVNb2RlbCAm
JiBjYWNoZU1vZGVsID09IHNfY2FjaGVNb2RlbCkKICAgICAgICAgcmV0dXJuOwogCisjaWYgVVNF
KENGTkVUV09SSykKICAgICAvLyBPbmNlIHdlIHJlcXVpcmUgYSBuZXdlciB2ZXJzaW9uIG9mIENG
TmV0d29yayB3aXRoIHRoZSBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlIGZ1bmN0aW9uLAog
ICAgIC8vIHdlIGNhbiBjYWxsIENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUgZGlyZWN0bHkg
YW5kIGVsaW1pbmF0ZSBjb3B5U2hhcmVkVVJMQ2FjaGUuCiAgICAgc3RhdGljIENvcHlTaGFyZWRV
UkxDYWNoZUZ1bmN0aW9uIGNvcHlTaGFyZWRVUkxDYWNoZSA9IGZpbmRDb3B5U2hhcmVkVVJMQ2Fj
aGVGdW5jdGlvbigpOwpAQCAtNTY3LDYgKzU3OCw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVN
b2RlbChXZWJDYWNoZU1vZGUKICAgICBzX2RpZFNldENhY2hlTW9kZWwgPSB0cnVlOwogICAgIHNf
Y2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7CiAgICAgcmV0dXJuOworI2VuZGlmCiB9CiAKIFdlYkNh
Y2hlTW9kZWwgV2ViVmlldzo6Y2FjaGVNb2RlbCgpCkBAIC00MjM4LDkgKzQyNTAsMTEgQEAgSFJF
U1VMVCB1cGRhdGVTaGFyZWRTZXR0aW5nc0Zyb21QcmVmZXJlbgogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgICAgICByZXR1cm4gaHI7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIFNldCBj
b29raWUgc3RvcmFnZSBhY2NlcHQgcG9saWN5CiAgICAgaWYgKENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYgY29va2llU3RvcmFnZSA9IGN1cnJlbnRDb29raWVTdG9yYWdlKCkpCiAgICAgICAgIENGSFRU
UENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZSwgYWNjZXB0
UG9saWN5KTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5jcHAJKHJldmlzaW9uIDM5MjEzKQorKysg
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsOSBAQAogI2luY2x1ZGUgIldlYlZpZXcuaCIKIAogI2luY2x1ZGUgPHNo
bG9iai5oPgorI2lmIFBMQVRGT1JNKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3Jh
cGhpY3MuaD4KKyNlbmRpZgogCiAjcHJhZ21hIHdhcm5pbmcocHVzaCwgMCkgCiAjaW5jbHVkZSA8
V2ViQ29yZS9DbGlwYm9hcmRXaW4uaD4KQEAgLTQ2LDcgKzQ4LDExIEBACiAjcHJhZ21hIHdhcm5p
bmcocG9wKSAKIAogbmFtZXNwYWNlIFdlYkNvcmUgeworI2lmIFBMQVRGT1JNKENHKQogICAgIEhC
SVRNQVAgYWxsb2NJbWFnZShIREMgZGMsIEludFNpemUgc2l6ZSwgQ0dDb250ZXh0UmVmICp0YXJn
ZXRSZWYpOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAgSEJJVE1BUCBhbGxvY0ltYWdlKEhE
QyBkYywgSW50U2l6ZSBzaXplLCBzdHJ1Y3QgX2NhaXJvKiogdGFyZ2V0UmVmKTsKKyNlbmRpZgog
fQogCiAKQEAgLTIyMyw3ICsyMjksMTEgQEAgRHJhZ0ltYWdlUmVmIFdlYkRyYWdDbGllbnQ6OmNy
ZWF0ZURyYWdJbQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyNpZiBQTEFURk9STShDRykK
ICAgICBDR0NvbnRleHRSZWYgY29udGV4dFJlZjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAg
IHN0cnVjdCBfY2Fpcm8qIGNvbnRleHRSZWY7CisjZW5kaWYKICAgICBpbWFnZSA9IGFsbG9jSW1h
Z2Uod29ya2luZ0RDLCBpbWFnZVNpemUsICZjb250ZXh0UmVmKTsKICAgICBpZiAoIWltYWdlKSB7
CiAgICAgICAgIERlbGV0ZURDKHdvcmtpbmdEQyk7CkBAIC0yNTcsNyArMjY3LDEyIEBAIERyYWdJ
bWFnZVJlZiBXZWJEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW0KICAgICBJbnRQb2ludCB0ZXh0UG9z
KERSQUdfTEFCRUxfQk9SREVSX1gsIERSQUdfTEFCRUxfQk9SREVSX1kgKyBsYWJlbEZvbnQucGl4
ZWxTaXplKCkpOwogICAgIFdlYkNvcmVEcmF3RG91YmxlZFRleHRBdFBvaW50KGNvbnRleHQsIGxh
YmVsLCB0ZXh0UG9zLCBsYWJlbEZvbnQsIHRvcENvbG9yLCBib3R0b21Db2xvcik7CiAKKyNpZiBQ
TEFURk9STShDRykKICAgICBDR0NvbnRleHRSZWxlYXNlKGNvbnRleHRSZWYpOworI2VsaWYgUExB
VEZPUk0oQ0FJUk8pCisgICAgY2Fpcm9fZGVzdHJveShjb250ZXh0UmVmKTsKKyNlbmRpZgorCiAg
ICAgRGVsZXRlREMod29ya2luZ0RDKTsKICAgICBSZWxlYXNlREMoMCwgZGMpOwogICAgIHJldHVy
biBpbWFnZTsKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAzOTIxMykKKysrIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiQ09NUHJvcGVydHlCYWcuaCIKICNpbmNsdWRlICJFbWJlZGRl
ZFdpZGdldC5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgorI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVkUGFnZVBsYXRmb3JtRGF0YS5oIgog
I2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50TG9hZGVy
LmgiCkBAIC0xMDUsNiArMTA2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YXNzaWdu
SWRlbnRpZgogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Up
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXJjZUhhbmRs
ZSgpKTsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkBA
IC0xMTgsNiArMTIwLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZQogICAgIC8vIElmIHRoZSBSZXNvdXJjZUxvYWREZWxlZ2F0ZSBkb2Vzbid0IGV4aXN0IG9yIGZh
aWxzIHRvIGhhbmRsZSB0aGUgY2FsbCwgd2UgdGVsbCB0aGUgUmVzb3VyY2VIYW5kbGUKICAgICAv
LyB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWwgLSB0aGlzIGlzIHRoZSBiZXN0IGFwcHJv
eGltYXRpb24gb2YgTWFjIGJlaGF2aW9yCiAgICAgY2hhbGxlbmdlLnNvdXJjZUhhbmRsZSgpLT5y
ZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsKKyNl
bHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQpAQCAtNDcyLDEwICs0NzcsMTIgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRAogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICBBU1NF
UlQoY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNoZWRQYWdlLT5k
b2N1bWVudExvYWRlcigpKTsKIAogICAgIFdlYkNhY2hlZFBhZ2VQbGF0Zm9ybURhdGEqIHdlYlBs
YXRmb3JtRGF0YSA9IG5ldyBXZWJDYWNoZWRQYWdlUGxhdGZvcm1EYXRhKHN0YXRpY19jYXN0PElX
ZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpKSkpOwogICAgIGNhY2hlZFBhZ2UtPnNldENhY2hlZFBhZ2VQbGF0Zm9ybURh
dGEod2ViUGxhdGZvcm1EYXRhKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkKSW5kZXg6IFdlYktpdC93aW4v
V2ViS2l0LnZjcHJvai9XZWJLaXQucmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdC5yYwkocmV2aXNpb24gMzkyMTMpCisrKyBXZWJLaXQvd2luL1dlYktpdC52
Y3Byb2ovV2ViS2l0LnJjCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsOSBAQAogLy8gTWljcm9z
b2Z0IFZpc3VhbCBDKysgZ2VuZXJhdGVkIHJlc291cmNlIHNjcmlwdC4KIC8vCiAjaW5jbHVkZSAi
cmVzb3VyY2UuaCIKKyNpZm5kZWYgQVBTVFVESU9fSU5WT0tFRAogI2luY2x1ZGUgImF1dG92ZXJz
aW9uLmgiCisjZW5kaWYKICNpbmNsdWRlICJ3aW5yZXMuaCIKIAogI2lmZGVmIF9XSU4zMgpJbmRl
eDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkocmV2aXNpb24gMzkyMTMp
CisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM4Nyw3ICszODcsNyBAQCBzdGF0aWMgdm9pZCBsb2FkVVJMKEJTVFIgdXJsQlN0cikK
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgZ290byBleGl0OwogCi0gICAgaHIgPSByZXF1
ZXN0LT5pbml0V2l0aFVSTCh1cmxCU3RyLCBXZWJVUkxSZXF1ZXN0VXNlUHJvdG9jb2xDYWNoZVBv
bGljeSwgMCk7CisgICAgaHIgPSByZXF1ZXN0LT5pbml0V2l0aFVSTCh1cmxCU3RyLCBXZWJVUkxS
ZXF1ZXN0VXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgNjApOwogICAgIGlmIChGQUlMRUQoaHIpKQog
ICAgICAgICBnb3RvIGV4aXQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26021</attachid>
            <date>2008-12-14 21:59:10 -0800</date>
            <delta_ts>2009-01-01 15:15:38 -0800</delta_ts>
            <desc>Update against ToT (2008-12-14)</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>32988</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzOTI5NikKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDcgQEAKICNp
ZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRyAxCiAjZGVmaW5lIFdURl9Q
TEFURk9STV9DSSAxCisjZGVmaW5lIEVOQUJMRV9TQUZBUklfSU5URVJGQUNFIDEKICNlbmRpZgog
CiAvKiBQTEFURk9STShTS0lBKSBmb3IgV2luL0xpbnV4LCBDRy9DSSBmb3IgTWFjICovCkBAIC0x
NTEsNiArMTUyLDcgQEAKIC8qIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGZyb20gYSBi
bGFja2xpc3QgdG8gYSB3aGl0ZWxpc3QgKi8KICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oUVQpICYmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0FJUk8gMQorI3VuZGVmIEVOQUJMRV9WSURFTwogI2VuZGlmCiAKIC8qIENQ
VSAqLwpAQCAtMzAzLDYgKzMwNSw3IEBACiAKICNpZiBQTEFURk9STShXSU4pCiAjZGVmaW5lIFdU
Rl9VU0VfV0lOSU5FVCAxCisvKiAjZGVmaW5lIFdURl9VU0VfQ1VSTCAxICovCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFdYKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gMzky
OTYpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSw2ICsxMTksNyBAQCB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKICNp
ZiBVU0UoUFRIUkVBRFMpCiB0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBQbGF0Zm9ybU11dGV4Owog
dHlwZWRlZiBwdGhyZWFkX2NvbmRfdCBQbGF0Zm9ybUNvbmRpdGlvbjsKK3R5cGVkZWYgcHRocmVh
ZF9rZXlfdCBQbGF0Zm9ybVRocmVhZFN0b3JhZ2VLZXk7CiAjZWxpZiBQTEFURk9STShHVEspCiB0
eXBlZGVmIEdPd25QdHI8R011dGV4PiBQbGF0Zm9ybU11dGV4OwogdHlwZWRlZiBHT3duUHRyPEdD
b25kPiBQbGF0Zm9ybUNvbmRpdGlvbjsKQEAgLTEzOCw2ICsxMzksNyBAQCBzdHJ1Y3QgUGxhdGZv
cm1Db25kaXRpb24gewogICAgIEhBTkRMRSBtX3F1ZXVlOwogICAgIEhBTkRMRSBtX211dGV4Owog
fTsKK3R5cGVkZWYgRFdPUkQgUGxhdGZvcm1UaHJlYWRTdG9yYWdlS2V5OwogI2Vsc2UKIHR5cGVk
ZWYgdm9pZCogUGxhdGZvcm1NdXRleDsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247
CkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJ
KHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAt
OTEsOSArOTEsMTcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQorI2lmIDAKICNkZWZp
bmUgV1RGX1BMQVRGT1JNX0NHIDEKICN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJUk8KICNkZWZpbmUg
V1RGX1VTRV9DRk5FVFdPUksgMQorI3VuZGVmIFdURl9VU0VfQ1VSTAorI2Vsc2UKKyN1bmRlZiBX
VEZfUExBVEZPUk1fQ0cKKyNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEKKyN1bmRlZiBXVEZf
VVNFX0NGTkVUV09SSworI2RlZmluZSBXVEZfVVNFX0NVUkwgMQorI2VuZGlmCiAjdW5kZWYgV1RG
X1VTRV9XSU5JTkVUCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRiAxCiAjZGVmaW5lIFdURl9VU0Vf
UFRIUkVBRFMgMApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9idWlsZC1nZW5lcmF0ZWQt
ZmlsZXMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9idWlsZC1nZW5l
cmF0ZWQtZmlsZXMuc2gJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9idWlsZC1nZW5lcmF0ZWQtZmlsZXMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTY1LDUgKzY1LDYg
QEAgbWtkaXIgLXAgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkUwogY2QgIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcyIKIAogZXhwb3J0IFdlYkNvcmU9IiR7WFNSQ1JP
T1R9IgotZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01f
U1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NW
R19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5B
QkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJREVPIgorI2V4cG9ydCBGRUFUVVJF
X0RFRklORVM9IkVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxFX0lDT05E
QVRBQkFTRSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9YUEFUSCBFTkFC
TEVfU1ZHIEVOQUJMRV9TVkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfRk9OVFMgRU5BQkxFX1NWR19G
T1JFSUdOX09CSkVDVCBFTkFCTEVfU1ZHX0FTX0lNQUdFIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9X
TUwgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJREVPIgorZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0i
RU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5B
QkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JK
RUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMiCiBt
YWtlIC1mICIkV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIiAtaiAke05VTUNQVVN9IHx8IGV4
aXQgMQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZVNvdXJjZUNh
aXJvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlU291cmNlQ2Fpcm8uY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vSW1hZ2VTb3VyY2VDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
Miw4ICsxMDIsMTAgQEAgSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiAKIHZvaWQgSW1hZ2VT
b3VyY2U6OmNsZWFyKCkKIHsKLSAgICBkZWxldGUgbV9kZWNvZGVyOwotICAgIG1fZGVjb2RlciA9
IDA7CisgICAgaWYgKG1fZGVjb2RlcikgeworICAgICAgICBkZWxldGUgbV9kZWNvZGVyOworICAg
ICAgICBtX2RlY29kZXIgPSAwOworICAgIH0KIH0KIAogYm9vbCBJbWFnZVNvdXJjZTo6aW5pdGlh
bGl6ZWQoKSBjb25zdApJbmRleDogV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkFyY2hpdmUuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYktp
dC93aW4vV2ViQXJjaGl2ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDEwIEBACiAK
ICNpbmNsdWRlICJET01Db3JlQ2xhc3Nlcy5oIgogI2luY2x1ZGUgIk1lbW9yeVN0cmVhbS5oIgor
CisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxXZWJDb3JlL0xlZ2FjeVdlYkFyY2hpdmUu
aD4KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDIsNiArNDUsNyBA
QCBXZWJBcmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZSgpCiAgICAgcmV0dXJuIGlu
c3RhbmNlOwogfQogCisjaWYgVVNFKENGTkVUV09SSykKIFdlYkFyY2hpdmUqIFdlYkFyY2hpdmU6
OmNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUp
CiB7CiAgICAgV2ViQXJjaGl2ZSogaW5zdGFuY2UgPSBuZXcgV2ViQXJjaGl2ZShjb3JlQXJjaGl2
ZSk7CkBAIC01Nyw2ICs2MSwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFBhc3NSZWZQdHI8
TGVnYWN5CiAgICAgZ0NsYXNzQ291bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQuYWRkKCJXZWJB
cmNoaXZlIik7CiB9CisjZWxzZQorV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShpbnQgaWdub3JlKQor
ICAgIDogbV9yZWZDb3VudCgwKQoreworICAgIGdDbGFzc0NvdW50Kys7Cit9CisjZW5kaWYKIAog
V2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewpAQCAtMTE4LDcgKzEyOSw5IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6aW4KICAgICBpZiAoIWRvbU5vZGUpCiAgICAg
ICAgIHJldHVybiBFX05PSU5URVJGQUNFOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICBtX2Fy
Y2hpdmUgPSBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoZG9tTm9kZS0+bm9kZSgpKTsKKyNlbmRp
ZgogICAgIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtMTQ0LDYgKzE1Nyw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViQXJjaGl2ZTo6c3UKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViQXJjaGl2ZTo6ZGF0YSgKICAgICAgICAgLyogW291dCwgcmV0dmFsXSAqLyBJU3RyZWFt
Kiogc3RyZWFtKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGRGF0YVJl
Zj4gY2ZEYXRhID0gbV9hcmNoaXZlLT5yYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKICAgICBpZiAo
IWNmRGF0YSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTE1Myw0ICsxNjcsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6OmRhCiAgICAgKnN0cmVhbSA9IE1lbW9y
eVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoYnVmZmVyKTsKIAogICAgIHJldHVybiBTX09LOworI2Vs
c2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9CkluZGV4OiBXZWJLaXQvd2luL1dl
YkFyY2hpdmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkFyY2hpdmUuaAkocmV2aXNp
b24gMzkyOTYpCisrKyBXZWJLaXQvd2luL1dlYkFyY2hpdmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMjEgKzI4LDI5IEBACiAKICNpbmNsdWRlICJXZWJLaXQuaCIKIAorI2lmIFVTRShDRk5FVFdP
UkspCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBMZWdhY3lXZWJBcmNoaXZlOwogfQor
I2VuZGlmCiAKIGNsYXNzIFdlYkFyY2hpdmUgOiBwdWJsaWMgSVdlYkFyY2hpdmUKIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgV2ViQXJjaGl2ZSogY3JlYXRlSW5zdGFuY2UoKTsKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogICAgIHN0YXRpYyBXZWJBcmNoaXZlKiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRy
PFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU+KTsKIHByb3RlY3RlZDoKICAgICBXZWJBcmNoaXZl
KFBhc3NSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZT4pOwogICAgIH5XZWJBcmNoaXZl
KCk7CisjZWxzZQorICAgIFdlYkFyY2hpdmUoaW50KTsKK3Byb3RlY3RlZDoKKyAgICB+V2ViQXJj
aGl2ZSgpOworI2VuZGlmCiAKIHB1YmxpYzoKICAgICAvLyBJVW5rbm93bgpAQCAtNzgsNyArODYs
OSBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBVTE9ORyBtX3JlZkNvdW50OworI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgUmVmUHRyPFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU+IG1fYXJj
aGl2ZTsKKyNlbmRpZgogfTsKIAogI2VuZGlmIC8vIFdlYkFyY2hpdmVfaApJbmRleDogV2ViS2l0
L3dpbi9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNv
b2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYktpdC93aW4vV2ViQ29va2ll
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEyIEBACiAjaW5jbHVkZSAi
V2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogCisjaWYgVVNFKENG
TkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VXaW4uaD4KKyNlbGlmIFVTRShDVVJMKQorI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTM2LDkgKzQwLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBXZWJDb29r
aWVNYW5hZ2VyKiBXZWJDb29raWVNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiB7CisjaWYgVVNF
KENGTkVUV09SSykKICAgICBXZWJDb29raWVNYW5hZ2VyKiBtYW5hZ2VyID0gbmV3IFdlYkNvb2tp
ZU1hbmFnZXI7CiAgICAgbWFuYWdlci0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIG1hbmFnZXI7ICAg
IAorI2Vsc2UKKyAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFdlYkNvb2tpZU1hbmFnZXI6Oldl
YkNvb2tpZU1hbmFnZXIoKQpAQCAtNTgsNiArNjYsNyBAQCBXZWJDb29raWVNYW5hZ2VyOjp+V2Vi
Q29va2llTWFuYWdlcigpCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFu
YWdlcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQqKiBwcHZPYmplY3QpCiB7Cisj
aWYgVVNFKENGTkVUV09SSykKICAgICAqcHB2T2JqZWN0ID0gMDsKICAgICBpZiAoSXNFcXVhbEdV
SUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0
PFdlYkNvb2tpZU1hbmFnZXIqPih0aGlzKTsKQEAgLTY4LDYgKzc3LDEwIEBAIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWcKIAogICAgIEFkZFJlZigpOwogICAgIHJldHVy
biBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOwor
I2VuZGlmCiB9CiAKIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXI6OkFk
ZFJlZigpCkBAIC04OSwxNiArMTAyLDI2IEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdlYkNv
b2tpZU1hbmFnZXIKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcjo6
Y29va2llU3RvcmFnZSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBDRkhUVFBDb29raWVTdG9y
YWdlUmVmKiBzdG9yYWdlKQogewotICAgIGlmICghc3RvcmFnZSkKKyNpZiBVU0UoQ0ZORVRXT1JL
KQorICAgaWYgKCFzdG9yYWdlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAgICAgKnN0
b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UK
KyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llU3RvcmFn
ZSggCiAgICAgLyogW2luXSAqLyBDRkhUVFBDb29raWVTdG9yYWdlUmVmIHN0b3JhZ2UpCiB7Cisj
aWYgVVNFKENGTkVUV09SSykKICAgICBzZXRDdXJyZW50Q29va2llU3RvcmFnZShzdG9yYWdlKTsK
ICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJu
IEVfRkFJTDsKKyNlbmRpZgogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAJKHJldmlzaW9uIDM5Mjk2KQor
KysgV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEyICsz
OCwxNiBAQAogI2luY2x1ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIKICNpbmNsdWRlICJXZWJVUkxS
ZXNwb25zZS5oIgogCisjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+CisKICNpbmNsdWRlIDxpby5o
PgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKICNwcmFn
bWEgd2FybmluZyhwdXNoLCAwKQorI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNGLmg+CisjZW5kaWYKICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CkBAIC01NSw2ICs1OSw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCisjaWYgVVNFKENGTkVUV09SSykKIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tz
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIHN0YXRpYyB2b2lkIGRpZFN0YXJ0Q2FsbGJhY2soQ0ZVUkxEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVm
IHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrKENGVVJMRG93bmxvYWRSZWYgZG93bmxvYWQsIENGVVJM
UmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIHJlZGlyZWN0aW9uUmVzcG9uc2Us
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtNzQsNiArNzksNyBAQCBzdGF0aWMgVUludDMy
IEJ1bmRsZU1hZ2ljTnVtYmVyID0gMHhERUNBCiAKIHN0YXRpYyBDRkRhdGFSZWYgZXh0cmFjdFJl
c3VtZURhdGFGcm9tQnVuZGxlKGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7CiBzdGF0aWMgSFJF
U1VMVCBhcHBlbmRSZXN1bWVEYXRhVG9CdW5kbGUoQ0ZEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0
IFN0cmluZyYgYnVuZGxlUGF0aCk7CisjZW5kaWYKIAogLy8gV2ViRG93bmxvYWQgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CkBAIC04Niw2ICs5Miw3IEBAIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiAKIHZvaWQgV2Vi
RG93bmxvYWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgSVdlYkRvd25s
b2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgbV9kZWxl
Z2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6c2hh
cmVkSW5zdGFuY2UoKTsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYgY29ubmVjdGlvbiA9IGhhbmRs
ZS0+Y29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbikgewpAQCAtMTEzLDEwICsxMjAs
MTIgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhhbmRsZSogaAogICAgIC8vIEVp
dGhlciB3YXksIHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUgY29ubmVjdGlvbiB0byBiYWxhbmNlIG91
dCByZWYgY291bnRzCiAgICAgaGFuZGxlLT5yZWxlYXNlQ29ubmVjdGlvbkZvckRvd25sb2FkKCk7
CiAgICAgQ0ZSZWxlYXNlKGNvbm5lY3Rpb24pOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRG93bmxv
YWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUp
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGUgPyBkZWxl
Z2F0ZSA6IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpOwogICAgIExP
R19FUlJPUigiRGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsKIApAQCAtMTMzLDYg
KzE0Miw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoY29uc3QgS1VSTCYgdXJsLCAKICAgICBD
RlVSTERvd25sb2FkU2NoZWR1bGVEb3dubG9hZFdpdGhSdW5Mb29wKG1fZG93bmxvYWQuZ2V0KCks
IFJlc291cmNlSGFuZGxlOjpsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7
CiAKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIEluaXRpYWxpemVkIGRvd25sb2Fk
IG9mIHVybCAlcyBpbiBXZWJEb3dubG9hZCAlcCIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
LCB0aGlzKTsKKyNlbmRpZgogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTIw
Niw2ICsyMTYsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppCiAg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIAogICAgICAgICAvKiBb
aW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRX
T1JLKQogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gd2ViUmVxdWVzdDsKICAgICBp
ZiAoIXJlcXVlc3QgfHwgRkFJTEVEKHJlcXVlc3QtPlF1ZXJ5SW50ZXJmYWNlKCZ3ZWJSZXF1ZXN0
KSkpIHsKICAgICAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVl
c3QgZmFpbGVkIC0gbm90IGEgV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsgICAgCkBAIC0yMzcsMTIg
KzI0OCwxNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppCiAKICAg
ICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIGluaXRXaXRoUmVxdWVzdCBjb21wbGV0ZSwg
c3RhcnRlZCBkb3dubG9hZCBvZiB1cmwgJXMiLCB3ZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3Qo
KS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNl
CisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVu
ZGxlKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgYnVuZGxlUGF0aCwgCiAgICAgICAgIC8qIFtp
bl0gKi8gSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgTE9HKERvd25sb2FkLCAiQXR0ZW1wdGluZyByZXN1bWUgb2YgZG93bmxvYWQgYnVu
ZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkuYXNj
aWkoKS5kYXRhKCkpOwogCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcmVzdW1lRGF0YShBZG9w
dENGLCBleHRyYWN0UmVzdW1lRGF0YUZyb21CdW5kbGUoU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0
cmluZ0xlbihidW5kbGVQYXRoKSkpKTsKQEAgLTI4Myw2ICsyOTksMTAgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93
bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHJlc3VtZWQgZG93bmxvYWQgb2YgYnVu
ZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSkuYXNj
aWkoKS5kYXRhKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVk
KCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViRG93bmxvYWQ6OmNhblJlc3VtZURvd25sb2FkRGVjb2RlZFdpdGhFbmNvZGluZ01J
TUVUeXBlKApAQCAtMjk1LDYgKzMxNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OmMKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c3Rh
cnQoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBTdGFydGluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX2Rvd25sb2Fk
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMzA1LDEwICszMjYsMTUgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cwogICAgIGRpZFN0YXJ0KCk7CiAKICAgICBy
ZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJ
TDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpj
YW5jZWwoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93
bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBpZiAoIW1fZG93
bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0zMTYsMTAgKzM0MiwxNSBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgQ0ZVUkxEb3dubG9hZENh
bmNlbChtX2Rvd25sb2FkLmdldCgpKTsKICAgICBtX2Rvd25sb2FkID0gMDsKICAgICByZXR1cm4g
U19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNl
bmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWxG
b3JSZXN1bWUoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2Vi
RG93bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCksIHdyaXRpbmcgcmVzdW1lIGluZm9y
bWF0aW9uIHRvIGZpbGUgaWYgcG9zc2libGUiLCB0aGlzKTsKICAgICBBU1NFUlQobV9kb3dubG9h
ZCk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQpAQCAtMzQ2LDIxICszNzcsMzEgQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YwogZXhpdDoKICAgICBtX2Rvd25sb2FkID0g
MDsKICAgICByZXR1cm4gaHI7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVy
biBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3du
bG9hZDo6ZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgKICAgICAgICAgLyogW291dCwgcmV0dmFsXSAq
LyBCT09MKiByZXN1bHQpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAoIW1fZG93bmxv
YWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgKnJlc3VsdCA9IENGVVJMRG93bmxvYWRE
ZWxldGVzVXBvbkZhaWx1cmUobV9kb3dubG9hZC5nZXQoKSk7CiAgICAgcmV0dXJuIFNfT0s7Cisj
ZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0K
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6YnVuZGxlUGF0aEZvclRh
cmdldFBhdGgoCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0YXJnZXRQYXRoLCAKICAgICAgICAg
LyogW291dCwgcmV0dmFsXSAqLyBCU1RSKiBidW5kbGVQYXRoKQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgaWYgKCF0YXJnZXRQYXRoKQogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwog
CkBAIC0zNzYsNiArNDE3LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OmIKICAgICBpZiAoISpidW5kbGVQYXRoKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAg
IHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9G
QUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6
OnJlcXVlc3QoCkBAIC0zOTIsMTYgKzQzNywyMiBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkRvd25sb2FkOjpyCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpz
ZXREZWxldGVzRmlsZVVwb25GYWlsdXJlKAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVsZXRl
c0ZpbGVVcG9uRmFpbHVyZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3du
bG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBDRlVSTERvd25sb2FkU2V0RGVsZXRl
c1Vwb25GYWlsdXJlKG1fZG93bmxvYWQuZ2V0KCksICEhZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSk7
CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVy
biBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3du
bG9hZDo6c2V0RGVzdGluYXRpb24oCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwYXRoLCAKICAg
ICAgICAgLyogW2luXSAqLyBCT09MIGFsbG93T3ZlcndyaXRlKQogeworI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC00
MTUsNiArNDY2LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMK
ICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFNldCBkZXN0aW5hdGlvbiB0byAlcyIs
IG1fYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsKKyNlbHNl
CisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiAv
LyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDIy
LDYgKzQ3Nyw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSopCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBpZiAobV9kb3dubG9hZCkgewogICAg
ICAgICBDRlVSTERvd25sb2FkQ2FuY2VsKG1fZG93bmxvYWQuZ2V0KCkpOwogICAgICAgICBtX2Rv
d25sb2FkID0gMDsKQEAgLTQzMywxMSArNDg5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRG93bmxvYWQ6OmMKICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9yKHRoaXMs
IHdlYkVycm9yLmdldCgpKTsKIAogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxl
bWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENP
TVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBj
aGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9OT0lO
VEVSRkFDRTsKQEAgLTQ0NSwxMiArNTA2LDE3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRG93bmxvYWQ6OmMKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3dubG9h
ZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgMCwgd2ViQ2hhbGxlbmdlLT5hdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpLmNmVVJMQXV0aENoYWxsZW5nZVJlZigpKTsKICAgICByZXR1cm4g
U19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNl
bmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjp1c2VDcmVk
ZW50aWFsKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFs
LCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNo
YWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlm
ICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKQEAgLTQ2NCw4
ICs1MzAsMTMgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6dQogICAg
IGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERvd25sb2FkVXNlQ3JlZGVudGlhbChtX2Rv
d25sb2FkLmdldCgpLCBjZkNyZWRlbnRpYWwuZ2V0KCksIHdlYkNoYWxsZW5nZS0+YXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VSZWYoKSk7CiAgICAgcmV0dXJuIFNf
T0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5k
aWYKIH0KIAorI2lmIFVTRShDRk5FVFdPUkspCiAvLyBDRlVSTERvd25sb2FkIENhbGxiYWNrcyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiB2b2lkIFdlYkRvd25sb2FkOjpkaWRTdGFydCgpCiB7CkBAIC03OTgsMyArODY5
LDQgQEAgZXhpdDoKICAgICBmY2xvc2UoYnVuZGxlKTsKICAgICByZXR1cm4gaHI7CiB9CisjZW5k
aWYKSW5kZXg6IFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYkRvd25sb2FkLmgJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViS2l0L3dpbi9XZWJEb3du
bG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiArMTA0LDcgQEAgcHVibGljOgogICAgICAg
ICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKICAgICAgICAgLyog
W2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSk7CiAKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIENGVVJMRG93bmxvYWQgQ2FsbGJhY2tzCiAgICAgdm9p
ZCBkaWRTdGFydCgpOwogICAgIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxS
ZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKTsKQEAgLTExNiwxMyArMTE3LDE2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKENGVVJMUmVmKTsKICAgICB2b2lkIGRp
ZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChDRkVycm9yUmVmKTsKKyNlbmRpZgogCiBwcm90
ZWN0ZWQ6CiAgICAgVUxPTkcgbV9yZWZDb3VudDsKIAogICAgIFdlYkNvcmU6OlN0cmluZyBtX2Rl
c3RpbmF0aW9uOwogICAgIFdlYkNvcmU6OlN0cmluZyBtX2J1bmRsZVBhdGg7CisjaWYgVVNFKENG
TkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxEb3dubG9hZFJlZj4gbV9kb3dubG9hZDsKKyNl
bmRpZgogICAgIENPTVB0cjxJV2ViTXV0YWJsZVVSTFJlcXVlc3Q+IG1fcmVxdWVzdDsKICAgICBD
T01QdHI8SVdlYkRvd25sb2FkRGVsZWdhdGU+IG1fZGVsZWdhdGU7CiAKSW5kZXg6IFdlYktpdC93
aW4vV2ViRXJyb3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRXJyb3IuY3BwCShy
ZXZpc2lvbiAzOTI5NikKKysrIFdlYktpdC93aW4vV2ViRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjcHJhZ21h
IHdhcm5pbmcocG9wKQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBFTkFCTEUoU0FGQVJJX0lO
VEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CiAjZW5kaWYKIApJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDExICs5OCwxMyBAQAog
CiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogCisjaWYgUExBVEZPUk0o
Q0cpCiAvLyBDRyBTUEkgdXNlZCBmb3IgcHJpbnRpbmcKIGV4dGVybiAiQyIgewogICAgIENHQWZm
aW5lVHJhbnNmb3JtIENHQ29udGV4dEdldEJhc2VDVE0oQ0dDb250ZXh0UmVmIGMpOyAKICAgICB2
b2lkIENHQ29udGV4dFNldEJhc2VDVE0oQ0dDb250ZXh0UmVmIGMsIENHQWZmaW5lVHJhbnNmb3Jt
IG0pOyAKIH0KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CkBAIC0xODEzLDYgKzE4MTUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAgaGVhZGVyQW5kRm9vdGVySGVpZ2h0cygmaGVhZGVy
SGVpZ2h0LCAmZm9vdGVySGVpZ2h0KTsKICAgICBHcmFwaGljc0NvbnRleHQgc3Bvb2xDdHgocGN0
eCk7CiAKKyNpZiBQTEFURk9STShDRykKICAgICBmb3IgKFVJTlQgaWkgPSBzdGFydFBhZ2U7IGlp
IDwgZW5kUGFnZTsgaWkrKykgewogICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0ID0gbV9wYWdlUmVj
dHNbaWldOwogCkBAIC0xODU2LDYgKzE4NTksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkZyYW1lOjpzcG9vCiAgICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7CiAgICAgICAg
IENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAgCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkocmV2aXNpb24gMzkyOTYpCisr
KyBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsMTAg
KzQyLDE0IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdHJpbmdUcnVuY2F0b3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1dlYkNvcmVUZXh0UmVuZGVyZXIuaD4KIAorI2lmIFBMQVRGT1JNKENHKQogI2lu
Y2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNlbmRpZgogI3ByYWdtYSB3YXJu
aW5nKHBvcCkKIAorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODEsMTIgKzg1LDIwIEBAIHN0YXRpYyBGb250IG1h
a2VGb250KGNvbnN0IFdlYkZvbnREZXNjcmkKIHN0cnVjdCBXZWJUZXh0UmVuZGVySW5mb1dpdGhv
dXRTaGFkb3cKIHsKICAgICBEV09SRCBzdHJ1Y3RTaXplOworI2lmIFBMQVRGT1JNKENHKQogICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQ7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBDYWly
b0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VuZGlmCiAgICAgTFBDVFNUUiB0ZXh0OwogICAgIGlu
dCBsZW5ndGg7CiAgICAgUE9JTlQgcHQ7CiAgICAgY29uc3QgV2ViRm9udERlc2NyaXB0aW9uKiBk
ZXNjcmlwdGlvbjsKKyNpZiBQTEFURk9STShDRykKICAgICBDR0NvbG9yUmVmIGNvbG9yOworI2Vs
aWYgUExBVEZPUk0oQ0FJUk8pCisgICAgdW5zaWduZWQgY29sb3I7ICAgICAgICAvLyBSR0JBIHF1
YWRydXBsZXQKKyNlbmRpZgogICAgIGludCB1bmRlcmxpbmVkSW5kZXg7CiAgICAgYm9vbCBkcmF3
QXNQYXNzd29yZDsKICAgICBpbnQgb3ZlcnJpZGVTbW9vdGhpbmdMZXZlbDsgLy8gcGFzcyBpbiAt
MSBpZiBjYWxsZXIgZG9lcyBub3Qgd2FudCB0byBvdmVycmlkZSBzbW9vdGhpbmcgbGV2ZWwKQEAg
LTk5LDggKzExMSwxMCBAQCB2b2lkIFdlYkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKiBpbmZv
CiAKICAgICBpbnQgb2xkRm9udFNtb290aGluZ0xldmVsID0gLTE7CiAgICAgaWYgKGluZm8tPm92
ZXJyaWRlU21vb3RoaW5nTGV2ZWwgPj0gMCkgeworI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNF
KQogICAgICAgICBvbGRGb250U21vb3RoaW5nTGV2ZWwgPSB3a0dldEZvbnRTbW9vdGhpbmdMZXZl
bCgpOwogICAgICAgICB3a1NldEZvbnRTbW9vdGhpbmdMZXZlbChpbmZvLT5vdmVycmlkZVNtb290
aGluZ0xldmVsKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHsKQEAgLTExMywxNSArMTI3LDIxIEBA
IHZvaWQgV2ViRHJhd1RleHQoV2ViVGV4dFJlbmRlckluZm8qIGluZm8KIAogICAgICAgICAvLyBT
ZXQgc2hhZG93IHNldHRpbmcKICAgICAgICAgaWYgKGluZm8tPnN0cnVjdFNpemUgPT0gc2l6ZW9m
KFdlYlRleHRSZW5kZXJJbmZvKSAmJgorI2lmIFBMQVRGT1JNKENHKQogICAgICAgICAgICAgKGlu
Zm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kgfHwgaW5mby0+c2hh
ZG93Qmx1ciB8fCBpbmZvLT5zaGFkb3dDb2xvcikpCisjZWxpZiBQTEFURk9STShDQUlSTykKKyAg
ICAgICAgICAgIChpbmZvLT5zaGFkb3dPZmZzZXQuY3ggfHwgaW5mby0+c2hhZG93T2Zmc2V0LmN5
IHx8IGluZm8tPnNoYWRvd0JsdXIpKQorI2VuZGlmCiAgICAgICAgICAgICBjb250ZXh0LnNldFNo
YWRvdyhpbmZvLT5zaGFkb3dPZmZzZXQsIGluZm8tPnNoYWRvd0JsdXIsIGluZm8tPnNoYWRvd0Nv
bG9yKTsKIAogICAgICAgICBXZWJDb3JlRHJhd1RleHRBdFBvaW50KGNvbnRleHQsIGRyYXdTdHJp
bmcsIGluZm8tPnB0LCBtYWtlRm9udCgqKGluZm8tPmRlc2NyaXB0aW9uKSksIGluZm8tPmNvbG9y
LCBpbmZvLT51bmRlcmxpbmVkSW5kZXgpOwogICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICBpZiAoaW5mby0+b3ZlcnJp
ZGVTbW9vdGhpbmdMZXZlbCA+PSAwKQogICAgICAgICB3a1NldEZvbnRTbW9vdGhpbmdMZXZlbChv
bGRGb250U21vb3RoaW5nTGV2ZWwpOworI2VuZGlmCiB9CiAKIGZsb2F0IFRleHRGbG9hdFdpZHRo
KExQQ1RTVFIgdGV4dCwgaW50IGxlbmd0aCwgY29uc3QgV2ViRm9udERlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbikKSW5kZXg6IFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmgJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViS2l0
L3dpbi9XZWJLaXRHcmFwaGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw4ICszMCwxMyBAQAog
CiBleHRlcm4gIkMiIHsKIAorI2lmIFBMQVRGT1JNKENHKQogdHlwZWRlZiBzdHJ1Y3QgQ0dDb2xv
ciogQ0dDb2xvclJlZjsKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCogQ0dDb250ZXh0UmVmOwor
I2VsaWYgUExBVEZPUk0oQ0FJUk8pCit0eXBlZGVmIHVuc2lnbmVkIENvbG9yUmVmOyAgICAgICAg
Ly8gUkdCQSBxdWFkcnVwbGV0Cit0eXBlZGVmIHN0cnVjdCBfY2Fpcm8qIENhaXJvQ29udGV4dFJl
ZjsKKyNlbmRpZgogCiB0eXBlZGVmIHdjaGFyX3QgV0NIQVI7CiB0eXBlZGVmIF9fbnVsbHRlcm1p
bmF0ZWQgY29uc3QgV0NIQVIqIExQQ1dTVFI7CkBAIC00OSwxOCArNTQsMzAgQEAgc3RydWN0IFdl
YkZvbnREZXNjcmlwdGlvbiB7CiBzdHJ1Y3QgV2ViVGV4dFJlbmRlckluZm8KIHsKICAgICBEV09S
RCBzdHJ1Y3RTaXplOworI2lmIFBMQVRGT1JNKENHKQogICAgIENHQ29udGV4dFJlZiBjZ0NvbnRl
eHQ7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBDYWlyb0NvbnRleHRSZWYgY2dDb250ZXh0
OworI2VuZGlmCiAgICAgTFBDVFNUUiB0ZXh0OwogICAgIGludCBsZW5ndGg7CiAgICAgUE9JTlQg
cHQ7CiAgICAgY29uc3QgV2ViRm9udERlc2NyaXB0aW9uKiBkZXNjcmlwdGlvbjsKKyNpZiBQTEFU
Rk9STShDRykKICAgICBDR0NvbG9yUmVmIGNvbG9yOworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisg
ICAgQ29sb3JSZWYgY29sb3I7CisjZW5kaWYKICAgICBpbnQgdW5kZXJsaW5lZEluZGV4OwogICAg
IGJvb2wgZHJhd0FzUGFzc3dvcmQ7CiAgICAgaW50IG92ZXJyaWRlU21vb3RoaW5nTGV2ZWw7IC8v
IHBhc3MgaW4gLTEgaWYgY2FsbGVyIGRvZXMgbm90IHdhbnQgdG8gb3ZlcnJpZGUgc21vb3RoaW5n
IGxldmVsCiAgICAgU0laRSBzaGFkb3dPZmZzZXQ7CiAgICAgaW50IHNoYWRvd0JsdXI7CisjaWYg
UExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJlZiBzaGFkb3dDb2xvcjsKKyNlbGlmIFBMQVRGT1JN
KENBSVJPKQorICAgIENvbG9yUmVmIHNoYWRvd0NvbG9yOworI2VuZGlmCiB9OwogCiB2b2lkIFdl
YkRyYXdUZXh0KFdlYlRleHRSZW5kZXJJbmZvKik7CkluZGV4OiBXZWJLaXQvd2luL1dlYk11dGFi
bGVVUkxSZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYk11dGFibGVVUkxS
ZXF1ZXN0LmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJLaXQvd2luL1dlYk11dGFibGVVUkxS
ZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNwcmFnbWEgd2FybmluZyhwb3ApCiAKKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBJV2Vi
VVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNjcsOSArMzY5LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViTXV0YWJsZVVSTFIKIHsKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0
dXJuIEVfUE9JTlRFUjsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFpblB0cjxDRk11dGFi
bGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVh
dGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3JlcXVlc3QuY2ZVUkxSZXF1ZXN0
KCkpKTsKICAgICAqcmVzdWx0ID0gY3JlYXRlSW5zdGFuY2UoUmVzb3VyY2VSZXF1ZXN0KG11dGFi
bGVSZXF1ZXN0LmdldCgpKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIHJldHVybiBF
X05PVElNUEw7CisjZW5kaWYKIH0KIAogLy8gSVdlYk11dGFibGVVUkxSZXF1ZXN0IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFdlYktp
dC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYktpdC93aW4vV2ViUHJlZmVyZW5j
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw5IEBACiAjaW5jbHVkZSA8c2hsb2Jq
Lmg+CiAjaW5jbHVkZSA8c2hmb2xkZXIuaD4KICNpbmNsdWRlIDx0Y2hhci5oPgorI2lmIEVOQUJM
RShTQUZBUklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL093bkFycmF5UHRyLmg+CiAKQEAgLTk2Niw3ICs5NjgsOSBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzCiAgICAgc2V0SW50ZWdlclZhbHVlKENG
U1RSKFdlYktpdEZvbnRTbW9vdGhpbmdUeXBlUHJlZmVyZW5jZUtleSksIHNtb290aGluZ1R5cGUp
OwogICAgIGlmIChzbW9vdGhpbmdUeXBlID09IEZvbnRTbW9vdGhpbmdUeXBlV2luZG93cykKICAg
ICAgICAgc21vb3RoaW5nVHlwZSA9IEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRhcmQ7CisjaWYgRU5B
QkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAgICAgd2tTZXRGb250U21vb3RoaW5nTGV2ZWwoKGludClz
bW9vdGhpbmdUeXBlKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQogCkluZGV4OiBXZWJL
aXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJU
ZXh0UmVuZGVyZXIuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYktpdC93aW4vV2ViVGV4dFJl
bmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsOSBAQAogI2luY2x1ZGUgIldl
YktpdERMTC5oIgogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZTdHJpbmcuaD4KKyNpZiBF
TkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uv
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CiAKIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRlcmVyOjpjcmVhdGVJbnN0YW5jZSgp
CkBAIC05MCw2ICs5Miw4IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVGV4dFJlbmRl
cmUKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
c3RyaW5nKEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oZm9udEZpbGVQYXRoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRl
eD4od2NzbGVuKGZvbnRGaWxlUGF0aCkpKSk7CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0Up
CiAgICAgd2tBZGRGb250c0F0UGF0aChzdHJpbmcuZ2V0KCkpOworI2VuZGlmCiAgICAgcmV0dXJu
IFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDkgKzE0OSwxMCBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpCiAKICAgICAvLyBGSVhNRTogQWZ0
ZXIgd2UgY2hhbmdlIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIHRvIHVzZSAiUmVzb3VyY2VIYW5k
bGUiIGFzIHRoZSBhYnN0cmFjdCAiU2VuZGVyIiBvciAiU291cmNlIG9mIHRoaXMgQXV0aCBDaGFs
bGVuZ2UiLCB0aGVuIHdlJ2xsCiAgICAgLy8gY29uc3RydWN0IHRoZSBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSB3aXRoIHRoYXQgYXMgb2J0YWluZWQgZnJvbSB0aGUgd2ViU2VuZGVyCi0KKyNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIG1fYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSh3ZWJTcGFjZS0+cHJvdGVjdGlvblNwYWNlKCksIHdlYkNyZWRlbnRpYWwt
PmNyZWRlbnRpYWwoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZp
b3VzRmFpbHVyZUNvdW50LCB3ZWJSZXNwb25zZS0+cmVzb3VyY2VSZXNwb25zZSgpLCB3ZWJFcnJv
ci0+cmVzb3VyY2VFcnJvcigpKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQogCkluZGV4
OiBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmNwcAkocmV2aXNpb24gMzkyOTYpCisrKyBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmgiCiAKICNpbmNsdWRl
ICJDT01QdHIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYktp
dC5oIgogI2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMQ3JlZGVudGlhbC5oIgpAQCAtMTAwLDI5ICsxMDEsNDAgQEAgVUxPTkcgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsK
ICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIG1f
aGFuZGxlLT5yZWNlaXZlZENhbmNlbGxhdGlvbih3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y29udGludWVXaXRo
b3V0Q3JlZGVudGlhbEZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5d
ICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxlbmdlKQogeworI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3
ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBtX2hhbmRsZS0+cmVjZWl2ZWRSZXF1ZXN0VG9D
b250aW51ZVdpdGhvdXRDcmVkZW50aWFsKHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp1c2VDcmVkZW50aWFsKAog
ICAgICAgICAvKiBbaW5dICovIElXZWJVUkxDcmVkZW50aWFsKiBjcmVkZW50aWFsLCAKICAgICAg
ICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkK
IHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hh
bGxlbmdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMTMzLDYgKzE0NSwxMCBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpCiAKICAgICBtX2hhbmRsZS0+cmVj
ZWl2ZWRDcmVkZW50aWFsKHdlYkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSwg
d2ViQ3JlZGVudGlhbC0+Y3JlZGVudGlhbCgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIC8v
IFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFdlYktp
dC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVVJM
UmVzcG9uc2UuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYktpdC93aW4vV2ViVVJMUmVzcG9u
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMywxMCBAQAogI2luY2x1ZGUgIk1hcnNo
YWxsaW5nSGVscGVycy5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgogCisj
aWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvcGxh
dGZvcm0uaD4KICNwcmFnbWEgd2FybmluZyggcHVzaCwgMCApCiAjaW5jbHVkZSA8V2ViQ29yZS9C
U3RyaW5nLmg+CkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDM5Mjk2KQorKysgV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDEwICsxMDMsMTggQEAKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZS5oPgorCisj
aWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4K
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4KKyNlbmRpZgorCiAjaW5j
bHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKworI2lmIEVOQUJMRShTQUZB
UklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0
ZW1JbnRlcmZhY2UuaD4gCisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5j
bHVkZSA8ZGltbS5oPgogI2luY2x1ZGUgPG9sZWFjYy5oPgpAQCAtMTI1LDYgKzEzMyw3IEBAIHN0
YXRpYyBIYXNoU2V0PFdlYlZpZXcqPiBwZW5kaW5nRGVsZXRlQmEKIHN0YXRpYyBTdHJpbmcgb3NW
ZXJzaW9uKCk7CiBzdGF0aWMgU3RyaW5nIHdlYktpdFZlcnNpb24oKTsKIAorI2lmIFVTRShDRk5F
VFdPUkspCiB0eXBlZGVmIENGVVJMQ2FjaGVSZWYgKCpDb3B5U2hhcmVkVVJMQ2FjaGVGdW5jdGlv
bikoKTsKIAogc3RhdGljIEhNT0RVTEUgZmluZENGTmV0d29ya01vZHVsZSgpCkBAIC0xMzgsNiAr
MTQ3LDcgQEAgc3RhdGljIENvcHlTaGFyZWRVUkxDYWNoZUZ1bmN0aW9uIGZpbmRDbwogewogICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PENvcHlTaGFyZWRVUkxDYWNoZUZ1bmN0aW9uPihHZXRQ
cm9jQWRkcmVzcyhmaW5kQ0ZOZXR3b3JrTW9kdWxlKCksICJDRlVSTENhY2hlQ29weVNoYXJlZFVS
TENhY2hlIikpOwogfQorI2VuZGlmCiAKIFdlYlZpZXcqIGtpdChQYWdlKiBwYWdlKQogewpAQCAt
MzgxLDYgKzM5MSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUK
ICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVsICYmIGNhY2hlTW9kZWwgPT0gc19jYWNoZU1vZGVs
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIC8vIE9uY2Ugd2Ug
cmVxdWlyZSBhIG5ld2VyIHZlcnNpb24gb2YgQ0ZOZXR3b3JrIHdpdGggdGhlIENGVVJMQ2FjaGVD
b3B5U2hhcmVkVVJMQ2FjaGUgZnVuY3Rpb24sCiAgICAgLy8gd2UgY2FuIGNhbGwgQ0ZVUkxDYWNo
ZUNvcHlTaGFyZWRVUkxDYWNoZSBkaXJlY3RseSBhbmQgZWxpbWluYXRlIGNvcHlTaGFyZWRVUkxD
YWNoZS4KICAgICBzdGF0aWMgQ29weVNoYXJlZFVSTENhY2hlRnVuY3Rpb24gY29weVNoYXJlZFVS
TENhY2hlID0gZmluZENvcHlTaGFyZWRVUkxDYWNoZUZ1bmN0aW9uKCk7CkBAIC01NjEsNiArNTcy
LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIHNfZGlk
U2V0Q2FjaGVNb2RlbCA9IHRydWU7CiAgICAgc19jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKICAg
ICByZXR1cm47CisjZW5kaWYKIH0KIAogV2ViQ2FjaGVNb2RlbCBXZWJWaWV3OjpjYWNoZU1vZGVs
KCkKQEAgLTQyMzIsOSArNDI0NCwxMSBAQCBIUkVTVUxUIHVwZGF0ZVNoYXJlZFNldHRpbmdzRnJv
bVByZWZlcmVuCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKIAorI2lm
IFVTRShDRk5FVFdPUkspCiAgICAgLy8gU2V0IGNvb2tpZSBzdG9yYWdlIGFjY2VwdCBwb2xpY3kK
ICAgICBpZiAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlID0gY3VycmVudENv
b2tpZVN0b3JhZ2UoKSkKICAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2Vw
dFBvbGljeShjb29raWVTdG9yYWdlLCBhY2NlcHRQb2xpY3kpOworI2VuZGlmCiAKICAgICByZXR1
cm4gU19PSzsKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAzOTI5NikKKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ09NUHJvcGVydHlCYWcuaCIKICNpbmNsdWRlICJFbWJl
ZGRlZFdpZGdldC5oIgogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5oIgorI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVkUGFnZVBsYXRmb3JtRGF0YS5o
IgogI2luY2x1ZGUgIldlYkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50TG9h
ZGVyLmgiCkBAIC0xMDUsNiArMTA2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YXNz
aWduSWRlbnRpZgogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVu
Z2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXJjZUhh
bmRsZSgpKTsKIAogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7
CkBAIC0xMTgsNiArMTIwLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZQogICAgIC8vIElmIHRoZSBSZXNvdXJjZUxvYWREZWxlZ2F0ZSBkb2Vzbid0IGV4aXN0IG9y
IGZhaWxzIHRvIGhhbmRsZSB0aGUgY2FsbCwgd2UgdGVsbCB0aGUgUmVzb3VyY2VIYW5kbGUKICAg
ICAvLyB0byBjb250aW51ZSB3aXRob3V0IGNyZWRlbnRpYWwgLSB0aGlzIGlzIHRoZSBiZXN0IGFw
cHJveGltYXRpb24gb2YgTWFjIGJlaGF2aW9yCiAgICAgY2hhbGxlbmdlLnNvdXJjZUhhbmRsZSgp
LT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY2hhbGxlbmdlKTsK
KyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQpAQCAtNDcyLDEwICs0NzcsMTIgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2F2ZVBsYXRmb3JtRAogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICBB
U1NFUlQoY29yZUZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBjYWNoZWRQYWdl
LT5kb2N1bWVudExvYWRlcigpKTsKIAogICAgIFdlYkNhY2hlZFBhZ2VQbGF0Zm9ybURhdGEqIHdl
YlBsYXRmb3JtRGF0YSA9IG5ldyBXZWJDYWNoZWRQYWdlUGxhdGZvcm1EYXRhKHN0YXRpY19jYXN0
PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpKSkpOwogICAgIGNhY2hlZFBhZ2UtPnNldENhY2hlZFBhZ2VQbGF0Zm9y
bURhdGEod2ViUGxhdGZvcm1EYXRhKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26111</attachid>
            <date>2008-12-17 21:06:07 -0800</date>
            <delta_ts>2009-01-05 18:07:00 -0800</delta_ts>
            <desc>Update Against ToT (2008-12-18)</desc>
            <filename>17484.patch</filename>
            <type>text/plain</type>
            <size>30867</size>
            <attacher name="Mital Vora">mital.d.vora</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDM5MzY4KQ0KKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpDQpAQCAtMTM0LDYgKzEzNCw3IEBA
DQogI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NHIDEKICNkZWZpbmUg
V1RGX1BMQVRGT1JNX0NJIDEKKyNkZWZpbmUgRU5BQkxFX1NBRkFSSV9JTlRFUkZBQ0UgMQogI2Vu
ZGlmCiAKIC8qIFBMQVRGT1JNKFNLSUEpIGZvciBXaW4vTGludXgsIENHL0NJIGZvciBNYWMgKi8K
QEAgLTE1MSw2ICsxNTIsNyBAQA0KIC8qIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGZy
b20gYSBibGFja2xpc3QgdG8gYSB3aGl0ZWxpc3QgKi8KICNpZiAhUExBVEZPUk0oTUFDKSAmJiAh
UExBVEZPUk0oUVQpICYmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2Rl
ZmluZSBXVEZfUExBVEZPUk1fQ0FJUk8gMQorI3VuZGVmIEVOQUJMRV9WSURFTwogI2VuZGlmCiAK
IC8qIENQVSAqLwpAQCAtMjY3LDggKzI2OSwxMCBAQA0KICNlbmRpZgogCiAjaWYgKFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oV0lOKSkgJiYgIWRlZmluZWQoRU5BQkxFX0pTQ19NVUxUSVBMRV9U
SFJFQURTKQorI2lmICghUExBVEZPUk0oQ0FJUk8pKQogI2RlZmluZSBFTkFCTEVfSlNDX01VTFRJ
UExFX1RIUkVBRFMgMQogI2VuZGlmCisjZW5kaWYKIAogLyogZm9yIFVuaWNvZGUsIEtERSB1c2Vz
IFF0ICovCiAjaWYgUExBVEZPUk0oS0RFKSB8fCBQTEFURk9STShRVCkKQEAgLTMwMyw2ICszMDcs
NyBAQA0KIAogI2lmIFBMQVRGT1JNKFdJTikKICNkZWZpbmUgV1RGX1VTRV9XSU5JTkVUIDEKKy8q
ICNkZWZpbmUgV1RGX1VTRV9DVVJMIDEgKi8KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV1gpCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZh
U2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHJldmlzaW9uIDM5MzY4KQ0KKysrIEphdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkod29ya2luZyBjb3B5KQ0KQEAgLTExOSw2ICsxMTksNyBA
QA0KICNpZiBVU0UoUFRIUkVBRFMpCiB0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBQbGF0Zm9ybU11
dGV4OwogdHlwZWRlZiBwdGhyZWFkX2NvbmRfdCBQbGF0Zm9ybUNvbmRpdGlvbjsKK3R5cGVkZWYg
cHRocmVhZF9rZXlfdCBQbGF0Zm9ybVRocmVhZFN0b3JhZ2VLZXk7CiAjZWxpZiBQTEFURk9STShH
VEspCiB0eXBlZGVmIEdPd25QdHI8R011dGV4PiBQbGF0Zm9ybU11dGV4OwogdHlwZWRlZiBHT3du
UHRyPEdDb25kPiBQbGF0Zm9ybUNvbmRpdGlvbjsKQEAgLTEzOCw2ICsxMzksNyBAQA0KICAgICBI
QU5ETEUgbV9xdWV1ZTsKICAgICBIQU5ETEUgbV9tdXRleDsKIH07Cit0eXBlZGVmIERXT1JEIFBs
YXRmb3JtVGhyZWFkU3RvcmFnZUtleTsKICNlbHNlCiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtTXV0
ZXg7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29uZGl0aW9uOwpJbmRleDogV2ViQ29yZS9jb25m
aWcuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvY29uZmlnLmgJKHJldmlzaW9uIDM5MzY4KQ0K
KysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkNCkBAIC05MSw5ICs5MSwxNyBAQA0K
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQorI2lmIDAKICNkZWZpbmUgV1RGX1BMQVRGT1JN
X0NHIDEKICN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJUk8KICNkZWZpbmUgV1RGX1VTRV9DRk5FVFdP
UksgMQorI3VuZGVmIFdURl9VU0VfQ1VSTAorI2Vsc2UKKyN1bmRlZiBXVEZfUExBVEZPUk1fQ0cK
KyNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEKKyN1bmRlZiBXVEZfVVNFX0NGTkVUV09SSwor
I2RlZmluZSBXVEZfVVNFX0NVUkwgMQorI2VuZGlmCiAjdW5kZWYgV1RGX1VTRV9XSU5JTkVUCiAj
ZGVmaW5lIFdURl9QTEFURk9STV9DRiAxCiAjZGVmaW5lIFdURl9VU0VfUFRIUkVBRFMgMApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9idWlsZC1nZW5lcmF0ZWQtZmlsZXMuc2gNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5z
aAkocmV2aXNpb24gMzkzNjgpDQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9idWlsZC1nZW5l
cmF0ZWQtZmlsZXMuc2gJKHdvcmtpbmcgY29weSkNCkBAIC02NSw1ICs2NSw2IEBADQogY2QgIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcyIKIAogZXhwb3J0IFdlYkNvcmU9IiR7
WFNSQ1JPT1R9IgotZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJM
RV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBM
SUNBVElPTlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5B
QkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfQVNfSU1B
R0UgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJREVPIgorI2V4cG9ydCBG
RUFUVVJFX0RFRklORVM9IkVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxF
X0lDT05EQVRBQkFTRSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9YUEFU
SCBFTkFCTEVfU1ZHIEVOQUJMRV9TVkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfRk9OVFMgRU5BQkxF
X1NWR19GT1JFSUdOX09CSkVDVCBFTkFCTEVfU1ZHX0FTX0lNQUdFIEVOQUJMRV9TVkdfVVNFIEVO
QUJMRV9XTUwgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJREVPIgorZXhwb3J0IEZFQVRVUkVfREVG
SU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFC
QVNFIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9T
VkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1dPUktF
UlMiCiBtYWtlIC1mICIkV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIiAtaiAke05VTUNQVVN9
IHx8IGV4aXQgMQpJbmRleDogV2ViS2l0L3dpbi9XZWJBcmNoaXZlLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC93aW4vV2ViQXJjaGl2ZS5jcHAJKHJldmlzaW9uIDM5MzY4KQ0KKysrIFdlYktp
dC93aW4vV2ViQXJjaGl2ZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw3ICsyOSwxMCBAQA0K
IAogI2luY2x1ZGUgIkRPTUNvcmVDbGFzc2VzLmgiCiAjaW5jbHVkZSAiTWVtb3J5U3RyZWFtLmgi
CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2
ZS5oPgorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00Miw2ICs0NSw3
IEBADQogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KIAorI2lmIFVTRShDRk5FVFdPUkspCiBXZWJB
cmNoaXZlKiBXZWJBcmNoaXZlOjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+IGNvcmVBcmNoaXZlKQogewogICAgIFdlYkFyY2hpdmUqIGluc3RhbmNlID0gbmV3IFdl
YkFyY2hpdmUoY29yZUFyY2hpdmUpOwpAQCAtNTcsNiArNjEsMTMgQEANCiAgICAgZ0NsYXNzQ291
bnQrKzsKICAgICBnQ2xhc3NOYW1lQ291bnQuYWRkKCJXZWJBcmNoaXZlIik7CiB9CisjZWxzZQor
V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShpbnQgaWdub3JlKQorICAgIDogbV9yZWZDb3VudCgwKQor
eworICAgIGdDbGFzc0NvdW50Kys7Cit9CisjZW5kaWYKIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hp
dmUoKQogewpAQCAtMTE4LDcgKzEyOSw5IEBADQogICAgIGlmICghZG9tTm9kZSkKICAgICAgICAg
cmV0dXJuIEVfTk9JTlRFUkZBQ0U7CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIG1fYXJjaGl2
ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShkb21Ob2RlLT5ub2RlKCkpOworI2VuZGlmCiAg
ICAgCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0xNDQsNiArMTU3LDcgQEANCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkFyY2hpdmU6OmRhdGEoCiAgICAgICAgIC8qIFtvdXQsIHJldHZh
bF0gKi8gSVN0cmVhbSoqIHN0cmVhbSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IG1fYXJjaGl2ZS0+cmF3RGF0YVJlcHJlc2VudGF0aW9u
KCk7CiAgICAgaWYgKCFjZkRhdGEpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0xNTMsNCAr
MTY3LDcgQEANCiAgICAgKnN0cmVhbSA9IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoYnVm
ZmVyKTsKIAogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICByZXR1cm4gRV9OT1RJTVBMOwor
I2VuZGlmCiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYkFyY2hpdmUuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC93aW4vV2ViQXJjaGl2ZS5oCShyZXZpc2lvbiAzOTM2OCkNCisrKyBXZWJLaXQvd2lu
L1dlYkFyY2hpdmUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTI4LDIxICsyOCwyOSBAQA0KIAogI2lu
Y2x1ZGUgIldlYktpdC5oIgogCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIExlZ2FjeVdlYkFyY2hpdmU7CiB9CisjZW5kaWYKIAogY2xhc3MgV2ViQXJj
aGl2ZSA6IHB1YmxpYyBJV2ViQXJjaGl2ZQogewogcHVibGljOgogICAgIHN0YXRpYyBXZWJBcmNo
aXZlKiBjcmVhdGVJbnN0YW5jZSgpOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgc3RhdGljIFdl
YkFyY2hpdmUqIGNyZWF0ZUluc3RhbmNlKFBhc3NSZWZQdHI8V2ViQ29yZTo6TGVnYWN5V2ViQXJj
aGl2ZT4pOwogcHJvdGVjdGVkOgogICAgIFdlYkFyY2hpdmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpM
ZWdhY3lXZWJBcmNoaXZlPik7CiAgICAgfldlYkFyY2hpdmUoKTsKKyNlbHNlCisgICAgV2ViQXJj
aGl2ZShpbnQpOworcHJvdGVjdGVkOgorICAgIH5XZWJBcmNoaXZlKCk7CisjZW5kaWYKIAogcHVi
bGljOgogICAgIC8vIElVbmtub3duCkBAIC03OCw3ICs4Niw5IEBADQogCiBwcm90ZWN0ZWQ6CiAg
ICAgVUxPTkcgbV9yZWZDb3VudDsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIFJlZlB0cjxXZWJD
b3JlOjpMZWdhY3lXZWJBcmNoaXZlPiBtX2FyY2hpdmU7CisjZW5kaWYKIH07CiAKICNlbmRpZiAv
LyBXZWJBcmNoaXZlX2gKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29va2llTWFuYWdlci5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBXZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAz
OTM2OCkNCisrKyBXZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkp
DQpAQCAtMjcsOCArMjcsMTIgQEANCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAi
V2ViQ29va2llTWFuYWdlci5oIgogCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5l
dHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3Jh
Z2VXaW4uaD4KKyNlbGlmIFVTRShDVVJMKQorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
ZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM2LDkgKzQwLDEzIEBADQog
CiBXZWJDb29raWVNYW5hZ2VyKiBXZWJDb29raWVNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiB7
CisjaWYgVVNFKENGTkVUV09SSykKICAgICBXZWJDb29raWVNYW5hZ2VyKiBtYW5hZ2VyID0gbmV3
IFdlYkNvb2tpZU1hbmFnZXI7CiAgICAgbWFuYWdlci0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIG1h
bmFnZXI7ICAgIAorI2Vsc2UKKyAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFdlYkNvb2tpZU1h
bmFnZXI6OldlYkNvb2tpZU1hbmFnZXIoKQpAQCAtNTgsNiArNjYsNyBAQA0KIAogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpRdWVyeUludGVyZmFjZShSRUZJSUQg
cmlpZCwgdm9pZCoqIHBwdk9iamVjdCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgICpwcHZP
YmplY3QgPSAwOwogICAgIGlmIChJc0VxdWFsR1VJRChyaWlkLCBJSURfSVVua25vd24pKQogICAg
ICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29va2llTWFuYWdlcio+KHRoaXMpOwpA
QCAtNjgsNiArNzcsMTAgQEANCiAKICAgICBBZGRSZWYoKTsKICAgICByZXR1cm4gU19PSzsKKyNl
bHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQog
CiBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBXZWJDb29raWVNYW5hZ2VyOjpBZGRSZWYoKQpAQCAt
ODksMTYgKzEwMiwyNiBAQA0KIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFu
YWdlcjo6Y29va2llU3RvcmFnZSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBDRkhUVFBDb29r
aWVTdG9yYWdlUmVmKiBzdG9yYWdlKQogewotICAgIGlmICghc3RvcmFnZSkKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQorICAgaWYgKCFzdG9yYWdlKQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwogCiAg
ICAgKnN0b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpOwogICAgIHJldHVybiBTX09LOwor
I2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2ll
U3RvcmFnZSggCiAgICAgLyogW2luXSAqLyBDRkhUVFBDb29raWVTdG9yYWdlUmVmIHN0b3JhZ2Up
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBzZXRDdXJyZW50Q29va2llU3RvcmFnZShzdG9y
YWdlKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAg
cmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMzkzNjgpDQor
KysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC0zMyw2ICszMyw3IEBADQogI2luY2x1ZGUgIkNPTVByb3BlcnR5QmFn
LmgiCiAjaW5jbHVkZSAiRW1iZWRkZWRXaWRnZXQuaCIKICNpbmNsdWRlICJNYXJzaGFsbGluZ0hl
bHBlcnMuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldlYkNhY2hl
ZFBhZ2VQbGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJEb2N1bWVudExvYWRlci5oIgpAQCAtMTA1LDYgKzEwNiw3IEBADQogCiB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVU
V09SSykKICAgICBBU1NFUlQoY2hhbGxlbmdlLnNvdXJjZUhhbmRsZSgpKTsKIAogICAgIFdlYlZp
ZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkBAIC0xMTgsNiArMTIwLDkgQEAN
CiAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZERlbGVnYXRlIGRvZXNuJ3QgZXhpc3Qgb3IgZmFp
bHMgdG8gaGFuZGxlIHRoZSBjYWxsLCB3ZSB0ZWxsIHRoZSBSZXNvdXJjZUhhbmRsZQogICAgIC8v
IHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbCAtIHRoaXMgaXMgdGhlIGJlc3QgYXBwcm94
aW1hdGlvbiBvZiBNYWMgYmVoYXZpb3IKICAgICBjaGFsbGVuZ2Uuc291cmNlSGFuZGxlKCktPnJl
Y2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOworI2Vs
c2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVu
dExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkBAIC00NzIsMTAgKzQ3NywxMiBAQA0KICAgICBp
ZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRF
UkZBQ0UpCiAgICAgQVNTRVJUKGNvcmVGcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkg
PT0gY2FjaGVkUGFnZS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAKICAgICBXZWJDYWNoZWRQYWdlUGxh
dGZvcm1EYXRhKiB3ZWJQbGF0Zm9ybURhdGEgPSBuZXcgV2ViQ2FjaGVkUGFnZVBsYXRmb3JtRGF0
YShzdGF0aWNfY2FzdDxJV2ViRGF0YVNvdXJjZSo+KGdldFdlYkRhdGFTb3VyY2UoY29yZUZyYW1l
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkpKTsKICAgICBjYWNoZWRQYWdlLT5zZXRDYWNo
ZWRQYWdlUGxhdGZvcm1EYXRhKHdlYlBsYXRmb3JtRGF0YSk7CisjZW5kaWYKIH0KIAogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpCklu
ZGV4OiBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93
aW4vV2ViRG93bmxvYWQuY3BwCShyZXZpc2lvbiAzOTM2OCkNCisrKyBXZWJLaXQvd2luL1dlYkRv
d25sb2FkLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTM4LDEyICszOCwxNiBAQA0KICNpbmNsdWRl
ICJXZWJVUkxDcmVkZW50aWFsLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKIAorI2lu
Y2x1ZGUgPHd0Zi9wbGF0Zm9ybS5oPgorCiAjaW5jbHVkZSA8aW8uaD4KICNpbmNsdWRlIDxzeXMv
c3RhdC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCiAjcHJhZ21hIHdhcm5pbmcocHVzaCwg
MCkKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25D
Ri5oPgorI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5o
PgpAQCAtNTUsNiArNTksNyBAQA0KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogLy8gQ0ZVUkxEb3dubG9hZCBDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3RhdGlj
IHZvaWQgZGlkU3RhcnRDYWxsYmFjayhDRlVSTERvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0
Q2FsbGJhY2soQ0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZCwgQ0ZVUkxSZXF1ZXN0UmVmIHJlcXVl
c3QsIENGVVJMUmVzcG9uc2VSZWYgcmVkaXJlY3Rpb25SZXNwb25zZSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CkBAIC03NCw2ICs3OSw3IEBADQogCiBzdGF0aWMgQ0ZEYXRhUmVmIGV4dHJhY3RS
ZXN1bWVEYXRhRnJvbUJ1bmRsZShjb25zdCBTdHJpbmcmIGJ1bmRsZVBhdGgpOwogc3RhdGljIEhS
RVNVTFQgYXBwZW5kUmVzdW1lRGF0YVRvQnVuZGxlKENGRGF0YVJlZiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIGJ1bmRsZVBhdGgpOworI2VuZGlmCiAKIC8vIFdlYkRvd25sb2FkIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IApAQCAtODYsNiArOTIsNyBAQA0KIAogdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhh
bmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCiB7
CisjaWYgVVNFKENGTkVUV09SSykKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGUgPyBkZWxlZ2F0
ZSA6IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpOwogICAgIENGVVJM
Q29ubmVjdGlvblJlZiBjb25uZWN0aW9uID0gaGFuZGxlLT5jb25uZWN0aW9uKCk7CiAgICAgaWYg
KCFjb25uZWN0aW9uKSB7CkBAIC0xMTMsMTAgKzEyMCwxMiBAQA0KICAgICAvLyBFaXRoZXIgd2F5
LCB3ZSBuZWVkIHRvIHJlbGVhc2UgdGhlIGNvbm5lY3Rpb24gdG8gYmFsYW5jZSBvdXQgcmVmIGNv
dW50cwogICAgIGhhbmRsZS0+cmVsZWFzZUNvbm5lY3Rpb25Gb3JEb3dubG9hZCgpOwogICAgIENG
UmVsZWFzZShjb25uZWN0aW9uKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkRvd25sb2FkOjppbml0
KGNvbnN0IEtVUkwmIHVybCwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lm
IFVTRShDRk5FVFdPUkspCiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBMT0dfRVJST1Io
IkRlbGVnYXRlIGlzICVwIiwgbV9kZWxlZ2F0ZS5nZXQoKSk7CiAKQEAgLTEzMyw2ICsxNDIsNyBA
QA0KICAgICBDRlVSTERvd25sb2FkU2NoZWR1bGVEb3dubG9hZFdpdGhSdW5Mb29wKG1fZG93bmxv
YWQuZ2V0KCksIFJlc291cmNlSGFuZGxlOjpsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZh
dWx0TW9kZSk7CiAKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIEluaXRpYWxpemVk
IGRvd25sb2FkIG9mIHVybCAlcyBpbiBXZWJEb3dubG9hZCAlcCIsIHVybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB0aGlzKTsKKyNlbmRpZgogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2Fk
KCkKQEAgLTIwNiw2ICsyMTYsNyBAQA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMUmVxdWVz
dCogcmVxdWVzdCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRl
bGVnYXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYk11dGFibGVVUkxS
ZXF1ZXN0PiB3ZWJSZXF1ZXN0OwogICAgIGlmICghcmVxdWVzdCB8fCBGQUlMRUQocmVxdWVzdC0+
UXVlcnlJbnRlcmZhY2UoJndlYlJlcXVlc3QpKSkgewogICAgICAgICBMT0coRG93bmxvYWQsICJX
ZWJEb3dubG9hZCAtIGluaXRXaXRoUmVxdWVzdCBmYWlsZWQgLSBub3QgYSBXZWJNdXRhYmxlVVJM
UmVxdWVzdCIpOyAgICAKQEAgLTIzNywxMiArMjQ4LDE3IEBADQogCiAgICAgTE9HKERvd25sb2Fk
LCAiV2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHN0YXJ0ZWQgZG93bmxv
YWQgb2YgdXJsICVzIiwgd2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKICAgICAgICAg
LyogW2luXSAqLyBCU1RSIGJ1bmRsZVBhdGgsIAogICAgICAgICAvKiBbaW5dICovIElXZWJEb3du
bG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExPRyhE
b3dubG9hZCwgIkF0dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmlu
ZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsK
IAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgZXh0cmFjdFJl
c3VtZURhdGFGcm9tQnVuZGxlKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxl
UGF0aCkpKSk7CkBAIC0yODMsNiArMjk5LDEwIEBADQogCiAgICAgTE9HKERvd25sb2FkLCAiV2Vi
RG93bmxvYWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHJlc3VtZWQgZG93bmxvYWQgb2Yg
YnVuZGxlICVzIiwgU3RyaW5nKGJ1bmRsZVBhdGgsIFN5c1N0cmluZ0xlbihidW5kbGVQYXRoKSku
YXNjaWkoKS5kYXRhKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRG93bmxvYWQ6OmNhblJlc3VtZURvd25sb2FkRGVjb2RlZFdpdGhFbmNvZGlu
Z01JTUVUeXBlKApAQCAtMjk1LDYgKzMxNSw3IEBADQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRvd25sb2FkOjpzdGFydCgpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBMT0co
RG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFN0YXJ0aW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsK
ICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0zMDUsMTAg
KzMyNiwxNSBAQA0KICAgICBkaWRTdGFydCgpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQor
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsKCkKIHsKKyNpZiBVU0Uo
Q0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBk
b3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwpAQCAtMzE2LDEwICszNDIsMTUgQEANCiAgICAgQ0ZVUkxEb3dubG9hZENhbmNl
bChtX2Rvd25sb2FkLmdldCgpKTsKICAgICBtX2Rvd25sb2FkID0gMDsKICAgICByZXR1cm4gU19P
SzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRp
ZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWxGb3JS
ZXN1bWUoKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93
bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCksIHdyaXRpbmcgcmVzdW1lIGluZm9ybWF0
aW9uIHRvIGZpbGUgaWYgcG9zc2libGUiLCB0aGlzKTsKICAgICBBU1NFUlQobV9kb3dubG9hZCk7
CiAgICAgaWYgKCFtX2Rvd25sb2FkKQpAQCAtMzQ2LDIxICszNzcsMzEgQEANCiBleGl0OgogICAg
IG1fZG93bmxvYWQgPSAwOwogICAgIHJldHVybiBocjsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRvd25sb2FkOjpkZWxldGVzRmlsZVVwb25GYWlsdXJlKAogICAgICAgICAvKiBb
b3V0LCByZXR2YWxdICovIEJPT0wqIHJlc3VsdCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAg
IGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICAqcmVzdWx0ID0g
Q0ZVUkxEb3dubG9hZERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25sb2FkLmdldCgpKTsKICAgICBy
ZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJ
TDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpi
dW5kbGVQYXRoRm9yVGFyZ2V0UGF0aCgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRhcmdldFBh
dGgsIAogICAgICAgICAvKiBbb3V0LCByZXR2YWxdICovIEJTVFIqIGJ1bmRsZVBhdGgpCiB7Cisj
aWYgVVNFKENGTkVUV09SSykKICAgICBpZiAoIXRhcmdldFBhdGgpCiAgICAgICAgIHJldHVybiBF
X0lOVkFMSURBUkc7CiAKQEAgLTM3Niw2ICs0MTcsMTAgQEANCiAgICAgaWYgKCEqYnVuZGxlUGF0
aCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpyZXF1ZXN0KApAQCAtMzkyLDE2ICs0Mzcs
MjIgQEANCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpzZXREZWxldGVz
RmlsZVVwb25GYWlsdXJlKAogICAgICAgICAvKiBbaW5dICovIEJPT0wgZGVsZXRlc0ZpbGVVcG9u
RmFpbHVyZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3dubG9hZCkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICBDRlVSTERvd25sb2FkU2V0RGVsZXRlc1Vwb25GYWls
dXJlKG1fZG93bmxvYWQuZ2V0KCksICEhZGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSk7CiAgICAgcmV0
dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZBSUw7
CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6c2V0
RGVzdGluYXRpb24oCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBwYXRoLCAKICAgICAgICAgLyog
W2luXSAqLyBCT09MIGFsbG93T3ZlcndyaXRlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAg
aWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCkBAIC00MTUsNiArNDY2
LDEwIEBADQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU2V0IGRlc3RpbmF0aW9u
IHRvICVzIiwgbV9idW5kbGVQYXRoLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBTX09L
OworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlm
CiB9CiAKIC8vIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CkBAIC00MjIsNiArNDc3LDcgQEANCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25s
b2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJ
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAg
ICAgaWYgKG1fZG93bmxvYWQpIHsKICAgICAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbChtX2Rvd25s
b2FkLmdldCgpKTsKICAgICAgICAgbV9kb3dubG9hZCA9IDA7CkBAIC00MzMsMTEgKzQ4OSwxNiBA
QA0KICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9yKHRoaXMsIHdlYkVycm9yLmdldCgp
KTsKIAogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICBy
ZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OmNvbnRpbnVlV2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uq
IGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAg
IGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1cm4gRV9OT0lOVEVSRkFDRTsKQEAgLTQ0
NSwxMiArNTA2LDE3IEBADQogICAgIGlmIChtX2Rvd25sb2FkKQogICAgICAgICBDRlVSTERvd25s
b2FkVXNlQ3JlZGVudGlhbChtX2Rvd25sb2FkLmdldCgpLCAwLCB3ZWJDaGFsbGVuZ2UtPmF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVmKCkpOwogICAgIHJldHVy
biBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOwor
I2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnVzZUNy
ZWRlbnRpYWwoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTENyZWRlbnRpYWwqIGNyZWRlbnRp
YWwsIAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSog
Y2hhbGxlbmdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5nZSk7CiAgICAg
aWYgKCF3ZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybiBFX05PSU5URVJGQUNFOwpAQCAtNDY0
LDggKzUzMCwxMyBAQA0KICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3dubG9h
ZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCB3ZWJD
aGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICBy
ZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogLy8gQ0ZVUkxE
b3dubG9hZCBDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBXZWJEb3dubG9hZDo6ZGlkU3RhcnQo
KQogewpAQCAtNzk4LDMgKzg2OSw0IEBADQogICAgIGZjbG9zZShidW5kbGUpOwogICAgIHJldHVy
biBocjsKIH0KKyNlbmRpZgpJbmRleDogV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShyZXZpc2lvbiAzOTM2OCkNCisrKyBX
ZWJLaXQvd2luL1dlYkRvd25sb2FkLmgJKHdvcmtpbmcgY29weSkNCkBAIC0xMDQsNiArMTA0LDcg
QEANCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTENyZWRlbnRpYWwqIGNyZWRlbnRpYWwsIAog
ICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogY2hhbGxl
bmdlKTsKIAorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gQ0ZVUkxEb3dubG9hZCBDYWxsYmFj
a3MKICAgICB2b2lkIGRpZFN0YXJ0KCk7CiAgICAgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVx
dWVzdChDRlVSTFJlcXVlc3RSZWYsIENGVVJMUmVzcG9uc2VSZWYpOwpAQCAtMTE2LDEzICsxMTcs
MTYgQEANCiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVSTFJlZik7CiAgICAgdm9p
ZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoQ0ZFcnJvclJlZik7CisjZW5kaWYKIAog
cHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQ7CiAKICAgICBXZWJDb3JlOjpTdHJpbmcg
bV9kZXN0aW5hdGlvbjsKICAgICBXZWJDb3JlOjpTdHJpbmcgbV9idW5kbGVQYXRoOworI2lmIFVT
RShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7
CisjZW5kaWYKICAgICBDT01QdHI8SVdlYk11dGFibGVVUkxSZXF1ZXN0PiBtX3JlcXVlc3Q7CiAg
ICAgQ09NUHRyPElXZWJEb3dubG9hZERlbGVnYXRlPiBtX2RlbGVnYXRlOwogCkluZGV4OiBXZWJL
aXQvd2luL1dlYkVycm9yLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViRXJyb3Iu
Y3BwCShyZXZpc2lvbiAzOTM2OCkNCisrKyBXZWJLaXQvd2luL1dlYkVycm9yLmNwcAkod29ya2lu
ZyBjb3B5KQ0KQEAgLTMyLDcgKzMyLDcgQEANCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+
CiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCi0jaWYgVVNFKENGTkVUV09SSykKKyNpZiBFTkFCTEUo
U0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKIApJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMzkz
NjgpDQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC05OCwx
MSArOTgsMTMgQEANCiAKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAK
KyNpZiBQTEFURk9STShDRykKIC8vIENHIFNQSSB1c2VkIGZvciBwcmludGluZwogZXh0ZXJuICJD
IiB7CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dDb250ZXh0R2V0QmFzZUNUTShDR0NvbnRleHRS
ZWYgYyk7IAogICAgIHZvaWQgQ0dDb250ZXh0U2V0QmFzZUNUTShDR0NvbnRleHRSZWYgYywgQ0dB
ZmZpbmVUcmFuc2Zvcm0gbSk7IAogfQorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE4MTMsNiArMTgxNSw3IEBADQogICAg
IGhlYWRlckFuZEZvb3RlckhlaWdodHMoJmhlYWRlckhlaWdodCwgJmZvb3RlckhlaWdodCk7CiAg
ICAgR3JhcGhpY3NDb250ZXh0IHNwb29sQ3R4KHBjdHgpOwogCisjaWYgUExBVEZPUk0oQ0cpCiAg
ICAgZm9yIChVSU5UIGlpID0gc3RhcnRQYWdlOyBpaSA8IGVuZFBhZ2U7IGlpKyspIHsKICAgICAg
ICAgSW50UmVjdCBwYWdlUmVjdCA9IG1fcGFnZVJlY3RzW2lpXTsKIApAQCAtMTg1Niw2ICsxODU5
LDcgQEANCiAgICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7CiAgICAgICAgIENHQ29udGV4
dFJlc3RvcmVHU3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAgCiAgICAgcmV0dXJuIFNfT0s7
CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYktpdC93aW4vV2ViS2l0R3JhcGhpY3MuY3BwCShyZXZpc2lvbiAzOTM2OCkNCisrKyBXZWJL
aXQvd2luL1dlYktpdEdyYXBoaWNzLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTQyLDEwICs0Miwx
NCBAQA0KICNpbmNsdWRlIDxXZWJDb3JlL1N0cmluZ1RydW5jYXRvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2ViQ29yZVRleHRSZW5kZXJlci5oPgogCisjaWYgUExBVEZPUk0oQ0cpCiAjaW5jbHVk
ZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2VuZGlmCiAjcHJhZ21hIHdhcm5pbmco
cG9wKQogCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCkBAIC04MSwxMiArODUsMjAgQEANCiBzdHJ1Y3QgV2ViVGV4dFJl
bmRlckluZm9XaXRob3V0U2hhZG93CiB7CiAgICAgRFdPUkQgc3RydWN0U2l6ZTsKKyNpZiBQTEFU
Rk9STShDRykKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VsaWYgUExBVEZPUk0oQ0FJ
Uk8pCisgICAgQ2Fpcm9Db250ZXh0UmVmIGNnQ29udGV4dDsKKyNlbmRpZgogICAgIExQQ1RTVFIg
dGV4dDsKICAgICBpbnQgbGVuZ3RoOwogICAgIFBPSU5UIHB0OwogICAgIGNvbnN0IFdlYkZvbnRE
ZXNjcmlwdGlvbiogZGVzY3JpcHRpb247CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJl
ZiBjb2xvcjsKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIHVuc2lnbmVkIGNvbG9yOyAgICAg
ICAgLy8gUkdCQSBxdWFkcnVwbGV0CisjZW5kaWYKICAgICBpbnQgdW5kZXJsaW5lZEluZGV4Owog
ICAgIGJvb2wgZHJhd0FzUGFzc3dvcmQ7CiAgICAgaW50IG92ZXJyaWRlU21vb3RoaW5nTGV2ZWw7
IC8vIHBhc3MgaW4gLTEgaWYgY2FsbGVyIGRvZXMgbm90IHdhbnQgdG8gb3ZlcnJpZGUgc21vb3Ro
aW5nIGxldmVsCkBAIC05OSw4ICsxMTEsMTAgQEANCiAKICAgICBpbnQgb2xkRm9udFNtb290aGlu
Z0xldmVsID0gLTE7CiAgICAgaWYgKGluZm8tPm92ZXJyaWRlU21vb3RoaW5nTGV2ZWwgPj0gMCkg
eworI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgICAgICBvbGRGb250U21vb3RoaW5n
TGV2ZWwgPSB3a0dldEZvbnRTbW9vdGhpbmdMZXZlbCgpOwogICAgICAgICB3a1NldEZvbnRTbW9v
dGhpbmdMZXZlbChpbmZvLT5vdmVycmlkZVNtb290aGluZ0xldmVsKTsKKyNlbmRpZgogICAgIH0K
IAogICAgIHsKQEAgLTExMywxNSArMTI3LDIxIEBADQogCiAgICAgICAgIC8vIFNldCBzaGFkb3cg
c2V0dGluZwogICAgICAgICBpZiAoaW5mby0+c3RydWN0U2l6ZSA9PSBzaXplb2YoV2ViVGV4dFJl
bmRlckluZm8pICYmCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgICAgICAgICAoaW5mby0+c2hhZG93
T2Zmc2V0LmN4IHx8IGluZm8tPnNoYWRvd09mZnNldC5jeSB8fCBpbmZvLT5zaGFkb3dCbHVyIHx8
IGluZm8tPnNoYWRvd0NvbG9yKSkKKyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgICAgICAgICAg
KGluZm8tPnNoYWRvd09mZnNldC5jeCB8fCBpbmZvLT5zaGFkb3dPZmZzZXQuY3kgfHwgaW5mby0+
c2hhZG93Qmx1cikpCisjZW5kaWYKICAgICAgICAgICAgIGNvbnRleHQuc2V0U2hhZG93KGluZm8t
PnNoYWRvd09mZnNldCwgaW5mby0+c2hhZG93Qmx1ciwgaW5mby0+c2hhZG93Q29sb3IpOwogCiAg
ICAgICAgIFdlYkNvcmVEcmF3VGV4dEF0UG9pbnQoY29udGV4dCwgZHJhd1N0cmluZywgaW5mby0+
cHQsIG1ha2VGb250KCooaW5mby0+ZGVzY3JpcHRpb24pKSwgaW5mby0+Y29sb3IsIGluZm8tPnVu
ZGVybGluZWRJbmRleCk7CiAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOwogICAgIH0KIAorI2lm
IEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgIGlmIChpbmZvLT5vdmVycmlkZVNtb290aGlu
Z0xldmVsID49IDApCiAgICAgICAgIHdrU2V0Rm9udFNtb290aGluZ0xldmVsKG9sZEZvbnRTbW9v
dGhpbmdMZXZlbCk7CisjZW5kaWYKIH0KIAogZmxvYXQgVGV4dEZsb2F0V2lkdGgoTFBDVFNUUiB0
ZXh0LCBpbnQgbGVuZ3RoLCBjb25zdCBXZWJGb250RGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpJ
bmRleDogV2ViS2l0L3dpbi9XZWJLaXRHcmFwaGljcy5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L3dpbi9XZWJLaXRHcmFwaGljcy5oCShyZXZpc2lvbiAzOTM2OCkNCisrKyBXZWJLaXQvd2luL1dl
YktpdEdyYXBoaWNzLmgJKHdvcmtpbmcgY29weSkNCkBAIC0zMCw4ICszMCwxMyBAQA0KIAogZXh0
ZXJuICJDIiB7CiAKKyNpZiBQTEFURk9STShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29sb3IqIENH
Q29sb3JSZWY7CiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQqIENHQ29udGV4dFJlZjsKKyNlbGlm
IFBMQVRGT1JNKENBSVJPKQordHlwZWRlZiB1bnNpZ25lZCBDb2xvclJlZjsgICAgICAgIC8vIFJH
QkEgcXVhZHJ1cGxldAordHlwZWRlZiBzdHJ1Y3QgX2NhaXJvKiBDYWlyb0NvbnRleHRSZWY7Cisj
ZW5kaWYKIAogdHlwZWRlZiB3Y2hhcl90IFdDSEFSOwogdHlwZWRlZiBfX251bGx0ZXJtaW5hdGVk
IGNvbnN0IFdDSEFSKiBMUENXU1RSOwpAQCAtNDksMTggKzU0LDMwIEBADQogc3RydWN0IFdlYlRl
eHRSZW5kZXJJbmZvCiB7CiAgICAgRFdPUkQgc3RydWN0U2l6ZTsKKyNpZiBQTEFURk9STShDRykK
ICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0OworI2VsaWYgUExBVEZPUk0oQ0FJUk8pCisgICAg
Q2Fpcm9Db250ZXh0UmVmIGNnQ29udGV4dDsKKyNlbmRpZgogICAgIExQQ1RTVFIgdGV4dDsKICAg
ICBpbnQgbGVuZ3RoOwogICAgIFBPSU5UIHB0OwogICAgIGNvbnN0IFdlYkZvbnREZXNjcmlwdGlv
biogZGVzY3JpcHRpb247CisjaWYgUExBVEZPUk0oQ0cpCiAgICAgQ0dDb2xvclJlZiBjb2xvcjsK
KyNlbGlmIFBMQVRGT1JNKENBSVJPKQorICAgIENvbG9yUmVmIGNvbG9yOworI2VuZGlmCiAgICAg
aW50IHVuZGVybGluZWRJbmRleDsKICAgICBib29sIGRyYXdBc1Bhc3N3b3JkOwogICAgIGludCBv
dmVycmlkZVNtb290aGluZ0xldmVsOyAvLyBwYXNzIGluIC0xIGlmIGNhbGxlciBkb2VzIG5vdCB3
YW50IHRvIG92ZXJyaWRlIHNtb290aGluZyBsZXZlbAogICAgIFNJWkUgc2hhZG93T2Zmc2V0Owog
ICAgIGludCBzaGFkb3dCbHVyOworI2lmIFBMQVRGT1JNKENHKQogICAgIENHQ29sb3JSZWYgc2hh
ZG93Q29sb3I7CisjZWxpZiBQTEFURk9STShDQUlSTykKKyAgICBDb2xvclJlZiBzaGFkb3dDb2xv
cjsKKyNlbmRpZgogfTsKIAogdm9pZCBXZWJEcmF3VGV4dChXZWJUZXh0UmVuZGVySW5mbyopOwpJ
bmRleDogV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAkocmV2aXNpb24gMzkzNjgpDQor
KysgV2ViS2l0L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkNCkBA
IC0zOCw2ICszOCw4IEBADQogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNw
cmFnbWEgd2FybmluZyhwb3ApCiAKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBJV2ViVVJMUmVxdWVzdCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNjcs
OSArMzY5LDEzIEBADQogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVl
c3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVD
b3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcmVxdWVzdC5jZlVSTFJlcXVlc3QoKSkpOwogICAg
ICpyZXN1bHQgPSBjcmVhdGVJbnN0YW5jZShSZXNvdXJjZVJlcXVlc3QobXV0YWJsZVJlcXVlc3Qu
Z2V0KCkpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgcmV0dXJuIEVfTk9USU1QTDsK
KyNlbmRpZgogfQogCiAvLyBJV2ViTXV0YWJsZVVSTFJlcXVlc3QgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogV2ViS2l0L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAkocmV2aXNpb24gMzkzNjgpDQorKysgV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC00Niw3ICs0Niw5IEBADQogI2luY2x1ZGUgPHNobG9iai5oPgog
I2luY2x1ZGUgPHNoZm9sZGVyLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KKyNpZiBFTkFCTEUoU0FG
QVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCkBAIC05NjYsNyArOTY4LDkgQEANCiAgICAgc2V0SW50
ZWdlclZhbHVlKENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdUeXBlUHJlZmVyZW5jZUtleSksIHNt
b290aGluZ1R5cGUpOwogICAgIGlmIChzbW9vdGhpbmdUeXBlID09IEZvbnRTbW9vdGhpbmdUeXBl
V2luZG93cykKICAgICAgICAgc21vb3RoaW5nVHlwZSA9IEZvbnRTbW9vdGhpbmdUeXBlU3RhbmRh
cmQ7CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAgICAgd2tTZXRGb250U21vb3RoaW5n
TGV2ZWwoKGludClzbW9vdGhpbmdUeXBlKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQog
CkluZGV4OiBXZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHAJKHJldmlzaW9uIDM5MzY4KQ0KKysrIFdlYktp
dC93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTMyLDcgKzMyLDkg
QEANCiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RlN0cmluZy5oPgorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6
OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkwLDYgKzkyLDggQEANCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZyhBZG9wdENGLCBDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+
KGZvbnRGaWxlUGF0aCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHdjc2xlbihmb250RmlsZVBhdGgp
KSkpOworI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgIHdrQWRkRm9udHNBdFBhdGgo
c3RyaW5nLmdldCgpKTsKKyNlbmRpZgogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0
L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBX
ZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAkocmV2aXNpb24gMzkz
NjgpDQorKysgV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHdv
cmtpbmcgY29weSkNCkBAIC0xNDksOSArMTQ5LDEwIEBADQogCiAgICAgLy8gRklYTUU6IEFmdGVy
IHdlIGNoYW5nZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0byB1c2UgIlJlc291cmNlSGFuZGxl
IiBhcyB0aGUgYWJzdHJhY3QgIlNlbmRlciIgb3IgIlNvdXJjZSBvZiB0aGlzIEF1dGggQ2hhbGxl
bmdlIiwgdGhlbiB3ZSdsbAogICAgIC8vIGNvbnN0cnVjdCB0aGUgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2Ugd2l0aCB0aGF0IGFzIG9idGFpbmVkIGZyb20gdGhlIHdlYlNlbmRlcgotCisjaWYgVVNF
KENGTkVUV09SSykKICAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVudGljYXRp
b25DaGFsbGVuZ2Uod2ViU3BhY2UtPnByb3RlY3Rpb25TcGFjZSgpLCB3ZWJDcmVkZW50aWFsLT5j
cmVkZW50aWFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91
c0ZhaWx1cmVDb3VudCwgd2ViUmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKSwgd2ViRXJyb3It
PnJlc291cmNlRXJyb3IoKSk7CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDog
V2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmNwcAkocmV2aXNpb24gMzkzNjgpDQorKysgV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlci5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yOSw2ICsyOSw3IEBADQog
I2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmgiCiAKICNpbmNs
dWRlICJDT01QdHIuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldl
YktpdC5oIgogI2luY2x1ZGUgIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5j
bHVkZSAiV2ViVVJMQ3JlZGVudGlhbC5oIgpAQCAtMTAwLDI5ICsxMDEsNDAgQEANCiBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpj
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JL
KQogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gd2ViQ2hhbGxlbmdl
KFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdlKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkQ2FuY2VsbGF0aW9uKHdlYkNoYWxs
ZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxz
ZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQog
CiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyOjpjb250aW51ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBj
aGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBp
ZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIG1faGFuZGxl
LT5yZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwod2ViQ2hhbGxlbmdl
LT5hdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXI6OnVzZUNyZWRlbnRpYWwoCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTENyZWRlbnRpYWwq
IGNyZWRlbnRpYWwsIAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogY2hhbGxlbmdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5n
ZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CkBAIC0x
MzMsNiArMTQ1LDEwIEBADQogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkQ3JlZGVudGlhbCh3ZWJD
aGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCksIHdlYkNyZWRlbnRpYWwtPmNyZWRl
bnRpYWwoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiAvLyBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNl
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCShyZXZp
c2lvbiAzOTM2OCkNCisrKyBXZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAkod29ya2luZyBj
b3B5KQ0KQEAgLTMzLDcgKzMzLDEwIEBADQogI2luY2x1ZGUgIk1hcnNoYWxsaW5nSGVscGVycy5o
IgogI2luY2x1ZGUgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgogCisjaWYgRU5BQkxFKFNBRkFS
SV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3Rl
bUludGVyZmFjZS5oPgorI2VuZGlmCisKICNpbmNsdWRlIDx3dGYvcGxhdGZvcm0uaD4KICNwcmFn
bWEgd2FybmluZyggcHVzaCwgMCApCiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CkluZGV4
OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkocmV2aXNpb24gMzkzNjgpDQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29y
a2luZyBjb3B5KQ0KQEAgLTEwMywxMCArMTAzLDE4IEBADQogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xv
Y2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CisKKyNpZiBVU0UoQ0ZO
RVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUg
PENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZB
Q0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPiAKKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDxkaW1t
Lmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+CkBAIC0xMjUsNiArMTMzLDcgQEANCiBzdGF0aWMgU3Ry
aW5nIG9zVmVyc2lvbigpOwogc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJzaW9uKCk7CiAKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogdHlwZWRlZiBDRlVSTENhY2hlUmVmICgqQ29weVNoYXJlZFVSTENhY2hl
RnVuY3Rpb24pKCk7CiAKIHN0YXRpYyBITU9EVUxFIGZpbmRDRk5ldHdvcmtNb2R1bGUoKQpAQCAt
MTM4LDYgKzE0Nyw3IEBADQogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENvcHlTaGFy
ZWRVUkxDYWNoZUZ1bmN0aW9uPihHZXRQcm9jQWRkcmVzcyhmaW5kQ0ZOZXR3b3JrTW9kdWxlKCks
ICJDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlIikpOwogfQorI2VuZGlmCiAKIFdlYlZpZXcq
IGtpdChQYWdlKiBwYWdlKQogewpAQCAtMzgxLDYgKzM5MSw3IEBADQogICAgIGlmIChzX2RpZFNl
dENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9kZWwpCiAgICAgICAgIHJldHVy
bjsKIAorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gT25jZSB3ZSByZXF1aXJlIGEgbmV3ZXIg
dmVyc2lvbiBvZiBDRk5ldHdvcmsgd2l0aCB0aGUgQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNo
ZSBmdW5jdGlvbiwKICAgICAvLyB3ZSBjYW4gY2FsbCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENh
Y2hlIGRpcmVjdGx5IGFuZCBlbGltaW5hdGUgY29weVNoYXJlZFVSTENhY2hlLgogICAgIHN0YXRp
YyBDb3B5U2hhcmVkVVJMQ2FjaGVGdW5jdGlvbiBjb3B5U2hhcmVkVVJMQ2FjaGUgPSBmaW5kQ29w
eVNoYXJlZFVSTENhY2hlRnVuY3Rpb24oKTsKQEAgLTU2MSw2ICs1NzIsNyBAQA0KICAgICBzX2Rp
ZFNldENhY2hlTW9kZWwgPSB0cnVlOwogICAgIHNfY2FjaGVNb2RlbCA9IGNhY2hlTW9kZWw7CiAg
ICAgcmV0dXJuOworI2VuZGlmCiB9CiAKIFdlYkNhY2hlTW9kZWwgV2ViVmlldzo6Y2FjaGVNb2Rl
bCgpCkBAIC00MjMyLDkgKzQyNDQsMTEgQEANCiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAg
IHJldHVybiBocjsKIAorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gU2V0IGNvb2tpZSBzdG9y
YWdlIGFjY2VwdCBwb2xpY3kKICAgICBpZiAoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlID0gY3VycmVudENvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLCBhY2NlcHRQb2xpY3kpOwor
I2VuZGlmCiAKICAgICByZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26448</attachid>
            <date>2009-01-05 18:07:00 -0800</date>
            <delta_ts>2009-01-11 14:03:53 -0800</delta_ts>
            <desc>Update against ToT (2009-01-05)</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>26292</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzOTYzMikKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDcgQEAKICNp
ZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRyAxCiAjZGVmaW5lIFdURl9Q
TEFURk9STV9DSSAxCisjZGVmaW5lIEVOQUJMRV9TQUZBUklfSU5URVJGQUNFIDEKICNlbmRpZgog
CiAvKiBQTEFURk9STShTS0lBKSBmb3IgV2luL0xpbnV4LCBDRy9DSSBmb3IgTWFjICovCkBAIC0x
NTEsNiArMTUyLDcgQEAKIC8qIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGZyb20gYSBi
bGFja2xpc3QgdG8gYSB3aGl0ZWxpc3QgKi8KICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oUVQpICYmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0FJUk8gMQorI3VuZGVmIEVOQUJMRV9WSURFTwogI2VuZGlmCiAKIC8qIENQ
VSAqLwpAQCAtMzAzLDYgKzMwNSw3IEBACiAKICNpZiBQTEFURk9STShXSU4pCiAjZGVmaW5lIFdU
Rl9VU0VfV0lOSU5FVCAxCisvKiAjZGVmaW5lIFdURl9VU0VfQ1VSTCAxICovCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFdYKQpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZGluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRpbmcuaAkocmV2aXNpb24gMzk2
MzIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMCw2ICsxMjAsNyBAQCB2b2lkIGRldGFjaFRocmVhZChUaHJlYWRJZGVudGlmaWVyKTsKICNp
ZiBVU0UoUFRIUkVBRFMpCiB0eXBlZGVmIHB0aHJlYWRfbXV0ZXhfdCBQbGF0Zm9ybU11dGV4Owog
dHlwZWRlZiBwdGhyZWFkX2NvbmRfdCBQbGF0Zm9ybUNvbmRpdGlvbjsKK3R5cGVkZWYgcHRocmVh
ZF9rZXlfdCBQbGF0Zm9ybVRocmVhZFN0b3JhZ2VLZXk7CiAjZWxpZiBQTEFURk9STShHVEspCiB0
eXBlZGVmIEdPd25QdHI8R011dGV4PiBQbGF0Zm9ybU11dGV4OwogdHlwZWRlZiBHT3duUHRyPEdD
b25kPiBQbGF0Zm9ybUNvbmRpdGlvbjsKQEAgLTEzOSw2ICsxNDAsNyBAQCBzdHJ1Y3QgUGxhdGZv
cm1Db25kaXRpb24gewogICAgIEhBTkRMRSBtX3F1ZXVlOwogICAgIEhBTkRMRSBtX211dGV4Owog
fTsKK3R5cGVkZWYgRFdPUkQgUGxhdGZvcm1UaHJlYWRTdG9yYWdlS2V5OwogI2Vsc2UKIHR5cGVk
ZWYgdm9pZCogUGxhdGZvcm1NdXRleDsKIHR5cGVkZWYgdm9pZCogUGxhdGZvcm1Db25kaXRpb247
CkluZGV4OiBXZWJDb3JlL2NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY29uZmlnLmgJ
KHJldmlzaW9uIDM5NjMyKQorKysgV2ViQ29yZS9jb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAt
OTEsOSArOTEsMTcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQorI2lmIDAKICNkZWZp
bmUgV1RGX1BMQVRGT1JNX0NHIDEKICN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJUk8KICNkZWZpbmUg
V1RGX1VTRV9DRk5FVFdPUksgMQorI3VuZGVmIFdURl9VU0VfQ1VSTAorI2Vsc2UKKyN1bmRlZiBX
VEZfUExBVEZPUk1fQ0cKKyNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEKKyN1bmRlZiBXVEZf
VVNFX0NGTkVUV09SSworI2RlZmluZSBXVEZfVVNFX0NVUkwgMQorI2VuZGlmCiAjdW5kZWYgV1RG
X1VTRV9XSU5JTkVUCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRiAxCiAjZGVmaW5lIFdURl9VU0Vf
UFRIUkVBRFMgMApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9idWlsZC1nZW5lcmF0ZWQt
ZmlsZXMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9idWlsZC1nZW5l
cmF0ZWQtZmlsZXMuc2gJKHJldmlzaW9uIDM5NjMyKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9idWlsZC1nZW5lcmF0ZWQtZmlsZXMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTY1LDUgKzY1LDYg
QEAgbWtkaXIgLXAgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkUwogY2QgIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcyIKIAogZXhwb3J0IFdlYkNvcmU9IiR7WFNSQ1JP
T1R9IgotZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0iRU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01f
U1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NW
R19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5B
QkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJREVPIgorI2V4cG9ydCBGRUFUVVJF
X0RFRklORVM9IkVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxFX0lDT05E
QVRBQkFTRSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9YUEFUSCBFTkFC
TEVfU1ZHIEVOQUJMRV9TVkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfRk9OVFMgRU5BQkxFX1NWR19G
T1JFSUdOX09CSkVDVCBFTkFCTEVfU1ZHX0FTX0lNQUdFIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9X
TUwgRU5BQkxFX1dPUktFUlMgRU5BQkxFX1ZJREVPIgorZXhwb3J0IEZFQVRVUkVfREVGSU5FUz0i
RU5BQkxFX0RBVEFCQVNFIEVOQUJMRV9ET01fU1RPUkFHRSBFTkFCTEVfSUNPTkRBVEFCQVNFIEVO
QUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgRU5BQkxFX1hQQVRIIEVOQUJMRV9TVkcgRU5B
QkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JK
RUNUIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1dPUktFUlMiCiBt
YWtlIC1mICIkV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIiAtaiAke05VTUNQVVN9IHx8IGV4
aXQgMQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAzOTYzMikKKysrIFdl
YktpdC93aW4vV2ViQ29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3
LDEyIEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdl
ci5oIgogCisjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29v
a2llc1ByaXYuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VXaW4uaD4KKyNlbGlm
IFVTRShDVVJMKQorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM2LDkgKzQwLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBXZWJDb29raWVNYW5hZ2VyKiBXZWJDb29raWVNYW5hZ2VyOjpjcmVhdGVJbnN0
YW5jZSgpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBXZWJDb29raWVNYW5hZ2VyKiBtYW5h
Z2VyID0gbmV3IFdlYkNvb2tpZU1hbmFnZXI7CiAgICAgbWFuYWdlci0+QWRkUmVmKCk7CiAgICAg
cmV0dXJuIG1hbmFnZXI7ICAgIAorI2Vsc2UKKyAgIHJldHVybiAwOworI2VuZGlmCiB9CiAKIFdl
YkNvb2tpZU1hbmFnZXI6OldlYkNvb2tpZU1hbmFnZXIoKQpAQCAtNTgsNiArNjYsNyBAQCBXZWJD
b29raWVNYW5hZ2VyOjp+V2ViQ29va2llTWFuYWdlcigpCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViQ29va2llTWFuYWdlcjo6UXVlcnlJbnRlcmZhY2UoUkVGSUlEIHJpaWQsIHZvaWQq
KiBwcHZPYmplY3QpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICAqcHB2T2JqZWN0ID0gMDsK
ICAgICBpZiAoSXNFcXVhbEdVSUQocmlpZCwgSUlEX0lVbmtub3duKSkKICAgICAgICAgKnBwdk9i
amVjdCA9IHN0YXRpY19jYXN0PFdlYkNvb2tpZU1hbmFnZXIqPih0aGlzKTsKQEAgLTY4LDYgKzc3
LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWcKIAogICAgIEFk
ZFJlZigpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFdl
YkNvb2tpZU1hbmFnZXI6OkFkZFJlZigpCkBAIC04OSwxNiArMTAyLDI2IEBAIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFdlYkNvb2tpZU1hbmFnZXIKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViQ29va2llTWFuYWdlcjo6Y29va2llU3RvcmFnZSggCiAgICAgLyogW3JldHZhbF1bb3V0XSAq
LyBDRkhUVFBDb29raWVTdG9yYWdlUmVmKiBzdG9yYWdlKQogewotICAgIGlmICghc3RvcmFnZSkK
KyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgaWYgKCFzdG9yYWdlKQogICAgICAgICByZXR1cm4gRV9Q
T0lOVEVSOwogCiAgICAgKnN0b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpOwogICAgIHJl
dHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlM
OworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViQ29va2llTWFuYWdl
cjo6c2V0Q29va2llU3RvcmFnZSggCiAgICAgLyogW2luXSAqLyBDRkhUVFBDb29raWVTdG9yYWdl
UmVmIHN0b3JhZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBzZXRDdXJyZW50Q29va2ll
U3RvcmFnZShzdG9yYWdlKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1l
bnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQpJbmRleDogV2ViS2l0L3dpbi9X
ZWJEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAJ
KHJldmlzaW9uIDM5NjMyKQorKysgV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEyICszOCwxNiBAQAogI2luY2x1ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIK
ICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgogCisjaW5jbHVkZSA8d3RmL3BsYXRmb3JtLmg+
CisKICNpbmNsdWRlIDxpby5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CiAKICNwcmFnbWEgd2FybmluZyhwdXNoLCAwKQorI2lmIFVTRShDRk5FVFdPUksp
CiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNGLmg+CisjZW5kaWYKICNpbmNsdWRl
IDxXZWJDb3JlL0JTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC01NSw2ICs1OSw3IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgVVNFKENGTkVUV09SSykKIC8vIENGVVJM
RG93bmxvYWQgQ2FsbGJhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHN0YXRpYyB2b2lkIGRpZFN0YXJ0Q2FsbGJhY2so
Q0ZVUkxEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiBzdGF0
aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdENhbGxiYWNrKENGVVJMRG93bmxvYWRS
ZWYgZG93bmxvYWQsIENGVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIHJl
ZGlyZWN0aW9uUmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtNzQsNiArNzks
NyBAQCBzdGF0aWMgVUludDMyIEJ1bmRsZU1hZ2ljTnVtYmVyID0gMHhERUNBCiAKIHN0YXRpYyBD
RkRhdGFSZWYgZXh0cmFjdFJlc3VtZURhdGFGcm9tQnVuZGxlKGNvbnN0IFN0cmluZyYgYnVuZGxl
UGF0aCk7CiBzdGF0aWMgSFJFU1VMVCBhcHBlbmRSZXN1bWVEYXRhVG9CdW5kbGUoQ0ZEYXRhUmVm
IHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgYnVuZGxlUGF0aCk7CisjZW5kaWYKIAogLy8gV2Vi
RG93bmxvYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCkBAIC04Niw2ICs5Miw3IEBAIFdlYkRvd25sb2FkOjpXZWJEb3du
bG9hZCgpCiAKIHZvaWQgV2ViRG93bmxvYWQ6OmluaXQoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgSVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogeworI2lmIFVTRShDRk5F
VFdPUkspCiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVnYXRlID8gZGVsZWdhdGUgOiBEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKTsKICAgICBDRlVSTENvbm5lY3Rpb25SZWYg
Y29ubmVjdGlvbiA9IGhhbmRsZS0+Y29ubmVjdGlvbigpOwogICAgIGlmICghY29ubmVjdGlvbikg
ewpAQCAtMTEzLDEwICsxMjAsMTQgQEAgdm9pZCBXZWJEb3dubG9hZDo6aW5pdChSZXNvdXJjZUhh
bmRsZSogaAogICAgIC8vIEVpdGhlciB3YXksIHdlIG5lZWQgdG8gcmVsZWFzZSB0aGUgY29ubmVj
dGlvbiB0byBiYWxhbmNlIG91dCByZWYgY291bnRzCiAgICAgaGFuZGxlLT5yZWxlYXNlQ29ubmVj
dGlvbkZvckRvd25sb2FkKCk7CiAgICAgQ0ZSZWxlYXNlKGNvbm5lY3Rpb24pOworI2Vsc2UKKyAg
IG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJEb3dubG9hZDo6aW5pdChj
b25zdCBLVVJMJiB1cmwsIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZSA/IGRlbGVnYXRlIDogRGVm
YXVsdERvd25sb2FkRGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCk7CiAgICAgTE9HX0VSUk9SKCJE
ZWxlZ2F0ZSBpcyAlcCIsIG1fZGVsZWdhdGUuZ2V0KCkpOwogCkBAIC0xMzMsNiArMTQ0LDkgQEAg
dm9pZCBXZWJEb3dubG9hZDo6aW5pdChjb25zdCBLVVJMJiB1cmwsIAogICAgIENGVVJMRG93bmxv
YWRTY2hlZHVsZURvd25sb2FkV2l0aFJ1bkxvb3AobV9kb3dubG9hZC5nZXQoKSwgUmVzb3VyY2VI
YW5kbGU6OmxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKIAogICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gSW5pdGlhbGl6ZWQgZG93bmxvYWQgb2YgdXJsICVz
IGluIFdlYkRvd25sb2FkICVwIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRoaXMpOwor
I2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYKIH0KIAogV2ViRG93bmxvYWQ6On5X
ZWJEb3dubG9hZCgpCkBAIC0yMDYsNiArMjIwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJEb3dubG9hZDo6aQogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxSZXF1ZXN0KiByZXF1
ZXN0LCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUp
CiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+
IHdlYlJlcXVlc3Q7CiAgICAgaWYgKCFyZXF1ZXN0IHx8IEZBSUxFRChyZXF1ZXN0LT5RdWVyeUlu
dGVyZmFjZSgmd2ViUmVxdWVzdCkpKSB7CiAgICAgICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25s
b2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGZhaWxlZCAtIG5vdCBhIFdlYk11dGFibGVVUkxSZXF1ZXN0
Iik7ICAgIApAQCAtMjM3LDEyICsyNTIsMTcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZDo6aQogCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0
aFJlcXVlc3QgY29tcGxldGUsIHN0YXJ0ZWQgZG93bmxvYWQgb2YgdXJsICVzIiwgd2ViUmVxdWVz
dC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
cmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZB
SUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6
aW5pdFRvUmVzdW1lV2l0aEJ1bmRsZSgKICAgICAgICAgLyogW2luXSAqLyBCU1RSIGJ1bmRsZVBh
dGgsIAogICAgICAgICAvKiBbaW5dICovIElXZWJEb3dubG9hZERlbGVnYXRlKiBkZWxlZ2F0ZSkK
IHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExPRyhEb3dubG9hZCwgIkF0dGVtcHRpbmcgcmVz
dW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdM
ZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgZXh0cmFjdFJlc3VtZURhdGFGcm9tQnVuZGxlKFN0cmlu
ZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpKSk7CkBAIC0yODMsNiArMzAz
LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmkKIAogICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGNvbXBsZXRlLCByZXN1
bWVkIGRvd25sb2FkIG9mIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdM
ZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNl
CisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5SZXN1bWVEb3dubG9hZERl
Y29kZWRXaXRoRW5jb2RpbmdNSU1FVHlwZSgKQEAgLTI5NSw2ICszMTksNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRG93bmxvYWQ6OnN0YXJ0KCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExPRyhE
b3dubG9hZCwgIldlYkRvd25sb2FkIC0gU3RhcnRpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwog
ICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTMwNSwxMCAr
MzMwLDE1IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnMKICAgICBk
aWRTdGFydCgpOwogCiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsKCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9hZCAoJXApIiwgdGhp
cyk7CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwpAQCAtMzE2
LDEwICszNDYsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6Ywog
ICAgIENGVVJMRG93bmxvYWRDYW5jZWwobV9kb3dubG9hZC5nZXQoKSk7CiAgICAgbV9kb3dubG9h
ZCA9IDA7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
IHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAg
IExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9hZCAoJXApLCB3
cml0aW5nIHJlc3VtZSBpbmZvcm1hdGlvbiB0byBmaWxlIGlmIHBvc3NpYmxlIiwgdGhpcyk7CiAg
ICAgQVNTRVJUKG1fZG93bmxvYWQpOwogICAgIGlmICghbV9kb3dubG9hZCkKQEAgLTM0NiwyMSAr
MzgxLDMxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmMKIGV4aXQ6
CiAgICAgbV9kb3dubG9hZCA9IDA7CiAgICAgcmV0dXJuIGhyOworI2Vsc2UKKyAgIG5vdEltcGxl
bWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUoCiAgICAgICAg
IC8qIFtvdXQsIHJldHZhbF0gKi8gQk9PTCogcmVzdWx0KQogeworI2lmIFVTRShDRk5FVFdPUksp
CiAgICAgaWYgKCFtX2Rvd25sb2FkKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgICpyZXN1
bHQgPSBDRlVSTERvd25sb2FkRGVsZXRlc1Vwb25GYWlsdXJlKG1fZG93bmxvYWQuZ2V0KCkpOwog
ICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1cm4g
RV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxv
YWQ6OmJ1bmRsZVBhdGhGb3JUYXJnZXRQYXRoKAogICAgICAgICAvKiBbaW5dICovIEJTVFIgdGFy
Z2V0UGF0aCwgCiAgICAgICAgIC8qIFtvdXQsIHJldHZhbF0gKi8gQlNUUiogYnVuZGxlUGF0aCkK
IHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghdGFyZ2V0UGF0aCkKICAgICAgICAgcmV0
dXJuIEVfSU5WQUxJREFSRzsKIApAQCAtMzc2LDYgKzQyMSwxMCBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjpiCiAgICAgaWYgKCEqYnVuZGxlUGF0aCkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQogCiBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkRvd25sb2FkOjpyZXF1ZXN0KApAQCAtMzkyLDE2ICs0NDEsMjIgQEAgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6cgogSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEb3dubG9hZDo6c2V0RGVsZXRlc0ZpbGVVcG9uRmFpbHVyZSgKICAgICAgICAgLyog
W2luXSAqLyBCT09MIGRlbGV0ZXNGaWxlVXBvbkZhaWx1cmUpCiB7CisjaWYgVVNFKENGTkVUV09S
SykKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgQ0ZV
UkxEb3dubG9hZFNldERlbGV0ZXNVcG9uRmFpbHVyZShtX2Rvd25sb2FkLmdldCgpLCAhIWRlbGV0
ZXNGaWxlVXBvbkZhaWx1cmUpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxl
bWVudGVkKCk7CisgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKAogICAgICAgICAvKiBbaW5d
ICovIEJTVFIgcGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd092ZXJ3cml0ZSkK
IHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIApAQCAtNDE1LDYgKzQ3MCwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFdlYkRvd25sb2FkOjpzCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBTZXQg
ZGVzdGluYXRpb24gdG8gJXMiLCBtX2J1bmRsZVBhdGguYXNjaWkoKS5kYXRhKCkpOwogCiAgICAg
cmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgIHJldHVybiBFX0ZB
SUw7CisjZW5kaWYKIH0KIAogLy8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTQyMiw2ICs0ODEsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkRvd25sb2FkOjpzCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpj
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UqKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgaWYg
KG1fZG93bmxvYWQpIHsKICAgICAgICAgQ0ZVUkxEb3dubG9hZENhbmNlbChtX2Rvd25sb2FkLmdl
dCgpKTsKICAgICAgICAgbV9kb3dubG9hZCA9IDA7CkBAIC00MzMsMTEgKzQ5MywxNiBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgbV9kZWxlZ2F0ZS0+ZGlk
RmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKICAgICByZXR1cm4gU19PSzsK
KyNlbHNlCisgICBub3RJbXBsZW1lbnRlZCgpOworICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjb250aW51ZVdpdGhv
dXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNF
KENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdl
YkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAg
ICAgICAgcmV0dXJuIEVfTk9JTlRFUkZBQ0U7CkBAIC00NDUsMTIgKzUxMCwxNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjCiAgICAgaWYgKG1fZG93bmxvYWQpCiAg
ICAgICAgIENGVVJMRG93bmxvYWRVc2VDcmVkZW50aWFsKG1fZG93bmxvYWQuZ2V0KCksIDAsIHdl
YkNoYWxsZW5nZS0+YXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKS5jZlVSTEF1dGhDaGFsbGVuZ2VS
ZWYoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxzZQorICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
IHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJEb3dubG9hZDo6dXNlQ3JlZGVudGlhbCgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3Jl
ZGVudGlhbCogY3JlZGVudGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBD
T01QdHI8V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwg
Y2hhbGxlbmdlKTsKICAgICBpZiAoIXdlYkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfTk9J
TlRFUkZBQ0U7CkBAIC00NjQsOCArNTM0LDEzIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViRG93bmxvYWQ6OnUKICAgICBpZiAobV9kb3dubG9hZCkKICAgICAgICAgQ0ZVUkxEb3dubG9h
ZFVzZUNyZWRlbnRpYWwobV9kb3dubG9hZC5nZXQoKSwgY2ZDcmVkZW50aWFsLmdldCgpLCB3ZWJD
aGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkuY2ZVUkxBdXRoQ2hhbGxlbmdlUmVm
KCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICBy
ZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0ZORVRXT1JLKQogLy8gQ0ZVUkxE
b3dubG9hZCBDYWxsYmFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZCBXZWJEb3dubG9hZDo6ZGlkU3RhcnQo
KQogewpAQCAtNzk4LDMgKzg3Myw0IEBAIGV4aXQ6CiAgICAgZmNsb3NlKGJ1bmRsZSk7CiAgICAg
cmV0dXJuIGhyOwogfQorI2VuZGlmCkluZGV4OiBXZWJLaXQvd2luL1dlYkRvd25sb2FkLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5oCShyZXZpc2lvbiAzOTYzMikKKysr
IFdlYktpdC93aW4vV2ViRG93bmxvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3
IEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3JlZGVudGlhbCogY3JlZGVu
dGlhbCwgCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KiBjaGFsbGVuZ2UpOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBDRlVSTERvd25sb2Fk
IENhbGxiYWNrcwogICAgIHZvaWQgZGlkU3RhcnQoKTsKICAgICBDRlVSTFJlcXVlc3RSZWYgd2ls
bFNlbmRSZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZik7CkBAIC0xMTYs
MTMgKzExNywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihDRlVS
TFJlZik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoQ0ZFcnJvclJl
Zik7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIFVMT05HIG1fcmVmQ291bnQ7CiAKICAgICBX
ZWJDb3JlOjpTdHJpbmcgbV9kZXN0aW5hdGlvbjsKICAgICBXZWJDb3JlOjpTdHJpbmcgbV9idW5k
bGVQYXRoOworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGVVJMRG93bmxvYWRS
ZWY+IG1fZG93bmxvYWQ7CisjZW5kaWYKICAgICBDT01QdHI8SVdlYk11dGFibGVVUkxSZXF1ZXN0
PiBtX3JlcXVlc3Q7CiAgICAgQ09NUHRyPElXZWJEb3dubG9hZERlbGVnYXRlPiBtX2RlbGVnYXRl
OwogCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMzk2MzIpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsMTEgKzk4LDEzIEBACiAKICNpbmNsdWRlIDxDb3Jl
R3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAKKyNpZiBQTEFURk9STShDRykKIC8vIENHIFNQSSB1
c2VkIGZvciBwcmludGluZwogZXh0ZXJuICJDIiB7CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dD
b250ZXh0R2V0QmFzZUNUTShDR0NvbnRleHRSZWYgYyk7IAogICAgIHZvaWQgQ0dDb250ZXh0U2V0
QmFzZUNUTShDR0NvbnRleHRSZWYgYywgQ0dBZmZpbmVUcmFuc2Zvcm0gbSk7IAogfQorI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
QEAgLTE4MTMsNiArMTgxNSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6
OnNwb28KICAgICBoZWFkZXJBbmRGb290ZXJIZWlnaHRzKCZoZWFkZXJIZWlnaHQsICZmb290ZXJI
ZWlnaHQpOwogICAgIEdyYXBoaWNzQ29udGV4dCBzcG9vbEN0eChwY3R4KTsKIAorI2lmIFBMQVRG
T1JNKENHKQogICAgIGZvciAoVUlOVCBpaSA9IHN0YXJ0UGFnZTsgaWkgPCBlbmRQYWdlOyBpaSsr
KSB7CiAgICAgICAgIEludFJlY3QgcGFnZVJlY3QgPSBtX3BhZ2VSZWN0c1tpaV07CiAKQEAgLTE4
NTYsNiArMTg1OSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb28K
ICAgICAgICAgQ0dDb250ZXh0RW5kUGFnZShwY3R4KTsKICAgICAgICAgQ0dDb250ZXh0UmVzdG9y
ZUdTdGF0ZShwY3R4KTsKICAgICB9CisjZW5kaWYKICAKICAgICByZXR1cm4gU19PSzsKIH0KSW5k
ZXg6IFdlYktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCShyZXZpc2lvbiAzOTYzMikKKysrIFdl
YktpdC93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw5
ICszNSwxMiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQlN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ1N0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9ybURhdGEuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRs
ZS5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
KwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIC8vIElXZWJVUkxSZXF1ZXN0IC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTM2Nyw5ICszNzAsMTUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJNdXRhYmxl
VVJMUgogewogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisj
aWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVxdWVzdFJlZj4g
bXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJsZUNvcHkoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgbV9yZXF1ZXN0LmNmVVJMUmVxdWVzdCgpKSk7CiAgICAgKnJlc3Vs
dCA9IGNyZWF0ZUluc3RhbmNlKFJlc291cmNlUmVxdWVzdChtdXRhYmxlUmVxdWVzdC5nZXQoKSkp
OwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisgICByZXR1
cm4gRV9OT1RJTVBMOworI2VuZGlmCiB9CiAKIC8vIElXZWJNdXRhYmxlVVJMUmVxdWVzdCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBX
ZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMzk2MzIpCisrKyBXZWJLaXQvd2luL1dlYlByZWZl
cmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsOSBAQAogI2luY2x1ZGUgPHNo
bG9iai5oPgogI2luY2x1ZGUgPHNoZm9sZGVyLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KKyNpZiBF
TkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2Uv
V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogCkBAIC05NjYsNyArOTY4LDkgQEAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlcwogICAgIHNldEludGVnZXJWYWx1
ZShDRlNUUihXZWJLaXRGb250U21vb3RoaW5nVHlwZVByZWZlcmVuY2VLZXkpLCBzbW9vdGhpbmdU
eXBlKTsKICAgICBpZiAoc21vb3RoaW5nVHlwZSA9PSBGb250U21vb3RoaW5nVHlwZVdpbmRvd3Mp
CiAgICAgICAgIHNtb290aGluZ1R5cGUgPSBGb250U21vb3RoaW5nVHlwZVN0YW5kYXJkOworI2lm
IEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogICAgIHdrU2V0Rm9udFNtb290aGluZ0xldmVsKChp
bnQpc21vb3RoaW5nVHlwZSk7CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KIApJbmRleDog
V2ViS2l0L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViVGV4dFJlbmRlcmVyLmNwcAkocmV2aXNpb24gMzk2MzIpCisrKyBXZWJLaXQvd2luL1dlYlRl
eHRSZW5kZXJlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDkgQEAKICNpbmNsdWRl
ICJXZWJLaXRETEwuaCIKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGU3RyaW5nLmg+Cisj
aWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgogCiBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJlcjo6Y3JlYXRlSW5zdGFu
Y2UoKQpAQCAtOTAsNiArOTIsOCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlRleHRS
ZW5kZXJlCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHN0cmluZyhBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGZvbnRGaWxlUGF0aCksIHN0YXRpY19jYXN0PENG
SW5kZXg+KHdjc2xlbihmb250RmlsZVBhdGgpKSkpOworI2lmIEVOQUJMRShTQUZBUklfSU5URVJG
QUNFKQogICAgIHdrQWRkRm9udHNBdFBhdGgoc3RyaW5nLmdldCgpKTsKKyNlbmRpZgogICAgIHJl
dHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5jcHAJKHJldmlzaW9uIDM5NjMyKQorKysgV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw5ICsxNDksMTAgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aQogCiAgICAgLy8gRklYTUU6
IEFmdGVyIHdlIGNoYW5nZSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSB0byB1c2UgIlJlc291cmNl
SGFuZGxlIiBhcyB0aGUgYWJzdHJhY3QgIlNlbmRlciIgb3IgIlNvdXJjZSBvZiB0aGlzIEF1dGgg
Q2hhbGxlbmdlIiwgdGhlbiB3ZSdsbAogICAgIC8vIGNvbnN0cnVjdCB0aGUgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2Ugd2l0aCB0aGF0IGFzIG9idGFpbmVkIGZyb20gdGhlIHdlYlNlbmRlcgotCisj
aWYgVVNFKENGTkVUV09SSykKICAgICBtX2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2Uod2ViU3BhY2UtPnByb3RlY3Rpb25TcGFjZSgpLCB3ZWJDcmVkZW50
aWFsLT5jcmVkZW50aWFsKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cmV2aW91c0ZhaWx1cmVDb3VudCwgd2ViUmVzcG9uc2UtPnJlc291cmNlUmVzcG9uc2UoKSwgd2Vi
RXJyb3ItPnJlc291cmNlRXJyb3IoKSk7CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KIApJ
bmRleDogV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlci5jcHAJKHJldmlzaW9uIDM5NjMyKQorKysgV2ViS2l0L3dpbi9XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5oIgogCiAjaW5j
bHVkZSAiQ09NUHRyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJX
ZWJLaXQuaCIKICNpbmNsdWRlICJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2lu
Y2x1ZGUgIldlYlVSTENyZWRlbnRpYWwuaCIKQEAgLTEwMCwyOSArMTAxLDQwIEBAIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIFdlYlVSTEF1dGhlbnRpY2EKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKAogICAgICAgICAvKiBbaW5dICovIElXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogY2hhbGxlbmdlKQogeworI2lmIFVTRShDRk5FVFdPUkspCiAgICAgQ09NUHRyPFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiB3ZWJDaGFsbGVuZ2UoUXVlcnksIGNoYWxsZW5n
ZSk7CiAgICAgaWYgKCF3ZWJDaGFsbGVuZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAg
ICBtX2hhbmRsZS0+cmVjZWl2ZWRDYW5jZWxsYXRpb24od2ViQ2hhbGxlbmdlLT5hdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpKTsKICAgICByZXR1cm4gU19PSzsKKyNlbHNlCisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gRV9GQUlMOworI2VuZGlmCiB9CiAKIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNvbnRpbnVl
V2l0aG91dENyZWRlbnRpYWxGb3JBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgKICAgICAgICAgLyog
W2luXSAqLyBJV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQogICAgIENPTVB0cjxXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZT4gd2ViQ2hhbGxlbmdlKFF1ZXJ5LCBjaGFsbGVuZ2UpOwogICAgIGlmICghd2ViQ2hhbGxlbmdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgbV9oYW5kbGUtPnJlY2VpdmVkUmVxdWVz
dFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbCh3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKCkpOwogICAgIHJldHVybiBTX09LOworI2Vsc2UKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBFX0ZBSUw7CisjZW5kaWYKIH0KIAogSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6dXNlQ3JlZGVudGlh
bCgKICAgICAgICAgLyogW2luXSAqLyBJV2ViVVJMQ3JlZGVudGlhbCogY3JlZGVudGlhbCwgCiAg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVu
Z2UpCiB7CisjaWYgVVNFKENGTkVUV09SSykKICAgICBDT01QdHI8V2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U+IHdlYkNoYWxsZW5nZShRdWVyeSwgY2hhbGxlbmdlKTsKICAgICBpZiAoIXdl
YkNoYWxsZW5nZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKQEAgLTEzMyw2ICsxNDUsMTAgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJVUkxBdXRoZW50aQogCiAgICAgbV9oYW5kbGUt
PnJlY2VpdmVkQ3JlZGVudGlhbCh3ZWJDaGFsbGVuZ2UtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCksIHdlYkNyZWRlbnRpYWwtPmNyZWRlbnRpYWwoKSk7CiAgICAgcmV0dXJuIFNfT0s7CisjZWxz
ZQorICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEVfRkFJTDsKKyNlbmRpZgogfQog
CiAvLyBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBX
ZWJLaXQvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcAkocmV2aXNpb24gMzk2MzIpCisrKyBXZWJLaXQvd2luL1dlYlVSTFJl
c3BvbnNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIk1h
cnNoYWxsaW5nSGVscGVycy5oIgogI2luY2x1ZGUgIldlYkxvY2FsaXphYmxlU3RyaW5ncy5oIgog
Ci0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5o
PgogI2luY2x1ZGUgPHd0Zi9wbGF0Zm9ybS5oPgogI3ByYWdtYSB3YXJuaW5nKCBwdXNoLCAwICkK
ICNpbmNsdWRlIDxXZWJDb3JlL0JTdHJpbmcuaD4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMzk2MzIp
CisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTAgKzEw
MywxOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU1ZhbHVlLmg+CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29y
ay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJp
di5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgorCisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0UpCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVt
SW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPiAKKyNlbmRpZgorCiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDxkaW1tLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+CkBA
IC0xMjUsNiArMTMzLDcgQEAgc3RhdGljIEhhc2hTZXQ8V2ViVmlldyo+IHBlbmRpbmdEZWxldGVC
YQogc3RhdGljIFN0cmluZyBvc1ZlcnNpb24oKTsKIHN0YXRpYyBTdHJpbmcgd2ViS2l0VmVyc2lv
bigpOwogCisjaWYgVVNFKENGTkVUV09SSykKIHR5cGVkZWYgQ0ZVUkxDYWNoZVJlZiAoKkNvcHlT
aGFyZWRVUkxDYWNoZUZ1bmN0aW9uKSgpOwogCiBzdGF0aWMgSE1PRFVMRSBmaW5kQ0ZOZXR3b3Jr
TW9kdWxlKCkKQEAgLTEzOCw2ICsxNDcsNyBAQCBzdGF0aWMgQ29weVNoYXJlZFVSTENhY2hlRnVu
Y3Rpb24gZmluZENvCiB7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29weVNoYXJlZFVS
TENhY2hlRnVuY3Rpb24+KEdldFByb2NBZGRyZXNzKGZpbmRDRk5ldHdvcmtNb2R1bGUoKSwgIkNG
VVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUiKSk7CiB9CisjZW5kaWYKIAogV2ViVmlldyoga2l0
KFBhZ2UqIHBhZ2UpCiB7CkBAIC0zODEsNiArMzkxLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNo
ZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVN
b2RlbCA9PSBzX2NhY2hlTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShDRk5FVFdP
UkspCiAgICAgLy8gT25jZSB3ZSByZXF1aXJlIGEgbmV3ZXIgdmVyc2lvbiBvZiBDRk5ldHdvcmsg
d2l0aCB0aGUgQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSBmdW5jdGlvbiwKICAgICAvLyB3
ZSBjYW4gY2FsbCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlIGRpcmVjdGx5IGFuZCBlbGlt
aW5hdGUgY29weVNoYXJlZFVSTENhY2hlLgogICAgIHN0YXRpYyBDb3B5U2hhcmVkVVJMQ2FjaGVG
dW5jdGlvbiBjb3B5U2hhcmVkVVJMQ2FjaGUgPSBmaW5kQ29weVNoYXJlZFVSTENhY2hlRnVuY3Rp
b24oKTsKQEAgLTU2MSw2ICs1NzIsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2Vi
Q2FjaGVNb2RlCiAgICAgc19kaWRTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKICAgICBzX2NhY2hlTW9k
ZWwgPSBjYWNoZU1vZGVsOwogICAgIHJldHVybjsKKyNlbmRpZgogfQogCiBXZWJDYWNoZU1vZGVs
IFdlYlZpZXc6OmNhY2hlTW9kZWwoKQpAQCAtNDIzMiw5ICs0MjQ0LDExIEBAIEhSRVNVTFQgdXBk
YXRlU2hhcmVkU2V0dGluZ3NGcm9tUHJlZmVyZW4KICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAg
ICAgcmV0dXJuIGhyOwogCisjaWYgVVNFKENGTkVUV09SSykKICAgICAvLyBTZXQgY29va2llIHN0
b3JhZ2UgYWNjZXB0IHBvbGljeQogICAgIGlmIChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tp
ZVN0b3JhZ2UgPSBjdXJyZW50Q29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhUVFBDb29raWVT
dG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGFjY2VwdFBvbGljeSk7
CisjZW5kaWYKIAogICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDM5NjMy
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJET01IVE1MQ2xhc3Nl
cy5oIgogI2luY2x1ZGUgIkVtYmVkZGVkV2lkZ2V0LmgiCiAjaW5jbHVkZSAiTWFyc2hhbGxpbmdI
ZWxwZXJzLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJXZWJDYWNo
ZWRQYWdlUGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiV2ViQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTEyNCw2ICsxMjUsNyBAQCBib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKKyNpZiBVU0UoQ0ZORVRXT1JLKQogICAgIEFTU0VS
VChjaGFsbGVuZ2Uuc291cmNlSGFuZGxlKCkpOwogCiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1f
d2ViRnJhbWUtPndlYlZpZXcoKTsKQEAgLTEzNyw2ICsxMzksOSBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgLy8gSWYgdGhlIFJlc291cmNlTG9hZERlbGVn
YXRlIGRvZXNuJ3QgZXhpc3Qgb3IgZmFpbHMgdG8gaGFuZGxlIHRoZSBjYWxsLCB3ZSB0ZWxsIHRo
ZSBSZXNvdXJjZUhhbmRsZQogICAgIC8vIHRvIGNvbnRpbnVlIHdpdGhvdXQgY3JlZGVudGlhbCAt
IHRoaXMgaXMgdGhlIGJlc3QgYXBwcm94aW1hdGlvbiBvZiBNYWMgYmVoYXZpb3IKICAgICBjaGFs
bGVuZ2Uuc291cmNlSGFuZGxlKCktPnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3Jl
ZGVudGlhbChjaGFsbGVuZ2UpOworI2Vsc2UKKyAgIG5vdEltcGxlbWVudGVkKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCkBAIC00
OTYsNiArNTAxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29ucwog
CiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRQYWdl
KENhY2hlZFBhZ2UqIGNhY2hlZFBhZ2UpCiB7CisjaWYgRU5BQkxFKENGTkVUV09SSykKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKICAgICBpZiAoIWNvcmVGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNTA0LDYgKzUxMCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnNhdmVQbGF0Zm9ybUQKIAogICAgIFdlYkNhY2hlZFBhZ2VQbGF0Zm9ybURhdGEqIHdl
YlBsYXRmb3JtRGF0YSA9IG5ldyBXZWJDYWNoZWRQYWdlUGxhdGZvcm1EYXRhKHN0YXRpY19jYXN0
PElXZWJEYXRhU291cmNlKj4oZ2V0V2ViRGF0YVNvdXJjZShjb3JlRnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpKSkpOwogICAgIGNhY2hlZFBhZ2UtPnNldENhY2hlZFBhZ2VQbGF0Zm9y
bURhdGEod2ViUGxhdGZvcm1EYXRhKTsKKyNlbHNlCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNl
bmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26615</attachid>
            <date>2009-01-11 14:03:53 -0800</date>
            <delta_ts>2009-01-23 21:28:49 -0800</delta_ts>
            <desc>Patch against ToT</desc>
            <filename>everything.diff</filename>
            <type>text/plain</type>
            <size>7623</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzOTgwOCkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDcgQEAKICNp
ZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRyAxCiAjZGVmaW5lIFdURl9Q
TEFURk9STV9DSSAxCisjZGVmaW5lIEVOQUJMRV9TQUZBUklfSU5URVJGQUNFIDEKICNlbmRpZgog
CiAvKiBQTEFURk9STShTS0lBKSBmb3IgV2luL0xpbnV4LCBDRy9DSSBmb3IgTWFjICovCkBAIC0x
NTksNiArMTYwLDcgQEAKIC8qIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGZyb20gYSBi
bGFja2xpc3QgdG8gYSB3aGl0ZWxpc3QgKi8KICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZP
Uk0oUVQpICYmICFQTEFURk9STShXWCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmluZSBX
VEZfUExBVEZPUk1fQ0FJUk8gMQorI3VuZGVmIEVOQUJMRV9WSURFTwogI2VuZGlmCiAKIC8qIENQ
VSAqLwpAQCAtMzExLDYgKzMxMyw3IEBACiAKICNpZiBQTEFURk9STShXSU4pCiAjZGVmaW5lIFdU
Rl9VU0VfV0lOSU5FVCAxCisvKiAjZGVmaW5lIFdURl9VU0VfQ1VSTCAxICovCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKFdYKQpJbmRleDogV2ViQ29yZS9jb25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiAzOTgwOCkKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDE3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJ
TikKKyNpZiAwCiAjZGVmaW5lIFdURl9QTEFURk9STV9DRyAxCiAjdW5kZWYgV1RGX1BMQVRGT1JN
X0NBSVJPCiAjZGVmaW5lIFdURl9VU0VfQ0ZORVRXT1JLIDEKKyN1bmRlZiBXVEZfVVNFX0NVUkwK
KyNlbHNlCisjdW5kZWYgV1RGX1BMQVRGT1JNX0NHCisjZGVmaW5lIFdURl9QTEFURk9STV9DQUlS
TyAxCisjdW5kZWYgV1RGX1VTRV9DRk5FVFdPUksKKyNkZWZpbmUgV1RGX1VTRV9DVVJMIDEKKyNl
bmRpZgogI3VuZGVmIFdURl9VU0VfV0lOSU5FVAogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0YgMQog
I2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
YnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCShyZXZpc2lvbiAzOTgwOCkKKysrIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw1ICs2NSw2IEBAIG1rZGlyIC1wICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFMKIGNkICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMiCiAKIGV4cG9ydCBX
ZWJDb3JlPSIke1hTUkNST09UfSIKLWV4cG9ydCBGRUFUVVJFX0RFRklORVM9IkVOQUJMRV9EQVRB
QkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxFX0lDT05EQVRBQkFTRSBFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9YUEFUSCBFTkFCTEVfU1ZHIEVOQUJMRV9TVkdfQU5J
TUFUSU9OIEVOQUJMRV9TVkdfRk9OVFMgRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCBFTkFCTEVf
U1ZHX0FTX0lNQUdFIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9XT1JLRVJTIEVOQUJMRV9WSURFTyIK
KyNleHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9S
QUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBF
TkFCTEVfWFBBVEggRU5BQkxFX1NWRyBFTkFCTEVfU1ZHX0FOSU1BVElPTiBFTkFCTEVfU1ZHX0ZP
TlRTIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVf
U1ZHX1VTRSBFTkFCTEVfV01MIEVOQUJMRV9XT1JLRVJTIEVOQUJMRV9WSURFTyIKK2V4cG9ydCBG
RUFUVVJFX0RFRklORVM9IkVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxF
X0lDT05EQVRBQkFTRSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9YUEFU
SCBFTkFCTEVfU1ZHIEVOQUJMRV9TVkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfRk9OVFMgRU5BQkxF
X1NWR19GT1JFSUdOX09CSkVDVCBFTkFCTEVfU1ZHX0FTX0lNQUdFIEVOQUJMRV9TVkdfVVNFIEVO
QUJMRV9XT1JLRVJTIgogbWFrZSAtZiAiJFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSIgLWog
JHtOVU1DUFVTfSB8fCBleGl0IDEKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAzOTgwOCkKKysrIFdl
YktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBACiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNwcmFnbWEgd2FybmluZyhwb3ApCiAKKyNpZiBQ
TEFURk9STShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAKIC8v
IENHIFNQSSB1c2VkIGZvciBwcmludGluZwpAQCAtMTAzLDYgKzEwNCw3IEBAIGV4dGVybiAiQyIg
ewogICAgIENHQWZmaW5lVHJhbnNmb3JtIENHQ29udGV4dEdldEJhc2VDVE0oQ0dDb250ZXh0UmVm
IGMpOyAKICAgICB2b2lkIENHQ29udGV4dFNldEJhc2VDVE0oQ0dDb250ZXh0UmVmIGMsIENHQWZm
aW5lVHJhbnNmb3JtIG0pOyAKIH0KKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xODEzLDYgKzE4MTUsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAgaGVhZGVyQW5kRm9vdGVySGVp
Z2h0cygmaGVhZGVySGVpZ2h0LCAmZm9vdGVySGVpZ2h0KTsKICAgICBHcmFwaGljc0NvbnRleHQg
c3Bvb2xDdHgocGN0eCk7CiAKKyNpZiBQTEFURk9STShDRykKICAgICBmb3IgKFVJTlQgaWkgPSBz
dGFydFBhZ2U7IGlpIDwgZW5kUGFnZTsgaWkrKykgewogICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0
ID0gbV9wYWdlUmVjdHNbaWldOwogCkBAIC0xODU2LDYgKzE4NTksNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkZyYW1lOjpzcG9vCiAgICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0
eCk7CiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlm
CiAgCiAgICAgcmV0dXJuIFNfT0s7CiB9CkluZGV4OiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNp
b24gMzk4MDgpCisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNyArNDYsOSBAQAogI2luY2x1ZGUgPHNobG9iai5oPgogI2luY2x1ZGUgPHNoZm9s
ZGVyLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkK
ICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
CisjZW5kaWYKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJh
eVB0ci5oPgogCkBAIC05NzcsNyArOTc5LDkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJQcmVmZXJlbmNlcwogICAgIHNldEludGVnZXJWYWx1ZShDRlNUUihXZWJLaXRGb250U21vb3Ro
aW5nVHlwZVByZWZlcmVuY2VLZXkpLCBzbW9vdGhpbmdUeXBlKTsKICAgICBpZiAoc21vb3RoaW5n
VHlwZSA9PSBGb250U21vb3RoaW5nVHlwZVdpbmRvd3MpCiAgICAgICAgIHNtb290aGluZ1R5cGUg
PSBGb250U21vb3RoaW5nVHlwZU1lZGl1bTsKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkK
ICAgICB3a1NldEZvbnRTbW9vdGhpbmdMZXZlbCgoaW50KXNtb290aGluZ1R5cGUpOworI2VuZGlm
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTk5Miw3ICs5OTYsOSBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzCiAgICAgLyogW2luXSAqLyBmbG9hdCBjb250cmFz
dCkKIHsKICAgICBzZXRGbG9hdFZhbHVlKENGU1RSKFdlYktpdEZvbnRTbW9vdGhpbmdDb250cmFz
dFByZWZlcmVuY2VLZXkpLCBjb250cmFzdCk7CisjaWYgRU5BQkxFKFNBRkFSSV9JTlRFUkZBQ0Up
CiAgICAgd2tTZXRGb250U21vb3RoaW5nQ29udHJhc3QoY29udHJhc3QpOworI2VuZGlmCiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKSW5kZXg6IFdlYktpdC93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlRleHRSZW5kZXJlci5jcHAJKHJldmlzaW9uIDM5
ODA4KQorKysgV2ViS2l0L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw3ICszMiw5IEBACiAjaW5jbHVkZSAiV2ViS2l0RExMLmgiCiAKICNpbmNsdWRlIDxDb3Jl
Rm91bmRhdGlvbi9DRlN0cmluZy5oPgorI2lmIEVOQUJMRShTQUZBUklfSU5URVJGQUNFKQogI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KKyNl
bmRpZgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogV2ViVGV4dFJlbmRlcmVyKiBXZWJU
ZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkwLDYgKzkyLDggQEAgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJUZXh0UmVuZGVyZQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHJpbmcoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihmb250
RmlsZVBhdGgpLCBzdGF0aWNfY2FzdDxDRkluZGV4Pih3Y3NsZW4oZm9udEZpbGVQYXRoKSkpKTsK
KyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKICAgICB3a0FkZEZvbnRzQXRQYXRoKHN0cmlu
Zy5nZXQoKSk7CisjZW5kaWYKICAgICByZXR1cm4gU19PSzsKIH0KSW5kZXg6IFdlYktpdC93aW4v
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNp
b24gMzk4MDgpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDMsMTAgKzEwMywxOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJl
YWRpbmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUg
PENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFBy
b3RvY29sUHJpdi5oPgorI2VuZGlmCisKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91
bmRhdGlvbi5oPgotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4gCisKKyNpZiBFTkFCTEUoU0FGQVJJX0lOVEVSRkFDRSkKKyNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKKwog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8ZGltbS5oPgogI2luY2x1ZGUgPG9s
ZWFjYy5oPgpAQCAtMTI1LDYgKzEzMyw3IEBAIHN0YXRpYyBIYXNoU2V0PFdlYlZpZXcqPiBwZW5k
aW5nRGVsZXRlQmEKIHN0YXRpYyBTdHJpbmcgb3NWZXJzaW9uKCk7CiBzdGF0aWMgU3RyaW5nIHdl
YktpdFZlcnNpb24oKTsKIAorI2lmIFVTRShDRk5FVFdPUkspCiB0eXBlZGVmIENGVVJMQ2FjaGVS
ZWYgKCpDb3B5U2hhcmVkVVJMQ2FjaGVGdW5jdGlvbikoKTsKIAogc3RhdGljIEhNT0RVTEUgZmlu
ZENGTmV0d29ya01vZHVsZSgpCkBAIC0xMzgsNiArMTQ3LDcgQEAgc3RhdGljIENvcHlTaGFyZWRV
UkxDYWNoZUZ1bmN0aW9uIGZpbmRDbwogewogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENv
cHlTaGFyZWRVUkxDYWNoZUZ1bmN0aW9uPihHZXRQcm9jQWRkcmVzcyhmaW5kQ0ZOZXR3b3JrTW9k
dWxlKCksICJDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlIikpOwogfQorI2VuZGlmCiAKIFdl
YlZpZXcqIGtpdChQYWdlKiBwYWdlKQogewpAQCAtMzgxLDYgKzM5MSw3IEBAIHZvaWQgV2ViVmll
dzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGUKICAgICBpZiAoc19kaWRTZXRDYWNoZU1vZGVs
ICYmIGNhY2hlTW9kZWwgPT0gc19jYWNoZU1vZGVsKQogICAgICAgICByZXR1cm47CiAKKyNpZiBV
U0UoQ0ZORVRXT1JLKQogICAgIC8vIE9uY2Ugd2UgcmVxdWlyZSBhIG5ld2VyIHZlcnNpb24gb2Yg
Q0ZOZXR3b3JrIHdpdGggdGhlIENGVVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUgZnVuY3Rpb24s
CiAgICAgLy8gd2UgY2FuIGNhbGwgQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSBkaXJlY3Rs
eSBhbmQgZWxpbWluYXRlIGNvcHlTaGFyZWRVUkxDYWNoZS4KICAgICBzdGF0aWMgQ29weVNoYXJl
ZFVSTENhY2hlRnVuY3Rpb24gY29weVNoYXJlZFVSTENhY2hlID0gZmluZENvcHlTaGFyZWRVUkxD
YWNoZUZ1bmN0aW9uKCk7CkBAIC01NjEsNiArNTcyLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNo
ZU1vZGVsKFdlYkNhY2hlTW9kZQogICAgIHNfZGlkU2V0Q2FjaGVNb2RlbCA9IHRydWU7CiAgICAg
c19jYWNoZU1vZGVsID0gY2FjaGVNb2RlbDsKICAgICByZXR1cm47CisjZW5kaWYKIH0KIAogV2Vi
Q2FjaGVNb2RlbCBXZWJWaWV3OjpjYWNoZU1vZGVsKCkKQEAgLTQyMjMsOSArNDIzNSwxMSBAQCBI
UkVTVUxUIHVwZGF0ZVNoYXJlZFNldHRpbmdzRnJvbVByZWZlcmVuCiAgICAgaWYgKEZBSUxFRCho
cikpCiAgICAgICAgIHJldHVybiBocjsKIAorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gU2V0
IGNvb2tpZSBzdG9yYWdlIGFjY2VwdCBwb2xpY3kKICAgICBpZiAoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlID0gY3VycmVudENvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLCBhY2Nl
cHRQb2xpY3kpOworI2VuZGlmCiAKICAgICByZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26992</attachid>
            <date>2009-01-23 21:28:49 -0800</date>
            <delta_ts>2009-03-24 13:58:05 -0700</delta_ts>
            <desc>Patch against ToT (2009-01-23)</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>5714</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA0MDIwOSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDcgQEAKIC8q
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGZyb20gYSBibGFja2xpc3QgdG8gYSB3aGl0
ZWxpc3QgKi8KICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9S
TShXWCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0FJUk8g
MQorI3VuZGVmIEVOQUJMRV9WSURFTwogI2VuZGlmCiAKIC8qIENQVSAqLwpJbmRleDogV2ViQ29y
ZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiA0MDIw
OSkKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDE3IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKKyNpZiAwCiAjZGVmaW5lIFdURl9QTEFURk9S
TV9DRyAxCiAjdW5kZWYgV1RGX1BMQVRGT1JNX0NBSVJPCiAjZGVmaW5lIFdURl9VU0VfQ0ZORVRX
T1JLIDEKKyN1bmRlZiBXVEZfVVNFX0NVUkwKKyNlbHNlCisjdW5kZWYgV1RGX1BMQVRGT1JNX0NH
CisjZGVmaW5lIFdURl9QTEFURk9STV9DQUlSTyAxCisjdW5kZWYgV1RGX1VTRV9DRk5FVFdPUksK
KyNkZWZpbmUgV1RGX1VTRV9DVVJMIDEKKyNlbmRpZgogI3VuZGVmIFdURl9VU0VfV0lOSU5FVAog
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0YgMQogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDAKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNo
CShyZXZpc2lvbiA0MDIwOSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJh
dGVkLWZpbGVzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC02NSw1ICs2NSw2IEBAIG1rZGlyIC1wICIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFMKIGNkICIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
RGVyaXZlZFNvdXJjZXMiCiAKIGV4cG9ydCBXZWJDb3JlPSIke1hTUkNST09UfSIKLWV4cG9ydCBG
RUFUVVJFX0RFRklORVM9IkVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxF
X0lDT05EQVRBQkFTRSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9TVkcg
RU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZHX0ZPTlRT
IEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1ZJREVPIEVO
QUJMRV9XT1JLRVJTIEVOQUJMRV9YUEFUSCBFTkFCTEVfWFNMVCIKKyNleHBvcnQgRkVBVFVSRV9E
RUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFU
QUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfU1ZHIEVOQUJMRV9T
VkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19GT05UUyBFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9WSURFTyBFTkFCTEVfV09S
S0VSUyBFTkFCTEVfWFBBVEggRU5BQkxFX1hTTFQiCitleHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJF
TkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfU1ZHIEVOQUJMRV9TVkdfQU5JTUFU
SU9OIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9XT1JLRVJTIEVOQUJMRV9YUEFUSCBFTkFC
TEVfWFNMVCIKIG1ha2UgLWYgIiRXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UiIC1qICR7TlVN
Q1BVU30gfHwgZXhpdCAxCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNDAyMDkpCisrKyBXZWJLaXQv
d2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsNyBAQAogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCisjaWYgUExBVEZP
Uk0oQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogCiAvLyBDRyBT
UEkgdXNlZCBmb3IgcHJpbnRpbmcKQEAgLTEwMyw2ICsxMDQsNyBAQCBleHRlcm4gIkMiIHsKICAg
ICBDR0FmZmluZVRyYW5zZm9ybSBDR0NvbnRleHRHZXRCYXNlQ1RNKENHQ29udGV4dFJlZiBjKTsg
CiAgICAgdm9pZCBDR0NvbnRleHRTZXRCYXNlQ1RNKENHQ29udGV4dFJlZiBjLCBDR0FmZmluZVRy
YW5zZm9ybSBtKTsgCiB9CisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTgxMiw2ICsxODE0LDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3BvbwogICAgIGhlYWRlckFuZEZvb3RlckhlaWdodHMo
JmhlYWRlckhlaWdodCwgJmZvb3RlckhlaWdodCk7CiAgICAgR3JhcGhpY3NDb250ZXh0IHNwb29s
Q3R4KHBjdHgpOwogCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgZm9yIChVSU5UIGlpID0gc3RhcnRQ
YWdlOyBpaSA8IGVuZFBhZ2U7IGlpKyspIHsKICAgICAgICAgSW50UmVjdCBwYWdlUmVjdCA9IG1f
cGFnZVJlY3RzW2lpXTsKIApAQCAtMTg1NSw2ICsxODU4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJGcmFtZTo6c3BvbwogICAgICAgICBDR0NvbnRleHRFbmRQYWdlKHBjdHgpOwog
ICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKHBjdHgpOwogICAgIH0KKyNlbmRpZgogIAog
ICAgIHJldHVybiBTX09LOwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA0MDIwOSkKKysrIFdlYktp
dC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDkgQEAKICNpbmNs
dWRlICJXZWJOb3RpZmljYXRpb25DZW50ZXIuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5o
IgogI3ByYWdtYSB3YXJuaW5nKCBwdXNoLCAwICkKKyNpZiBQTEFURk9STShDRykKICNpbmNsdWRl
IDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+CisjZW5kaWYKICNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9CU3RyaW5nLmg+CkBAIC0xMDMsMTAgKzEwNSwxOCBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1Zh
bHVlLmg+CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENh
Y2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgorI2Vu
ZGlmCisKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2luY2x1
ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4gCisKKyNp
ZiBVU0UoQ0ZORVRXT1JLKQorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDxkaW1tLmg+CiAjaW5jbHVkZSA8b2xlYWNjLmg+CkBAIC0xMjUsNiArMTM1LDcgQEAg
c3RhdGljIEhhc2hTZXQ8V2ViVmlldyo+IHBlbmRpbmdEZWxldGVCYQogc3RhdGljIFN0cmluZyBv
c1ZlcnNpb24oKTsKIHN0YXRpYyBTdHJpbmcgd2ViS2l0VmVyc2lvbigpOwogCisjaWYgVVNFKENG
TkVUV09SSykKIHR5cGVkZWYgQ0ZVUkxDYWNoZVJlZiAoKkNvcHlTaGFyZWRVUkxDYWNoZUZ1bmN0
aW9uKSgpOwogCiBzdGF0aWMgSE1PRFVMRSBmaW5kQ0ZOZXR3b3JrTW9kdWxlKCkKQEAgLTEzOCw2
ICsxNDksNyBAQCBzdGF0aWMgQ29weVNoYXJlZFVSTENhY2hlRnVuY3Rpb24gZmluZENvCiB7CiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Q29weVNoYXJlZFVSTENhY2hlRnVuY3Rpb24+KEdl
dFByb2NBZGRyZXNzKGZpbmRDRk5ldHdvcmtNb2R1bGUoKSwgIkNGVVJMQ2FjaGVDb3B5U2hhcmVk
VVJMQ2FjaGUiKSk7CiB9CisjZW5kaWYKIAogV2ViVmlldyoga2l0KFBhZ2UqIHBhZ2UpCiB7CkBA
IC0zODEsNiArMzkzLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9k
ZQogICAgIGlmIChzX2RpZFNldENhY2hlTW9kZWwgJiYgY2FjaGVNb2RlbCA9PSBzX2NhY2hlTW9k
ZWwpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gT25jZSB3
ZSByZXF1aXJlIGEgbmV3ZXIgdmVyc2lvbiBvZiBDRk5ldHdvcmsgd2l0aCB0aGUgQ0ZVUkxDYWNo
ZUNvcHlTaGFyZWRVUkxDYWNoZSBmdW5jdGlvbiwKICAgICAvLyB3ZSBjYW4gY2FsbCBDRlVSTENh
Y2hlQ29weVNoYXJlZFVSTENhY2hlIGRpcmVjdGx5IGFuZCBlbGltaW5hdGUgY29weVNoYXJlZFVS
TENhY2hlLgogICAgIHN0YXRpYyBDb3B5U2hhcmVkVVJMQ2FjaGVGdW5jdGlvbiBjb3B5U2hhcmVk
VVJMQ2FjaGUgPSBmaW5kQ29weVNoYXJlZFVSTENhY2hlRnVuY3Rpb24oKTsKQEAgLTU2MSw2ICs1
NzQsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlCiAgICAgc19k
aWRTZXRDYWNoZU1vZGVsID0gdHJ1ZTsKICAgICBzX2NhY2hlTW9kZWwgPSBjYWNoZU1vZGVsOwog
ICAgIHJldHVybjsKKyNlbmRpZgogfQogCiBXZWJDYWNoZU1vZGVsIFdlYlZpZXc6OmNhY2hlTW9k
ZWwoKQpAQCAtNDIyMyw5ICs0MjM3LDExIEBAIEhSRVNVTFQgdXBkYXRlU2hhcmVkU2V0dGluZ3NG
cm9tUHJlZmVyZW4KICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogCisj
aWYgVVNFKENGTkVUV09SSykKICAgICAvLyBTZXQgY29va2llIHN0b3JhZ2UgYWNjZXB0IHBvbGlj
eQogICAgIGlmIChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50
Q29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNj
ZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UsIGFjY2VwdFBvbGljeSk7CisjZW5kaWYKIAogICAgIHJl
dHVybiBTX09LOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28910</attachid>
            <date>2009-03-24 13:58:05 -0700</date>
            <delta_ts>2009-05-29 11:54:39 -0700</delta_ts>
            <desc>Patch against ToT (2009-03-24)</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>3260</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA0MTk0OSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNiArMTY1LDcgQEAKIC8q
IEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIGZyb20gYSBibGFja2xpc3QgdG8gYSB3aGl0
ZWxpc3QgKi8KICNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oUVQpICYmICFQTEFURk9S
TShXWCkgJiYgIVBMQVRGT1JNKENIUk9NSVVNKQogI2RlZmluZSBXVEZfUExBVEZPUk1fQ0FJUk8g
MQorI3VuZGVmIEVOQUJMRV9WSURFTwogI2VuZGlmCiAKIC8qIENQVSAqLwpJbmRleDogV2ViQ29y
ZS9jb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2NvbmZpZy5oCShyZXZpc2lvbiA0MTk0
OSkKKysrIFdlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDkgKzkxLDE3IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKKyNpZiAwCiAjZGVmaW5lIFdURl9QTEFURk9S
TV9DRyAxCiAjdW5kZWYgV1RGX1BMQVRGT1JNX0NBSVJPCiAjZGVmaW5lIFdURl9VU0VfQ0ZORVRX
T1JLIDEKKyN1bmRlZiBXVEZfVVNFX0NVUkwKKyNlbHNlCisjdW5kZWYgV1RGX1BMQVRGT1JNX0NH
CisjZGVmaW5lIFdURl9QTEFURk9STV9DQUlSTyAxCisjdW5kZWYgV1RGX1VTRV9DRk5FVFdPUksK
KyNkZWZpbmUgV1RGX1VTRV9DVVJMIDEKKyNlbmRpZgogI3VuZGVmIFdURl9VU0VfV0lOSU5FVAog
I2RlZmluZSBXVEZfUExBVEZPUk1fQ0YgMQogI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDAKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNo
CShyZXZpc2lvbiA0MTk0OSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJh
dGVkLWZpbGVzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC02NSw1ICs2NSw2IEBAIG1rZGlyIC1wICIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFMKIGNkICIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
RGVyaXZlZFNvdXJjZXMiCiAKIGV4cG9ydCBXZWJDb3JlPSIke1hTUkNST09UfSIKLWV4cG9ydCBG
RUFUVVJFX0RFRklORVM9IkVOQUJMRV9EQVRBQkFTRSBFTkFCTEVfRE9NX1NUT1JBR0UgRU5BQkxF
X0lDT05EQVRBQkFTRSBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TIEVOQUJMRV9TVkcg
RU5BQkxFX1NWR19BTklNQVRJT04gRU5BQkxFX1NWR19BU19JTUFHRSBFTkFCTEVfU1ZHX0ZPTlRT
IEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QgRU5BQkxFX1NWR19VU0UgRU5BQkxFX1ZJREVPIEVO
QUJMRV9XT1JLRVJTIEVOQUJMRV9YUEFUSCBFTkFCTEVfWFNMVCIKKyNleHBvcnQgRkVBVFVSRV9E
RUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFU
QUJBU0UgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfU1ZHIEVOQUJMRV9T
VkdfQU5JTUFUSU9OIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19GT05UUyBFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9WSURFTyBFTkFCTEVfV09S
S0VSUyBFTkFCTEVfWFBBVEggRU5BQkxFX1hTTFQiCitleHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJF
TkFCTEVfREFUQUJBU0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfU1ZHIEVOQUJMRV9TVkdfQU5JTUFU
SU9OIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJ
R05fT0JKRUNUIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9XT1JLRVJTIEVOQUJMRV9YUEFUSCBFTkFC
TEVfWFNMVCIKIG1ha2UgLWYgIiRXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UiIC1qICR7TlVN
Q1BVU30gfHwgZXhpdCAxCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNDE5NDkpCisrKyBXZWJLaXQv
d2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQAogI2luY2x1
ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCisjaWYgUExBVEZP
Uk0oQ0cpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogCiAvLyBDRyBT
UEkgdXNlZCBmb3IgcHJpbnRpbmcKQEAgLTEwNSw2ICsxMDYsNyBAQCBleHRlcm4gIkMiIHsKICAg
ICBDR0FmZmluZVRyYW5zZm9ybSBDR0NvbnRleHRHZXRCYXNlQ1RNKENHQ29udGV4dFJlZiBjKTsg
CiAgICAgdm9pZCBDR0NvbnRleHRTZXRCYXNlQ1RNKENHQ29udGV4dFJlZiBjLCBDR0FmZmluZVRy
YW5zZm9ybSBtKTsgCiB9CisjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMTkwMCw2ICsxOTAyLDcgQEAgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3BvbwogICAgIEdyYXBoaWNzQ29udGV4dCBzcG9vbEN0
eChwY3R4KTsKICAgICBzcG9vbEN0eC5zZXRTaG91bGRJbmNsdWRlQ2hpbGRXaW5kb3dzKHRydWUp
OwogCisjaWYgUExBVEZPUk0oQ0cpCiAgICAgZm9yIChVSU5UIGlpID0gc3RhcnRQYWdlOyBpaSA8
IGVuZFBhZ2U7IGlpKyspIHsKICAgICAgICAgSW50UmVjdCBwYWdlUmVjdCA9IG1fcGFnZVJlY3Rz
W2lpXTsKIApAQCAtMTk0Myw2ICsxOTQ2LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJGcmFtZTo6c3BvbwogICAgICAgICBDR0NvbnRleHRFbmRQYWdlKHBjdHgpOwogICAgICAgICBD
R0NvbnRleHRSZXN0b3JlR1N0YXRlKHBjdHgpOwogICAgIH0KKyNlbmRpZgogIAogICAgIHJldHVy
biBTX09LOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30783</attachid>
            <date>2009-05-29 11:54:39 -0700</date>
            <delta_ts>2009-07-13 12:05:31 -0700</delta_ts>
            <desc>Patch against TotT (2009-05-29)</desc>
            <filename>all.patch</filename>
            <type>text/plain</type>
            <size>2181</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jb25maWcuaAko
cmV2aXNpb24gNDQyNjUpCisrKyBXZWJDb3JlL2NvbmZpZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIFBMQVRGT1JN
KFdJTl9PUykgJiYgIWRlZmluZWQoQlVJTERJTkdfV1hfXykgJiYgIUNPTVBJTEVSKEdDQykKKyNp
ZiBQTEFURk9STShXSU5fT1MpICYmICFkZWZpbmVkKEJVSUxESU5HX1dYX18pCiAjaWYgZGVmaW5l
ZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwgZGVmaW5lZChCVUlMRElOR19XVEYpCiAjZGVm
aW5lIEpTX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQpAQCAtNjYsMTEg
KzY2LDExIEBACiAjZW5kaWYKIAogLy8gQ1VSTCBuZWVkcyB3aW5zb2NrLCBzbyBkb24ndCBwcmV2
ZW50IGluY2x1c2lvbiBvZiBpdAotI2lmICFVU0UoQ1VSTCkKKy8vI2lmICFVU0UoQ1VSTCkKICNp
Zm5kZWYgX1dJTlNPQ0tBUElfCiAjZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1
c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCiAjZW5kaWYKLSNlbmRpZgorLy8jZW5kaWYK
IAogI2VuZGlmIC8qIFBMQVRGT1JNKFdJTl9PUykgKi8KIApAQCAtMTA3LDEyICsxMDcsMjAgQEAK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQorI2RlZmluZSBXVEZfUExBVEZPUk1fQ0YgMQor
I2lmIDAKICNkZWZpbmUgV1RGX1BMQVRGT1JNX0NHIDEKICN1bmRlZiBXVEZfUExBVEZPUk1fQ0FJ
Uk8KICNkZWZpbmUgV1RGX1VTRV9DRk5FVFdPUksgMQorI3VuZGVmIFdURl9VU0VfQ1VSTAorI2Vs
c2UKKyN1bmRlZiBXVEZfUExBVEZPUk1fQ0cKKyNkZWZpbmUgV1RGX1BMQVRGT1JNX0NBSVJPIDEK
KyN1bmRlZiBXVEZfVVNFX0NGTkVUV09SSworI2RlZmluZSBXVEZfVVNFX0NVUkwgMQorI2VuZGlm
CisjdW5kZWYgV1RGX1VTRV9QVEhSRUFEUwogI3VuZGVmIFdURl9VU0VfV0lOSU5FVAotI2RlZmlu
ZSBXVEZfUExBVEZPUk1fQ0YgMQotI2RlZmluZSBXVEZfVVNFX1BUSFJFQURTIDAKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDQ0MjY1KQorKysgV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDcgQEAKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorI2lmIFBM
QVRGT1JNKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KIAogLy8g
Q0cgU1BJIHVzZWQgZm9yIHByaW50aW5nCkBAIC0xMDUsNiArMTA2LDcgQEAgZXh0ZXJuICJDIiB7
CiAgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dDb250ZXh0R2V0QmFzZUNUTShDR0NvbnRleHRSZWYg
Yyk7IAogICAgIHZvaWQgQ0dDb250ZXh0U2V0QmFzZUNUTShDR0NvbnRleHRSZWYgYywgQ0dBZmZp
bmVUcmFuc2Zvcm0gbSk7IAogfQorI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE5MDYsNiArMTkwOCw3IEBAIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnNwb28KICAgICBHcmFwaGljc0NvbnRleHQgc3Bv
b2xDdHgocGN0eCk7CiAgICAgc3Bvb2xDdHguc2V0U2hvdWxkSW5jbHVkZUNoaWxkV2luZG93cyh0
cnVlKTsKIAorI2lmIFBMQVRGT1JNKENHKQogICAgIGZvciAoVUlOVCBpaSA9IHN0YXJ0UGFnZTsg
aWkgPCBlbmRQYWdlOyBpaSsrKSB7CiAgICAgICAgIEludFJlY3QgcGFnZVJlY3QgPSBtX3BhZ2VS
ZWN0c1tpaV07CiAKQEAgLTE5NDksNiArMTk1Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRnJhbWU6OnNwb28KICAgICAgICAgQ0dDb250ZXh0RW5kUGFnZShwY3R4KTsKICAgICAg
ICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShwY3R4KTsKICAgICB9CisjZW5kaWYKICAKICAgICBy
ZXR1cm4gU19PSzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32669</attachid>
            <date>2009-07-13 12:05:31 -0700</date>
            <delta_ts>2009-07-13 12:05:31 -0700</delta_ts>
            <desc>Patch against ToT (@r45831)</desc>
            <filename>everything.patch</filename>
            <type>text/plain</type>
            <size>1021</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiA0NTgzMCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KICNwcmFnbWEgd2FybmluZyhwb3ApCiAKKyNpZiBQTEFURk9STShDRykKICNpbmNsdWRl
IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CiAKIC8vIENHIFNQSSB1c2VkIGZvciBwcmlu
dGluZwpAQCAtMTA1LDYgKzEwNiw3IEBAIGV4dGVybiAiQyIgewogICAgIENHQWZmaW5lVHJhbnNm
b3JtIENHQ29udGV4dEdldEJhc2VDVE0oQ0dDb250ZXh0UmVmIGMpOyAKICAgICB2b2lkIENHQ29u
dGV4dFNldEJhc2VDVE0oQ0dDb250ZXh0UmVmIGMsIENHQWZmaW5lVHJhbnNmb3JtIG0pOyAKIH0K
KyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CkBAIC0xODkzLDYgKzE4OTUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjpzcG9vCiAgICAgR3JhcGhpY3NDb250ZXh0IHNwb29sQ3R4KHBjdHgpOwogICAgIHNw
b29sQ3R4LnNldFNob3VsZEluY2x1ZGVDaGlsZFdpbmRvd3ModHJ1ZSk7CiAKKyNpZiBQTEFURk9S
TShDRykKICAgICBmb3IgKFVJTlQgaWkgPSBzdGFydFBhZ2U7IGlpIDwgZW5kUGFnZTsgaWkrKykg
ewogICAgICAgICBJbnRSZWN0IHBhZ2VSZWN0ID0gbV9wYWdlUmVjdHNbaWldOwogCkBAIC0xOTM0
LDYgKzE5MzcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzcG9vCiAg
ICAgICAgIENHQ29udGV4dEVuZFBhZ2UocGN0eCk7CiAgICAgICAgIENHQ29udGV4dFJlc3RvcmVH
U3RhdGUocGN0eCk7CiAgICAgfQorI2VuZGlmCiAgCiAgICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>