<?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>188559</bug_id>
          
          <creation_ts>2018-08-14 09:59:49 -0700</creation_ts>
          <short_desc>Use a Variant instead of a union in CSSSelector</short_desc>
          <delta_ts>2018-09-21 04:51:32 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=189758</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fujii</cc>
    
    <cc>guijemont</cc>
    
    <cc>koivisto</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1449973</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 09:59:49 -0700</bug_when>
    <thetext>Use a Variant instead of a union in CSSSelector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449974</commentid>
    <comment_count>1</comment_count>
      <attachid>347086</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 10:07:26 -0700</bug_when>
    <thetext>Created attachment 347086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450015</commentid>
    <comment_count>2</comment_count>
      <attachid>347092</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 10:55:20 -0700</bug_when>
    <thetext>Created attachment 347092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450026</commentid>
    <comment_count>3</comment_count>
      <attachid>347092</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-08-14 11:06:51 -0700</bug_when>
    <thetext>Comment on attachment 347092
Patch

Nice, r=me

At some point we&apos;ll need to rewrite these classes completely. We need separate types for Compound/Complex/SimpleSelector instead of the current mess where everything is a CSSSelector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450037</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 11:24:32 -0700</bug_when>
    <thetext>I also updated the indentation of CSSSelector.h.
http://trac.webkit.org/r234859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450038</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-14 11:25:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/43295037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450138</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-14 16:00:31 -0700</bug_when>
    <thetext>This broke WinCairo and AppleWin builds. :(

&gt; Source\WebCore\css/CSSSelector.cpp(44): error C2338: CSSSelector should remain small.

(from https://build.webkit.org/builders/WinCairo%2064-bit%20WKL%20Release%20%28Build%29/builds/2478/steps/compile-webkit/logs/stdio)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450141</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 16:05:37 -0700</bug_when>
    <thetext>What is sizeof(CSSSelector) on Windows (64- or 32-bit)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450156</commentid>
    <comment_count>8</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-14 16:27:27 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; What is sizeof(CSSSelector) on Windows (64- or 32-bit)?

On Win64 and Mac64 alike, I&apos;m seeing 16 for the struct and 12 for the sum (8 + 4).

If I change the static_assert to `== 16`, the compilation proceeds, but we still get this warning quartet over and over:

&gt; Source\WebCore\css\CSSSelector.h(363): warning C4315: &apos;WebCore::CSSSelector::RareData&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::RareData::m_attribute&apos; may not be aligned 8 as expected by the constructor
&gt; Source\WebCore\css\CSSSelector.h(365): warning C4315: &apos;WebCore::CSSSelector::RareData&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::RareData::m_argument&apos; may not be aligned 8 as expected by the constructor
&gt; Source\WebCore\css\CSSSelector.h(376): warning C4315: &apos;WebCore::CSSSelector::NameWithCase&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::NameWithCase::m_originalName&apos; may not be aligned 8 as expected by the constructor
&gt; Source\WebCore\css\CSSSelector.h(376): warning C4315: &apos;WebCore::CSSSelector::NameWithCase&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::NameWithCase::m_lowercaseLocalName&apos; may not be aligned 8 as expected by the constructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450157</commentid>
    <comment_count>9</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-14 16:30:02 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #8)
&gt; (In reply to Alex Christensen from comment #7)
&gt; &gt; What is sizeof(CSSSelector) on Windows (64- or 32-bit)?
&gt; 
&gt; On Win64 and Mac64 alike, I&apos;m seeing 16 for the struct and 12 for the sum (8
&gt; + 4).
&gt; 
&gt; If I change the static_assert to `== 16`, the compilation proceeds, but we
&gt; still get this warning quartet over and over:
&gt; 
&gt; &gt; Source\WebCore\css\CSSSelector.h(363): warning C4315: &apos;WebCore::CSSSelector::RareData&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::RareData::m_attribute&apos; may not be aligned 8 as expected by the constructor
&gt; &gt; Source\WebCore\css\CSSSelector.h(365): warning C4315: &apos;WebCore::CSSSelector::RareData&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::RareData::m_argument&apos; may not be aligned 8 as expected by the constructor
&gt; &gt; Source\WebCore\css\CSSSelector.h(376): warning C4315: &apos;WebCore::CSSSelector::NameWithCase&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::NameWithCase::m_originalName&apos; may not be aligned 8 as expected by the constructor
&gt; &gt; Source\WebCore\css\CSSSelector.h(376): warning C4315: &apos;WebCore::CSSSelector::NameWithCase&apos;: &apos;this&apos; pointer for member &apos;WebCore::CSSSelector::NameWithCase::m_lowercaseLocalName&apos; may not be aligned 8 as expected by the constructor

Oops, spoke too soon. Still encountered the error anyway...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450159</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 16:30:27 -0700</bug_when>
    <thetext>Feel free to roll it out while you look for a fix.  sizeof(CSSSelector) is definitely 12 for 64-bit Mac and linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450182</commentid>
    <comment_count>11</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-14 17:02:49 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
&gt; Feel free to roll it out while you look for a fix.  sizeof(CSSSelector) is
&gt; definitely 12 for 64-bit Mac and linux.

Alrighty. I hadn&apos;t realized right away that sizeof(SameSizeAsCSSSelector) was made irrelevant here, but it looks like sizeof(CSSSelector) is 13 on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450218</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-08-14 19:44:08 -0700</bug_when>
    <thetext>Reverted r234859 for reason:

Windows ports can&apos;t compile

Committed r234877: &lt;https://trac.webkit.org/changeset/234877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450242</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 23:04:21 -0700</bug_when>
    <thetext>Fujii or Ross, could you get this working on Windows 32-bit and 64-bit?  I think it&apos;s just a matter of tweaking a few small things, but iterating from EWS is waaay too slow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450248</commentid>
    <comment_count>14</comment_count>
      <attachid>347150</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-08-14 23:42:49 -0700</bug_when>
    <thetext>Created attachment 347150
Patch

It seems that MSVC doesn&apos;t pack char (type of Variant) and unsigned int (the flags).
One possible workaroud is using char for the flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450249</commentid>
    <comment_count>15</comment_count>
      <attachid>347150</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-08-14 23:48:13 -0700</bug_when>
    <thetext>Comment on attachment 347150
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        Add packing macros to make it so Variant-containing structures don&apos;t always have 7 bytes of padding per Variant.

This makes subsequent members after Variant in classes unaligned.
Unaligned access is a undefined behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450250</commentid>
    <comment_count>16</comment_count>
      <attachid>347151</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-08-14 23:53:20 -0700</bug_when>
    <thetext>Created attachment 347151
Patch

* Use unsigned char for the flags
* Reoder flags in order to align 8 bits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450420</commentid>
    <comment_count>17</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-15 13:17:32 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #16)
&gt; Created attachment 347151 [details]
&gt; Patch
&gt; 
&gt; * Use unsigned char for the flags
&gt; * Reoder flags in order to align 8 bits

Locally, it seems that:
 - &quot;unsigned&quot; -&gt; &quot;unsigned char&quot; makes the assert pass on Windows
 - reordering fields doesn&apos;t help us at all(?)
 - neither of these steps makes the warnings go away
 - Xcode wants the fields to be initialized in the same order that they are declared</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459074</commentid>
    <comment_count>18</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-12 13:46:01 -0700</bug_when>
    <thetext>Any luck getting this to work on Windows?  I&apos;d still like to land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459090</commentid>
    <comment_count>19</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-12 14:06:23 -0700</bug_when>
    <thetext>What about an idea adding a new class WTF::CompactVariant&lt;Traits, ...&gt; which uses a template traits to get the position of m_type member variable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459091</commentid>
    <comment_count>20</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-12 14:07:30 -0700</bug_when>
    <thetext>That seems quite excessive, and it wouldn&apos;t benefit all existing users of Variant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459242</commentid>
    <comment_count>21</comment_count>
      <attachid>349620</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-09-12 20:47:39 -0700</bug_when>
    <thetext>Created attachment 349620
Patch

* Rebased onto ToT
* Removed pragma(pack) of CSSSelector to solve the warning quartet
* Try to solve &quot;field &apos;m_pseudoType&apos; will be initialized after field &apos;m_isLastInSelectorList&apos;&quot; on Mac ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459393</commentid>
    <comment_count>22</comment_count>
      <attachid>349620</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-13 10:02:32 -0700</bug_when>
    <thetext>Comment on attachment 349620
Patch

Clearing flags on attachment: 349620

Committed r235976: &lt;https://trac.webkit.org/changeset/235976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1459394</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-13 10:02:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461545</commentid>
    <comment_count>24</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-09-20 14:33:57 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/r236284
We need to do something about alignment...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461792</commentid>
    <comment_count>25</comment_count>
    <who name="Guillaume Emont">guijemont</who>
    <bug_when>2018-09-21 04:51:32 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #24)
&gt; Rolled out in http://trac.webkit.org/r236284
&gt; We need to do something about alignment...

Note that a bug was opened about this issue https://bugs.webkit.org/show_bug.cgi?id=189758</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347086</attachid>
            <date>2018-08-14 10:07:26 -0700</date>
            <delta_ts>2018-08-14 10:55:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188559-20180814100725.patch</filename>
            <type>text/plain</type>
            <size>21494</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NTApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTE0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgVmFyaWFudCBpbnN0ZWFk
IG9mIGEgdW5pb24gaW4gQ1NTU2VsZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1ZhcmlhbnQuaDoKKyAgICAgICAgQWRkIHBhY2tpbmcg
bWFjcm9zIHRvIG1ha2UgaXQgc28gVmFyaWFudC1jb250YWluaW5nIHN0cnVjdHVyZXMgZG9uJ3Qg
YWx3YXlzIGhhdmUgNyBieXRlcyBvZiBwYWRkaW5nIHBlciBWYXJpYW50LgorCiAyMDE4LTA4LTEz
ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTWVhbmlu
ZyBvZiBPcHRpb25TZXQ6OmNvbnRhaW5zIGlzIHVuY2xlYXIgd2hlbiB1c2VkIHdpdGggT3B0aW9u
U2V0IGFyZ3VtZW50CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvVmFyaWFudC5oCShyZXZpc2lvbiAyMzQ4MTcpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9WYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MzUsNiArMTQzNSw3IEBAIHN0
cnVjdCBfX25vZXhjZXB0X3ZhcmlhbnRfc3dhcDoKIF9fbm9leGNlcHRfdmFyaWFudF9zd2FwX2lt
cGw8X19hbGxfc3dhcHBhYmxlPF9UeXBlcy4uLj46OnZhbHVlLF9UeXBlcy4uLj4KIHt9OwogCisj
cHJhZ21hIHBhY2socHVzaCwgMSkKIHRlbXBsYXRlPHR5cGVuYW1lIC4uLiBfVHlwZXM+CiBjbGFz
cyBWYXJpYW50OgogICAgICAgICBwcml2YXRlIF9fdmFyaWFudF9iYXNlPApAQCAtMTcyMSw2ICsx
NzIyLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogfTsKKyNwcmFnbWEgcGFjayhwb3Ap
CiAKIHRlbXBsYXRlPD4KIGNsYXNzIFZhcmlhbnQ8PnsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIzNDgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDQ4IEBACisyMDE4LTA4LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgVmFyaWFudCBpbnN0ZWFkIG9mIGEgdW5pb24g
aW4gQ1NTU2VsZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gVGhpcyBqdXN0IG1ha2VzIHNvbWUgb2YgdGhl
IGV4aXN0aW5nIHByb2JsZW1zIG1vcmUgb2J2aW91cyBhbmQgZWFzeSB0byBmaXguCisKKyAgICAg
ICAgSSBtb3ZlZCBtX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmcgdG8gUmFy
ZURhdGEgYmVjYXVzZSBpdCdzIG9ubHkgdXNlZCB3aXRoIFJhcmVEYXRhLgorICAgICAgICBJIG9u
bHkgaGF2ZSBtX2lzRm9yUGFnZSB3aGVuIGFzc2VydGlvbnMgYXJlIGVuYWJsZWQgYmVjYXVzZSBp
dCdzIG9ubHkgdXNlZCBmb3IgYW4gYXNzZXJ0aW9uLgorICAgICAgICBUaGUgcmVzdCBpcyBwcmV0
dHkgc3RyYWlnaHRmb3J3YXJkIHRyYW5zbGF0aW5nIHVuaW9uIHN5bnRheCB0byBWYXJpYW50IHN5
bnRheC4KKyAgICAgICAgSSB1c2UgUmVmUHRyIGZvciBub3cgd2hlcmUgSSBjb3VsZCB1c2UgUmVm
IGJlY2F1c2UgaXQncyBuZXZlciBudWxsIHRvIG1ha2UgY29weWluZyBlYXNpZXIsIGJ1dCB0aGF0
J3MgdGVtcG9yYXJ5LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6Y3JlYXRlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0QXJn
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldExhbmdBcmd1bWVudExp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0TnRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlbGVjdG9yOjptYXRjaE50aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6bnRoQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6bnRoQiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRh
KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjphcmd1bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
bGFuZ0FyZ3VtZW50TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2VsZWN0b3JMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjphdHRy
aWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0ZUNh
bm9uaWNhbExvY2FsTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjp+Q1NTU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnRhZ1FOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlbGVjdG9yOjp0YWdMb3dlcmNhc2VMb2NhbE5hbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXJpYWxpemluZ1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjphdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nSXNDYXNlSW5zZW5zaXRpdmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpjcmVhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3Rvcik6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oOgorCiAyMDE4LTA4LTEzICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBDU1NTZWxlY3Rvckxp
c3QgYSBsaXR0bGUgbW9yZSBzYW5lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJ
KHJldmlzaW9uIDIzNDgxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDExICs1NCwxMCBAQCBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0
b3IoY29uc3QgUXVhbGlmaWVkCiAgICAgLCBtX3BzZXVkb1R5cGUoMCkKICAgICAsIG1faXNMYXN0
SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgLCBtX2lzTGFzdEluVGFnSGlzdG9yeSh0cnVlKQot
ICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKLSAgICAsIG1faGFzTmFtZVdpdGhDYXNlKGZhbHNl
KQotICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgLCBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVs
ZSh0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCi0gICAgLCBtX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0
ZVZhbHVlTWF0Y2hpbmcoZmFsc2UpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICwgbV9pc0Zv
clBhZ2UoZmFsc2UpCisjZW5kaWYKICNpZiAhQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T05fRElTQUJMRUQKICAgICAsIG1fZGVzdHJ1Y3Rvckhhc0JlZW5DYWxsZWQoZmFsc2UpCiAjZW5k
aWYKQEAgLTY2LDI1ICs2NSwyMSBAQCBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoY29uc3QgUXVh
bGlmaWVkCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YWdMb2NhbE5hbWUgPSB0YWdRTmFtZS5s
b2NhbE5hbWUoKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcgdGFnTG9jYWxOYW1lQVNDSUlMb3dl
cmNhc2UgPSB0YWdMb2NhbE5hbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIAotICAgIGlm
ICh0YWdMb2NhbE5hbWUgPT0gdGFnTG9jYWxOYW1lQVNDSUlMb3dlcmNhc2UpIHsKLSAgICAgICAg
bV9kYXRhLm1fdGFnUU5hbWUgPSB0YWdRTmFtZS5pbXBsKCk7Ci0gICAgICAgIG1fZGF0YS5tX3Rh
Z1FOYW1lLT5yZWYoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtX2RhdGEubV9uYW1lV2l0aENh
c2UgPSBhZG9wdFJlZihuZXcgTmFtZVdpdGhDYXNlKHRhZ1FOYW1lLCB0YWdMb2NhbE5hbWVBU0NJ
SUxvd2VyY2FzZSkpLmxlYWtSZWYoKTsKLSAgICAgICAgbV9oYXNOYW1lV2l0aENhc2UgPSB0cnVl
OwotICAgIH0KKyAgICBpZiAodGFnTG9jYWxOYW1lID09IHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJj
YXNlKQorICAgICAgICBtX2RhdGEgPSB0YWdRTmFtZTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0
YSA9IGFkb3B0UmVmKG5ldyBOYW1lV2l0aENhc2UodGFnUU5hbWUsIHRhZ0xvY2FsTmFtZUFTQ0lJ
TG93ZXJjYXNlKSk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3I6OmNyZWF0ZVJhcmVEYXRhKCkKIHsK
ICAgICBBU1NFUlQobWF0Y2goKSAhPSBUYWcpOwotICAgIEFTU0VSVCghbV9oYXNOYW1lV2l0aENh
c2UpOwotICAgIGlmIChtX2hhc1JhcmVEYXRhKQorICAgIEFTU0VSVCghV1RGOjpob2xkc19hbHRl
cm5hdGl2ZTxSZWZQdHI8TmFtZVdpdGhDYXNlPj4obV9kYXRhKSk7CisgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSkKICAgICAgICAgcmV0dXJu
OwogICAgIC8vIE1vdmUgdGhlIHZhbHVlIHRvIHRoZSByYXJlIGRhdGEgc3R1Y3R1cmUuCi0gICAg
QXRvbWljU3RyaW5nIHZhbHVlIHsgYWRvcHRSZWYobV9kYXRhLm1fdmFsdWUpIH07Ci0gICAgbV9k
YXRhLm1fcmFyZURhdGEgPSAmUmFyZURhdGE6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSkubGVha1Jl
ZigpOwotICAgIG1faGFzUmFyZURhdGEgPSB0cnVlOworICAgIEF0b21pY1N0cmluZyB2YWx1ZSA9
ID0gV1RGOjpnZXQ8QXRvbWljU3RyaW5nPihtX2RhdGEpOworICAgIG1fZGF0YSA9IGFkb3B0UmVm
KG5ldyBSYXJlRGF0YShXVEZNb3ZlKHZhbHVlKSkpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgc2lt
cGxlU2VsZWN0b3JTcGVjaWZpY2l0eUludGVybmFsKGNvbnN0IENTU1NlbGVjdG9yJiBzaW1wbGVT
ZWxlY3RvciwgYm9vbCBpc0NvbXB1dGluZ01heGltdW1TcGVjaWZpY2l0eSk7CkBAIC03NTMsNjEg
Kzc0OCw1NCBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTCiB2b2lk
IENTU1NlbGVjdG9yOjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJv
b2wgY29udmVydFRvTG93ZXJjYXNlLCBBdHRyaWJ1dGVNYXRjaFR5cGUgbWF0Y2hUeXBlKQogewog
ICAgIGNyZWF0ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRl
ID0gdmFsdWU7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlQ2Fub25pY2FsTG9j
YWxOYW1lID0gY29udmVydFRvTG93ZXJjYXNlID8gdmFsdWUubG9jYWxOYW1lKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSA6IHZhbHVlLmxvY2FsTmFtZSgpOwotICAgIG1fY2FzZUluc2Vuc2l0
aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyA9IG1hdGNoVHlwZSA9PSBDYXNlSW5zZW5zaXRpdmU7
CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRyaWJ1dGUgPSB2
YWx1ZTsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2F0dHJpYnV0
ZUNhbm9uaWNhbExvY2FsTmFtZSA9IGNvbnZlcnRUb0xvd2VyY2FzZSA/IHZhbHVlLmxvY2FsTmFt
ZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiB2YWx1ZS5sb2NhbE5hbWUoKTsKKyAgICBX
VEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2Nhc2VJbnNlbnNpdGl2ZUF0dHJp
YnV0ZVZhbHVlTWF0Y2hpbmcgPSBtYXRjaFR5cGUgPT0gQ2FzZUluc2Vuc2l0aXZlOwogfQogICAg
IAogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2Fy
Z3VtZW50ID0gdmFsdWU7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+
bV9hcmd1bWVudCA9IHZhbHVlOwogfQogCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRMYW5nQXJndW1l
bnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbWljU3RyaW5nPj4gYXJndW1lbnRMaXN0
KQogewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbGFu
Z0FyZ3VtZW50TGlzdCA9IFdURk1vdmUoYXJndW1lbnRMaXN0KTsKKyAgICBXVEY6OmdldDxSZWZQ
dHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2xhbmdBcmd1bWVudExpc3QgPSBXVEZNb3ZlKGFyZ3Vt
ZW50TGlzdCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdChzdGQ6OnVu
aXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QpCiB7CiAgICAgY3JlYXRlUmFy
ZURhdGEoKTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBXVEZNb3Zl
KHNlbGVjdG9yTGlzdCk7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+
bV9zZWxlY3Rvckxpc3QgPSBXVEZNb3ZlKHNlbGVjdG9yTGlzdCk7CiB9CiAKIHZvaWQgQ1NTU2Vs
ZWN0b3I6OnNldE50aChpbnQgYSwgaW50IGIpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKLSAg
ICBtX2RhdGEubV9yYXJlRGF0YS0+bV9hID0gYTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9i
ID0gYjsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2EgPSBhOwor
ICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYiA9IGI7CiB9CiAKIGJv
b2wgQ1NTU2VsZWN0b3I6Om1hdGNoTnRoKGludCBjb3VudCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tYXRjaE50aChj
b3VudCk7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1h
dGNoTnRoKGNvdW50KTsKIH0KIAogaW50IENTU1NlbGVjdG9yOjpudGhBKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5t
X2E7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYTsK
IH0KIAogaW50IENTU1NlbGVjdG9yOjpudGhCKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNS
YXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2I7CisgICAgcmV0dXJu
IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYjsKIH0KIAogQ1NTU2VsZWN0
b3I6OlJhcmVEYXRhOjpSYXJlRGF0YShBdG9taWNTdHJpbmcmJiB2YWx1ZSkKICAgICA6IG1fbWF0
Y2hpbmdWYWx1ZSh2YWx1ZSkKICAgICAsIG1fc2VyaWFsaXppbmdWYWx1ZSh2YWx1ZSkKLSAgICAs
IG1fYSgwKQotICAgICwgbV9iKDApCi0gICAgLCBtX2F0dHJpYnV0ZShhbnlRTmFtZSgpKQotICAg
ICwgbV9hcmd1bWVudChudWxsQXRvbSgpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaAkocmV2aXNpb24gMjM0ODE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIlF1YWxp
ZmllZE5hbWUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUg
PHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDU1NTZWxl
Y3Rvckxpc3Q7CkBAIC0zMyw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Q2xhc3NDID0gMQogICAgIH07CiAKKyNwcmFnbWEgcGFjayhwdXNoLCAxKQogICAgIC8vIHRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhIHNlbGVjdG9yIGZvciBhIFN0eWxlUnVsZQogICAgIGNsYXNzIENT
U1NlbGVjdG9yIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yMzUsMTAg
KzIzNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgc2VyaWFsaXppbmdWYWx1ZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGUoKSBjb25zdDsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVDYW5vbmljYWxMb2NhbE5hbWUoKSBjb25zdDsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJl
RGF0YS0+bV9hcmd1bWVudCA6IG51bGxBdG9tKCk7IH0KKyAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBhcmd1bWVudCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
UHRyPFJhcmVEYXRhPj4obV9kYXRhKSA/IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSktPm1fYXJndW1lbnQgOiBudWxsQXRvbSgpOyB9CiAgICAgICAgIGJvb2wgYXR0cmlidXRlVmFs
dWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFZlY3Rv
cjxBdG9taWNTdHJpbmc+KiBsYW5nQXJndW1lbnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNS
YXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX2xhbmdBcmd1bWVudExpc3QuZ2V0KCkgOiBu
dWxscHRyOyB9Ci0gICAgICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVj
dG9yTGlzdC5nZXQoKSA6IG51bGxwdHI7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0
cmluZz4qIGxhbmdBcmd1bWVudExpc3QoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVy
bmF0aXZlPFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkgPyBXVEY6OmdldDxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpLT5tX2xhbmdBcmd1bWVudExpc3QuZ2V0KCkgOiBudWxscHRyOyB9CisgICAg
ICAgIGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4g
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpID8gV1RGOjpn
ZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiBudWxs
cHRyOyB9CiAKICAgICAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBib29s
IG1hdGNoTG93ZXJDYXNlID0gZmFsc2UpOwogICAgICAgICAKQEAgLTMxNSwyMCArMzE3LDI1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xhc3RJblRhZ0hpc3RvcnkoKSBj
b25zdCB7IHJldHVybiBtX2lzTGFzdEluVGFnSGlzdG9yeTsgfQogICAgICAgICB2b2lkIHNldE5v
dExhc3RJblRhZ0hpc3RvcnkoKSB7IG1faXNMYXN0SW5UYWdIaXN0b3J5ID0gZmFsc2U7IH0KIAor
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgYm9vbCBpc0ZvclBhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2lzRm9yUGFnZTsgfQogICAgICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1faXNGb3JQ
YWdlID0gdHJ1ZTsgfQorI2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICB1bnNpZ25lZCBt
X3JlbGF0aW9uICAgICAgICAgICAgICA6IDQ7IC8vIGVudW0gUmVsYXRpb25UeXBlLgotICAgICAg
ICBtdXRhYmxlIHVuc2lnbmVkIG1fbWF0Y2ggICAgICAgICA6IDQ7IC8vIGVudW0gTWF0Y2guCi0g
ICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9wc2V1ZG9UeXBlICAgIDogODsgLy8gUHNldWRvVHlw
ZS4KLSAgICAgICAgdW5zaWduZWQgbV9pc0xhc3RJblNlbGVjdG9yTGlzdCAgOiAxOwotICAgICAg
ICB1bnNpZ25lZCBtX2lzTGFzdEluVGFnSGlzdG9yeSAgICA6IDE7Ci0gICAgICAgIHVuc2lnbmVk
IG1faGFzUmFyZURhdGEgICAgICAgICAgIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9oYXNOYW1l
V2l0aENhc2UgICAgICAgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2lzRm9yUGFnZSAgICAgICAg
ICAgICA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlIDogMTsK
LSAgICAgICAgdW5zaWduZWQgbV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5n
IDogMTsKKyAgICAgICAgc3RydWN0IFJhcmVEYXRhOworICAgICAgICBzdHJ1Y3QgTmFtZVdpdGhD
YXNlOworICAgICAgICBWYXJpYW50PEF0b21pY1N0cmluZywgUXVhbGlmaWVkTmFtZSwgUmVmUHRy
PFJhcmVEYXRhPiwgUmVmUHRyPE5hbWVXaXRoQ2FzZT4+IG1fZGF0YTsKKworICAgICAgICB1bnNp
Z25lZCBtX3JlbGF0aW9uICAgICAgICAgICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uVHlwZS4K
KyAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX21hdGNoICAgICAgICAgIDogNDsgLy8gZW51bSBN
YXRjaC4KKyAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3BzZXVkb1R5cGUgICAgIDogNzsgLy8g
ZW51bSBQc2V1ZG9DbGFzc1R5cGUuCisgICAgICAgIHVuc2lnbmVkIG1faXNMYXN0SW5TZWxlY3Rv
ckxpc3QgICA6IDE7CisgICAgICAgIHVuc2lnbmVkIG1faXNMYXN0SW5UYWdIaXN0b3J5ICAgICA6
IDE7CisgICAgICAgIHVuc2lnbmVkIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlICA6IDE7CisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgICAgICB1bnNpZ25lZCBtX2lzRm9yUGFnZSAgICAgICAgICAg
ICAgOiAxOworI2VuZGlmCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0RJ
U0FCTEVECiAgICAgICAgIHVuc2lnbmVkIG1fZGVzdHJ1Y3Rvckhhc0JlZW5DYWxsZWQgOiAxOwog
I2VuZGlmCkBAIC0zMzksNyArMzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBD
U1NTZWxlY3RvciYgb3BlcmF0b3I9KGNvbnN0IENTU1NlbGVjdG9yJik7CiAKICAgICAgICAgc3Ry
dWN0IFJhcmVEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UmFyZURhdGE+IHsKLSAgICAgICAgICAg
IHN0YXRpYyBSZWY8UmFyZURhdGE+IGNyZWF0ZShBdG9taWNTdHJpbmcmJiB2YWx1ZSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSYXJlRGF0YShXVEZNb3ZlKHZhbHVlKSkpOyB9CisgICAgICAgICAg
ICBSYXJlRGF0YShBdG9taWNTdHJpbmcmJiB2YWx1ZSk7CiAgICAgICAgICAgICB+UmFyZURhdGEo
KTsKIAogICAgICAgICAgICAgYm9vbCBtYXRjaE50aChpbnQgY291bnQpOwpAQCAtMzUwLDE2ICsz
NTcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1f
bWF0Y2hpbmdWYWx1ZTsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX3NlcmlhbGl6aW5nVmFs
dWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGludCBtX2E7IC8vIFVzZWQgZm9yIDpudGgt
KgotICAgICAgICAgICAgaW50IG1fYjsgLy8gVXNlZCBmb3IgOm50aC0qCi0gICAgICAgICAgICBR
dWFsaWZpZWROYW1lIG1fYXR0cmlidXRlOyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IK
KyAgICAgICAgICAgIGludCBtX2EgeyAwIH07IC8vIFVzZWQgZm9yIDpudGgtKgorICAgICAgICAg
ICAgaW50IG1fYiB7IDAgfTsgLy8gVXNlZCBmb3IgOm50aC0qCisgICAgICAgICAgICBRdWFsaWZp
ZWROYW1lIG1fYXR0cmlidXRlIHsgYW55UU5hbWUoKSB9OyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUg
c2VsZWN0b3IKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX2F0dHJpYnV0ZUNhbm9uaWNhbExv
Y2FsTmFtZTsKLSAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZv
ciA6Y29udGFpbnMgYW5kIDpudGgtKgorICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1l
bnQgeyBudWxsQXRvbSgpIH07IC8vIFVzZWQgZm9yIDpjb250YWlucyBhbmQgOm50aC0qCiAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21pY1N0cmluZz4+IG1fbGFuZ0FyZ3Vt
ZW50TGlzdDsgLy8gVXNlZCBmb3IgOmxhbmcgYXJndW1lbnRzLgogICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPENTU1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDpt
YXRjaGVzKCkgYW5kIDpub3QoKS4KLSAgICAgICAgCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAg
ICAgICBSYXJlRGF0YShBdG9taWNTdHJpbmcmJiB2YWx1ZSk7CisgICAgICAgICAgICBib29sIG1f
Y2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyB7IGZhbHNlIH07CiAgICAgICAg
IH07CiAgICAgICAgIHZvaWQgY3JlYXRlUmFyZURhdGEoKTsKIApAQCAtMzc0LDI4ICszNzksMjEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSBt
X29yaWdpbmFsTmFtZTsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX2xvd2VyY2Fz
ZUxvY2FsTmFtZTsKICAgICAgICAgfTsKLQotICAgICAgICB1bmlvbiBEYXRhVW5pb24gewotICAg
ICAgICAgICAgRGF0YVVuaW9uKCkgOiBtX3ZhbHVlKDApIHsgfQotICAgICAgICAgICAgQXRvbWlj
U3RyaW5nSW1wbCogbV92YWx1ZTsKLSAgICAgICAgICAgIFF1YWxpZmllZE5hbWU6OlF1YWxpZmll
ZE5hbWVJbXBsKiBtX3RhZ1FOYW1lOwotICAgICAgICAgICAgUmFyZURhdGEqIG1fcmFyZURhdGE7
Ci0gICAgICAgICAgICBOYW1lV2l0aENhc2UqIG1fbmFtZVdpdGhDYXNlOwotICAgICAgICB9IG1f
ZGF0YTsKICAgICB9OworI3ByYWdtYSBwYWNrKHBvcCkKIAogaW5saW5lIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGUoKSBjb25zdAogewogICAgIEFTU0VSVChpc0F0
dHJpYnV0ZVNlbGVjdG9yKCkpOwotICAgIEFTU0VSVChtX2hhc1JhcmVEYXRhKTsKLSAgICByZXR1
cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlOworICAgIEFTU0VSVChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkpOworICAgIHJldHVybiBXVEY6
OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2F0dHJpYnV0ZTsKIH0KIAogaW5saW5l
IGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU2VsZWN0b3I6OmF0dHJpYnV0ZUNhbm9uaWNhbExvY2Fs
TmFtZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAg
QVNTRVJUKG1faGFzUmFyZURhdGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9h
dHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWU7CisgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJu
YXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSk7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJl
ZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lOwog
fQogCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25z
dApAQCAtNDU4LDIwICs0NTYsMTYgQEAgaW5saW5lIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFZhbHVl
KGNvbnN0IAogewogICAgIEFTU0VSVChtYXRjaCgpICE9IFRhZyk7CiAgICAgQXRvbWljU3RyaW5n
IG1hdGNoaW5nVmFsdWUgPSBtYXRjaExvd2VyQ2FzZSA/IHZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCkgOiB2YWx1ZTsKLSAgICBpZiAoIW1faGFzUmFyZURhdGEgJiYgbWF0Y2hpbmdWYWx1
ZSAhPSB2YWx1ZSkKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVE
YXRhPj4obV9kYXRhKSAmJiBtYXRjaGluZ1ZhbHVlICE9IHZhbHVlKQogICAgICAgICBjcmVhdGVS
YXJlRGF0YSgpOwogICAgIAotICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5
IGZvciB0aGUgdW5pb24uCi0gICAgaWYgKCFtX2hhc1JhcmVEYXRhKSB7Ci0gICAgICAgIGlmICht
X2RhdGEubV92YWx1ZSkKLSAgICAgICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigpOwotICAg
ICAgICBtX2RhdGEubV92YWx1ZSA9IHZhbHVlLmltcGwoKTsKLSAgICAgICAgbV9kYXRhLm1fdmFs
dWUtPnJlZigpOworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpKSB7CisgICAgICAgIG1fZGF0YSA9IHZhbHVlOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbWF0Y2hpbmdWYWx1ZSA9IFdURk1v
dmUobWF0Y2hpbmdWYWx1ZSk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdW
YWx1ZSA9IHZhbHVlOworICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1f
bWF0Y2hpbmdWYWx1ZSA9IFdURk1vdmUobWF0Y2hpbmdWYWx1ZSk7CisgICAgV1RGOjpnZXQ8UmVm
UHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9zZXJpYWxpemluZ1ZhbHVlID0gdmFsdWU7CiB9CiAK
IGlubGluZSBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoKQpAQCAtNDgwLDExICs0NzQsMTAgQEAg
aW5saW5lIENTU1NlbGVjdG9yOjpDU1NTZWxlY3RvcigpCiAgICAgLCBtX3BzZXVkb1R5cGUoMCkK
ICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgLCBtX2lzTGFzdEluVGFn
SGlzdG9yeSh0cnVlKQotICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKLSAgICAsIG1faGFzTmFt
ZVdpdGhDYXNlKGZhbHNlKQotICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgLCBtX3RhZ0lz
Rm9yTmFtZXNwYWNlUnVsZShmYWxzZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
VmFsdWVNYXRjaGluZyhmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9y
UGFnZShmYWxzZSkKKyNlbmRpZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tl9ESVNBQkxFRAogICAgICwgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZChmYWxzZSkKICNlbmRp
ZgpAQCAtNDkyLDMzICs0ODUsMjAgQEAgaW5saW5lIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcigp
CiB9CiAKIGlubGluZSBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Im
IG8pCi0gICAgOiBtX3JlbGF0aW9uKG8ubV9yZWxhdGlvbikKKyAgICA6IG1fZGF0YShvLm1fZGF0
YSkKKyAgICAsIG1fcmVsYXRpb24oby5tX3JlbGF0aW9uKQogICAgICwgbV9tYXRjaChvLm1fbWF0
Y2gpCiAgICAgLCBtX3BzZXVkb1R5cGUoby5tX3BzZXVkb1R5cGUpCiAgICAgLCBtX2lzTGFzdElu
U2VsZWN0b3JMaXN0KG8ubV9pc0xhc3RJblNlbGVjdG9yTGlzdCkKICAgICAsIG1faXNMYXN0SW5U
YWdIaXN0b3J5KG8ubV9pc0xhc3RJblRhZ0hpc3RvcnkpCi0gICAgLCBtX2hhc1JhcmVEYXRhKG8u
bV9oYXNSYXJlRGF0YSkKLSAgICAsIG1faGFzTmFtZVdpdGhDYXNlKG8ubV9oYXNOYW1lV2l0aENh
c2UpCi0gICAgLCBtX2lzRm9yUGFnZShvLm1faXNGb3JQYWdlKQogICAgICwgbV90YWdJc0Zvck5h
bWVzcGFjZVJ1bGUoby5tX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKLSAgICAsIG1fY2FzZUluc2Vu
c2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyhvLm1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
VmFsdWVNYXRjaGluZykKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShv
Lm1faXNGb3JQYWdlKQorI2VuZGlmCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OX0RJU0FCTEVECiAgICAgLCBtX2Rlc3RydWN0b3JIYXNCZWVuQ2FsbGVkKGZhbHNlKQogI2Vu
ZGlmCiB7Ci0gICAgaWYgKG8ubV9oYXNSYXJlRGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJl
RGF0YSA9IG8ubV9kYXRhLm1fcmFyZURhdGE7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5y
ZWYoKTsKLSAgICB9IGVsc2UgaWYgKG8ubV9oYXNOYW1lV2l0aENhc2UpIHsKLSAgICAgICAgbV9k
YXRhLm1fbmFtZVdpdGhDYXNlID0gby5tX2RhdGEubV9uYW1lV2l0aENhc2U7Ci0gICAgICAgIG1f
ZGF0YS5tX25hbWVXaXRoQ2FzZS0+cmVmKCk7Ci0gICAgfSBpZiAoby5tYXRjaCgpID09IFRhZykg
ewotICAgICAgICBtX2RhdGEubV90YWdRTmFtZSA9IG8ubV9kYXRhLm1fdGFnUU5hbWU7Ci0gICAg
ICAgIG1fZGF0YS5tX3RhZ1FOYW1lLT5yZWYoKTsKLSAgICB9IGVsc2UgaWYgKG8ubV9kYXRhLm1f
dmFsdWUpIHsKLSAgICAgICAgbV9kYXRhLm1fdmFsdWUgPSBvLm1fZGF0YS5tX3ZhbHVlOwotICAg
ICAgICBtX2RhdGEubV92YWx1ZS0+cmVmKCk7Ci0gICAgfQogfQogCiBpbmxpbmUgQ1NTU2VsZWN0
b3I6On5DU1NTZWxlY3RvcigpCkBAIC01MjcsNjIgKzUwNyw0NCBAQCBpbmxpbmUgQ1NTU2VsZWN0
b3I6On5DU1NTZWxlY3RvcigpCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
X0RJU0FCTEVECiAgICAgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZCA9IHRydWU7CiAjZW5kaWYK
LSAgICBpZiAobV9oYXNSYXJlRGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+ZGVy
ZWYoKTsKLSAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBudWxscHRyOwotICAgICAgICBtX2hh
c1JhcmVEYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkgewot
ICAgICAgICBtX2RhdGEubV9uYW1lV2l0aENhc2UtPmRlcmVmKCk7Ci0gICAgICAgIG1fZGF0YS5t
X25hbWVXaXRoQ2FzZSA9IG51bGxwdHI7Ci0gICAgICAgIG1faGFzTmFtZVdpdGhDYXNlID0gZmFs
c2U7Ci0gICAgfSBlbHNlIGlmIChtYXRjaCgpID09IFRhZykgewotICAgICAgICBtX2RhdGEubV90
YWdRTmFtZS0+ZGVyZWYoKTsKLSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUgPSBudWxscHRyOwot
ICAgICAgICBtX21hdGNoID0gVW5rbm93bjsKLSAgICB9IGVsc2UgaWYgKG1fZGF0YS5tX3ZhbHVl
KSB7Ci0gICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigpOwotICAgICAgICBtX2RhdGEubV92
YWx1ZSA9IG51bGxwdHI7Ci0gICAgfQogfQogCiBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYg
Q1NTU2VsZWN0b3I6OnRhZ1FOYW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSA9PSBU
YWcpOwotICAgIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5t
X25hbWVXaXRoQ2FzZS0+bV9vcmlnaW5hbE5hbWU7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PGNvbnN0IFF1YWxpZmllZE5hbWUqPigmbV9kYXRhLm1fdGFnUU5hbWUpOworICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxOYW1lV2l0aENhc2U+PihtX2RhdGEpKQorICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSktPm1fb3Jp
Z2luYWxOYW1lOworICAgIHJldHVybiBXVEY6OmdldDxRdWFsaWZpZWROYW1lPihtX2RhdGEpOwog
fQogCiBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBDU1NTZWxlY3Rvcjo6dGFnTG93ZXJjYXNl
TG9jYWxOYW1lKCkgY29uc3QKIHsKLSAgICBpZiAobV9oYXNOYW1lV2l0aENhc2UpCi0gICAgICAg
IHJldHVybiBtX2RhdGEubV9uYW1lV2l0aENhc2UtPm1fbG93ZXJjYXNlTG9jYWxOYW1lOwotICAg
IHJldHVybiBtX2RhdGEubV90YWdRTmFtZS0+bV9sb2NhbE5hbWU7CisgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSkpCisgICAgICAgIHJl
dHVybiBXVEY6OmdldDxSZWZQdHI8TmFtZVdpdGhDYXNlPj4obV9kYXRhKS0+bV9sb3dlcmNhc2VM
b2NhbE5hbWU7CisgICAgcmV0dXJuIFdURjo6Z2V0PFF1YWxpZmllZE5hbWU+KG1fZGF0YSkubG9j
YWxOYW1lKCk7CiB9CiAKIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjp2
YWx1ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1hdGNoKCkgIT0gVGFnKTsKLSAgICBpZiAobV9o
YXNSYXJlRGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX21hdGNoaW5n
VmFsdWU7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4o
bV9kYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSktPm1fbWF0Y2hpbmdWYWx1ZTsKIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkganVz
dCBhbiBBdG9taWNTdHJpbmdJbXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1fdmFs
dWUpOworICAgIHJldHVybiBXVEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAKIGlu
bGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjpzZXJpYWxpemluZ1ZhbHVlKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSAhPSBUYWcpOwotICAgIGlmIChtX2hhc1JhcmVE
YXRhKQotICAgICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdWYWx1
ZTsKKyAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2Rh
dGEpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+
bV9zZXJpYWxpemluZ1ZhbHVlOwogICAgIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkg
anVzdCBhbiBBdG9taWNTdHJpbmdJbXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1f
dmFsdWUpOworICAgIHJldHVybiBXVEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAg
ICAgCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6YXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2Fz
ZUluc2Vuc2l0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jYXNlSW5zZW5zaXRpdmVBdHRy
aWJ1dGVWYWx1ZU1hdGNoaW5nOworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkgJiYgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9k
YXRhKS0+bV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Bh
cnNlckltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UGFyc2VySW1wbC5jcHAJKHJldmlzaW9uIDIzNDgyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw3ICsyOTQsOSBA
QCBDU1NTZWxlY3Rvckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlCiAgICAgICAgICAgICBz
ZWxlY3Rvci0+cHJlcGVuZFRhZ1NlbGVjdG9yKFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlw
ZVNlbGVjdG9yLCBzdHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKICAgICB9CiAKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsKKyNlbmRpZgog
ICAgIHJldHVybiB7IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pjo6
ZnJvbShXVEZNb3ZlKHNlbGVjdG9yKSkgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuaAkocmV2aXNpb24gMjM0ODE3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw3ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE50aChpbnQgYSwgaW50IGIp
IHsgbV9zZWxlY3Rvci0+c2V0TnRoKGEsIGIpOyB9CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxl
Y3Rvcjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0TWF0Y2godmFsdWUpOyB9CiAgICAg
dm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIHZhbHVlKSB7IG1fc2Vs
ZWN0b3ItPnNldFJlbGF0aW9uKHZhbHVlKTsgfQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2
b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorI2VuZGlmCiAK
ICAgICBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2goKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9y
LT5tYXRjaCgpOyB9CiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBlIHBzZXVkb0Vs
ZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUo
KTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347092</attachid>
            <date>2018-08-14 10:55:20 -0700</date>
            <delta_ts>2018-08-14 23:42:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188559-20180814105520.patch</filename>
            <type>text/plain</type>
            <size>22103</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ4NTMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA4LTE0ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgVmFyaWFudCBpbnN0ZWFk
IG9mIGEgdW5pb24gaW4gQ1NTU2VsZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1ZhcmlhbnQuaDoKKyAgICAgICAgQWRkIHBhY2tpbmcg
bWFjcm9zIHRvIG1ha2UgaXQgc28gVmFyaWFudC1jb250YWluaW5nIHN0cnVjdHVyZXMgZG9uJ3Qg
YWx3YXlzIGhhdmUgNyBieXRlcyBvZiBwYWRkaW5nIHBlciBWYXJpYW50LgorCiAyMDE4LTA4LTEz
ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgTWVhbmlu
ZyBvZiBPcHRpb25TZXQ6OmNvbnRhaW5zIGlzIHVuY2xlYXIgd2hlbiB1c2VkIHdpdGggT3B0aW9u
U2V0IGFyZ3VtZW50CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvVmFyaWFudC5oCShyZXZpc2lvbiAyMzQ4NTMpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9WYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MzUsNiArMTQzNSw3IEBAIHN0
cnVjdCBfX25vZXhjZXB0X3ZhcmlhbnRfc3dhcDoKIF9fbm9leGNlcHRfdmFyaWFudF9zd2FwX2lt
cGw8X19hbGxfc3dhcHBhYmxlPF9UeXBlcy4uLj46OnZhbHVlLF9UeXBlcy4uLj4KIHt9OwogCisj
cHJhZ21hIHBhY2socHVzaCwgMSkKIHRlbXBsYXRlPHR5cGVuYW1lIC4uLiBfVHlwZXM+CiBjbGFz
cyBWYXJpYW50OgogICAgICAgICBwcml2YXRlIF9fdmFyaWFudF9iYXNlPApAQCAtMTcyMSw2ICsx
NzIyLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogfTsKKyNwcmFnbWEgcGFjayhwb3Ap
CiAKIHRlbXBsYXRlPD4KIGNsYXNzIFZhcmlhbnQ8PnsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIzNDg1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDQ4IEBACisyMDE4LTA4LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgVmFyaWFudCBpbnN0ZWFkIG9mIGEgdW5pb24g
aW4gQ1NTU2VsZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4gVGhpcyBqdXN0IG1ha2VzIHNvbWUgb2YgdGhl
IGV4aXN0aW5nIHByb2JsZW1zIG1vcmUgb2J2aW91cyBhbmQgZWFzeSB0byBmaXguCisKKyAgICAg
ICAgSSBtb3ZlZCBtX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmcgdG8gUmFy
ZURhdGEgYmVjYXVzZSBpdCdzIG9ubHkgdXNlZCB3aXRoIFJhcmVEYXRhLgorICAgICAgICBJIG9u
bHkgaGF2ZSBtX2lzRm9yUGFnZSB3aGVuIGFzc2VydGlvbnMgYXJlIGVuYWJsZWQgYmVjYXVzZSBp
dCdzIG9ubHkgdXNlZCBmb3IgYW4gYXNzZXJ0aW9uLgorICAgICAgICBUaGUgcmVzdCBpcyBwcmV0
dHkgc3RyYWlnaHRmb3J3YXJkIHRyYW5zbGF0aW5nIHVuaW9uIHN5bnRheCB0byBWYXJpYW50IHN5
bnRheC4KKyAgICAgICAgSSB1c2UgUmVmUHRyIGZvciBub3cgd2hlcmUgSSBjb3VsZCB1c2UgUmVm
IGJlY2F1c2UgaXQncyBuZXZlciBudWxsIHRvIG1ha2UgY29weWluZyBlYXNpZXIsIGJ1dCB0aGF0
J3MgdGVtcG9yYXJ5LgorCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6Y3JlYXRlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnNldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0QXJn
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldExhbmdBcmd1bWVudExp
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0TnRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlbGVjdG9yOjptYXRjaE50aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6bnRoQSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6bnRoQiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OlJhcmVEYXRh
KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjphcmd1bWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
bGFuZ0FyZ3VtZW50TGlzdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2VsZWN0b3JMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjphdHRy
aWJ1dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0ZUNh
bm9uaWNhbExvY2FsTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjp+Q1NTU2VsZWN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnRhZ1FOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1NlbGVjdG9yOjp0YWdMb3dlcmNhc2VMb2NhbE5hbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OnZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpzZXJpYWxpemluZ1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjphdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nSXNDYXNlSW5zZW5zaXRpdmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpjcmVhdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3Rvcik6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oOgorCiAyMDE4LTA4LTE0ICBBbGkgSnVtYSAgPGFqdW1h
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBGb2xsb3ctdXA6IFtJbnRlcnNlY3Rpb25PYnNlcnZl
cl0gSW1wbGVtZW50IHJvb3RNYXJnaW4gcGFyc2luZwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiAyMzQ4NTMpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMyArNDAsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0cnVjdCBTYW1lU2l6ZUFz
Q1NTU2VsZWN0b3IgewotICAgIHVuc2lnbmVkIGZsYWdzOwotICAgIHZvaWQqIHVuaW9uUG9pbnRl
cjsKLX07Ci0KIHN0YXRpY19hc3NlcnQoQ1NTU2VsZWN0b3I6OlJlbGF0aW9uVHlwZTo6U3Vic2Vs
ZWN0b3IgPT0gMCwgIlN1YnNlbGVjdG9yIG11c3QgYmUgMCBmb3IgY29uc3VtZUNvbWJpbmF0b3Iu
Iik7Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihDU1NTZWxlY3RvcikgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNDU1NTZWxlY3RvciksICJDU1NTZWxlY3RvciBzaG91bGQgcmVtYWluIHNtYWxsLiIpOworc3Rh
dGljX2Fzc2VydChzaXplb2YoQ1NTU2VsZWN0b3IpID09IHNpemVvZih2b2lkKikgKyBzaXplb2Yo
dW5zaWduZWQpLCAiQ1NTU2VsZWN0b3Igc2hvdWxkIHJlbWFpbiBzbWFsbC4iKTsKIAogQ1NTU2Vs
ZWN0b3I6OkNTU1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRh
Z0lzRm9yTmFtZXNwYWNlUnVsZSkKICAgICA6IG1fcmVsYXRpb24oRGVzY2VuZGFudFNwYWNlKQpA
QCAtNTQsMTEgKzQ5LDEwIEBAIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcihjb25zdCBRdWFsaWZp
ZWQKICAgICAsIG1fcHNldWRvVHlwZSgwKQogICAgICwgbV9pc0xhc3RJblNlbGVjdG9yTGlzdChm
YWxzZSkKICAgICAsIG1faXNMYXN0SW5UYWdIaXN0b3J5KHRydWUpCi0gICAgLCBtX2hhc1JhcmVE
YXRhKGZhbHNlKQotICAgICwgbV9oYXNOYW1lV2l0aENhc2UoZmFsc2UpCi0gICAgLCBtX2lzRm9y
UGFnZShmYWxzZSkKICAgICAsIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlKHRhZ0lzRm9yTmFtZXNw
YWNlUnVsZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyhm
YWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShmYWxzZSkKKyNl
bmRpZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRAogICAg
ICwgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZChmYWxzZSkKICNlbmRpZgpAQCAtNjYsMjUgKzYw
LDIxIEBAIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWQKICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHRhZ0xvY2FsTmFtZSA9IHRhZ1FOYW1lLmxvY2FsTmFtZSgpOwogICAg
IGNvbnN0IEF0b21pY1N0cmluZyB0YWdMb2NhbE5hbWVBU0NJSUxvd2VyY2FzZSA9IHRhZ0xvY2Fs
TmFtZS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogCi0gICAgaWYgKHRhZ0xvY2FsTmFtZSA9
PSB0YWdMb2NhbE5hbWVBU0NJSUxvd2VyY2FzZSkgewotICAgICAgICBtX2RhdGEubV90YWdRTmFt
ZSA9IHRhZ1FOYW1lLmltcGwoKTsKLSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUtPnJlZigpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fZGF0YS5tX25hbWVXaXRoQ2FzZSA9IGFkb3B0UmVmKG5l
dyBOYW1lV2l0aENhc2UodGFnUU5hbWUsIHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJjYXNlKSkubGVh
a1JlZigpOwotICAgICAgICBtX2hhc05hbWVXaXRoQ2FzZSA9IHRydWU7Ci0gICAgfQorICAgIGlm
ICh0YWdMb2NhbE5hbWUgPT0gdGFnTG9jYWxOYW1lQVNDSUlMb3dlcmNhc2UpCisgICAgICAgIG1f
ZGF0YSA9IHRhZ1FOYW1lOworICAgIGVsc2UKKyAgICAgICAgbV9kYXRhID0gYWRvcHRSZWYobmV3
IE5hbWVXaXRoQ2FzZSh0YWdRTmFtZSwgdGFnTG9jYWxOYW1lQVNDSUlMb3dlcmNhc2UpKTsKIH0K
IAogdm9pZCBDU1NTZWxlY3Rvcjo6Y3JlYXRlUmFyZURhdGEoKQogewogICAgIEFTU0VSVChtYXRj
aCgpICE9IFRhZyk7Ci0gICAgQVNTRVJUKCFtX2hhc05hbWVXaXRoQ2FzZSk7Ci0gICAgaWYgKG1f
aGFzUmFyZURhdGEpCisgICAgQVNTRVJUKCFXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxO
YW1lV2l0aENhc2U+PihtX2RhdGEpKTsKKyAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxS
ZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpKQogICAgICAgICByZXR1cm47CiAgICAgLy8gTW92ZSB0
aGUgdmFsdWUgdG8gdGhlIHJhcmUgZGF0YSBzdHVjdHVyZS4KLSAgICBBdG9taWNTdHJpbmcgdmFs
dWUgeyBhZG9wdFJlZihtX2RhdGEubV92YWx1ZSkgfTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YSA9
ICZSYXJlRGF0YTo6Y3JlYXRlKFdURk1vdmUodmFsdWUpKS5sZWFrUmVmKCk7Ci0gICAgbV9oYXNS
YXJlRGF0YSA9IHRydWU7CisgICAgQXRvbWljU3RyaW5nIHZhbHVlID0gV1RGOjpnZXQ8QXRvbWlj
U3RyaW5nPihtX2RhdGEpOworICAgIG1fZGF0YSA9IGFkb3B0UmVmKG5ldyBSYXJlRGF0YShXVEZN
b3ZlKHZhbHVlKSkpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgc2ltcGxlU2VsZWN0b3JTcGVjaWZp
Y2l0eUludGVybmFsKGNvbnN0IENTU1NlbGVjdG9yJiBzaW1wbGVTZWxlY3RvciwgYm9vbCBpc0Nv
bXB1dGluZ01heGltdW1TcGVjaWZpY2l0eSk7CkBAIC03NTMsNjEgKzc0Myw1NCBAQCBTdHJpbmcg
Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dChjb25zdCBTCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJvb2wgY29udmVydFRvTG93ZXJj
YXNlLCBBdHRyaWJ1dGVNYXRjaFR5cGUgbWF0Y2hUeXBlKQogewogICAgIGNyZWF0ZVJhcmVEYXRh
KCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlID0gdmFsdWU7Ci0gICAgbV9k
YXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lID0gY29udmVydFRv
TG93ZXJjYXNlID8gdmFsdWUubG9jYWxOYW1lKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSA6
IHZhbHVlLmxvY2FsTmFtZSgpOwotICAgIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVN
YXRjaGluZyA9IG1hdGNoVHlwZSA9PSBDYXNlSW5zZW5zaXRpdmU7CisgICAgV1RGOjpnZXQ8UmVm
UHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRyaWJ1dGUgPSB2YWx1ZTsKKyAgICBXVEY6Omdl
dDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2F0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFt
ZSA9IGNvbnZlcnRUb0xvd2VyY2FzZSA/IHZhbHVlLmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FTQ0lJ
TG93ZXJjYXNlKCkgOiB2YWx1ZS5sb2NhbE5hbWUoKTsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFy
ZURhdGE+PihtX2RhdGEpLT5tX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmcg
PSBtYXRjaFR5cGUgPT0gQ2FzZUluc2Vuc2l0aXZlOwogfQogICAgIAogdm9pZCBDU1NTZWxlY3Rv
cjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBjcmVhdGVS
YXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50ID0gdmFsdWU7Cisg
ICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hcmd1bWVudCA9IHZhbHVl
OwogfQogCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRMaXN0KHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8QXRvbWljU3RyaW5nPj4gYXJndW1lbnRMaXN0KQogewogICAgIGNyZWF0ZVJh
cmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbGFuZ0FyZ3VtZW50TGlzdCA9IFdU
Rk1vdmUoYXJndW1lbnRMaXN0KTsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2Rh
dGEpLT5tX2xhbmdBcmd1bWVudExpc3QgPSBXVEZNb3ZlKGFyZ3VtZW50TGlzdCk7CiB9CiAKIHZv
aWQgQ1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdChzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0
b3JMaXN0PiBzZWxlY3Rvckxpc3QpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKLSAgICBtX2Rh
dGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBXVEZNb3ZlKHNlbGVjdG9yTGlzdCk7Cisg
ICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9zZWxlY3Rvckxpc3QgPSBX
VEZNb3ZlKHNlbGVjdG9yTGlzdCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldE50aChpbnQg
YSwgaW50IGIpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKLSAgICBtX2RhdGEubV9yYXJlRGF0
YS0+bV9hID0gYTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9iID0gYjsKKyAgICBXVEY6Omdl
dDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2EgPSBhOworICAgIFdURjo6Z2V0PFJlZlB0
cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYiA9IGI7CiB9CiAKIGJvb2wgQ1NTU2VsZWN0b3I6Om1h
dGNoTnRoKGludCBjb3VudCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0g
ICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tYXRjaE50aChjb3VudCk7CisgICAgcmV0dXJu
IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1hdGNoTnRoKGNvdW50KTsKIH0K
IAogaW50IENTU1NlbGVjdG9yOjpudGhBKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNSYXJl
RGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2E7CisgICAgcmV0dXJuIFdU
Rjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYTsKIH0KIAogaW50IENTU1NlbGVj
dG9yOjpudGhCKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0
dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2I7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxS
YXJlRGF0YT4+KG1fZGF0YSktPm1fYjsKIH0KIAogQ1NTU2VsZWN0b3I6OlJhcmVEYXRhOjpSYXJl
RGF0YShBdG9taWNTdHJpbmcmJiB2YWx1ZSkKICAgICA6IG1fbWF0Y2hpbmdWYWx1ZSh2YWx1ZSkK
ICAgICAsIG1fc2VyaWFsaXppbmdWYWx1ZSh2YWx1ZSkKLSAgICAsIG1fYSgwKQotICAgICwgbV9i
KDApCi0gICAgLCBtX2F0dHJpYnV0ZShhbnlRTmFtZSgpKQotICAgICwgbV9hcmd1bWVudChudWxs
QXRvbSgpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24g
MjM0ODUzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDU1NTZWxlY3Rvckxpc3Q7CkBAIC0zMyw2
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2xhc3NDID0gMQogICAgIH07
CiAKKyNwcmFnbWEgcGFjayhwdXNoLCAxKQogICAgIC8vIHRoaXMgY2xhc3MgcmVwcmVzZW50cyBh
IHNlbGVjdG9yIGZvciBhIFN0eWxlUnVsZQogICAgIGNsYXNzIENTU1NlbGVjdG9yIHsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yMzUsMTAgKzIzNywxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VyaWFsaXppbmdWYWx1
ZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUoKSBjb25z
dDsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5h
bWUoKSBjb25zdDsKLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmd1bWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9hcmd1bWVudCA6
IG51bGxBdG9tKCk7IH0KKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmd1bWVudCgpIGNv
bnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9k
YXRhKSA/IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYXJndW1lbnQgOiBu
dWxsQXRvbSgpOyB9CiAgICAgICAgIGJvb2wgYXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUlu
c2Vuc2l0aXZlKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+KiBs
YW5nQXJndW1lbnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0YS5t
X3JhcmVEYXRhLT5tX2xhbmdBcmd1bWVudExpc3QuZ2V0KCkgOiBudWxscHRyOyB9Ci0gICAgICAg
IGNvbnN0IENTU1NlbGVjdG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9o
YXNSYXJlRGF0YSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9yTGlzdC5nZXQoKSA6IG51
bGxwdHI7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4qIGxhbmdBcmd1bWVu
dExpc3QoKSBjb25zdCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxSYXJl
RGF0YT4+KG1fZGF0YSkgPyBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2xh
bmdBcmd1bWVudExpc3QuZ2V0KCkgOiBudWxscHRyOyB9CisgICAgICAgIGNvbnN0IENTU1NlbGVj
dG9yTGlzdCogc2VsZWN0b3JMaXN0KCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpID8gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRh
Pj4obV9kYXRhKS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiBudWxscHRyOyB9CiAKICAgICAgICAg
dm9pZCBzZXRWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBib29sIG1hdGNoTG93ZXJDYXNlID0g
ZmFsc2UpOwogICAgICAgICAKQEAgLTMxNSwyMCArMzE3LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBpc0xhc3RJblRhZ0hpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2lz
TGFzdEluVGFnSGlzdG9yeTsgfQogICAgICAgICB2b2lkIHNldE5vdExhc3RJblRhZ0hpc3Rvcnko
KSB7IG1faXNMYXN0SW5UYWdIaXN0b3J5ID0gZmFsc2U7IH0KIAorI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICAgICAgYm9vbCBpc0ZvclBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzRm9yUGFnZTsg
fQogICAgICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1faXNGb3JQYWdlID0gdHJ1ZTsgfQorI2Vu
ZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICB1bnNpZ25lZCBtX3JlbGF0aW9uICAgICAgICAg
ICAgICA6IDQ7IC8vIGVudW0gUmVsYXRpb25UeXBlLgotICAgICAgICBtdXRhYmxlIHVuc2lnbmVk
IG1fbWF0Y2ggICAgICAgICA6IDQ7IC8vIGVudW0gTWF0Y2guCi0gICAgICAgIG11dGFibGUgdW5z
aWduZWQgbV9wc2V1ZG9UeXBlICAgIDogODsgLy8gUHNldWRvVHlwZS4KLSAgICAgICAgdW5zaWdu
ZWQgbV9pc0xhc3RJblNlbGVjdG9yTGlzdCAgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2lzTGFz
dEluVGFnSGlzdG9yeSAgICA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1faGFzUmFyZURhdGEgICAg
ICAgICAgIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9oYXNOYW1lV2l0aENhc2UgICAgICAgOiAx
OwotICAgICAgICB1bnNpZ25lZCBtX2lzRm9yUGFnZSAgICAgICAgICAgICA6IDE7Ci0gICAgICAg
IHVuc2lnbmVkIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlIDogMTsKLSAgICAgICAgdW5zaWduZWQg
bV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nIDogMTsKKyAgICAgICAgc3Ry
dWN0IFJhcmVEYXRhOworICAgICAgICBzdHJ1Y3QgTmFtZVdpdGhDYXNlOworICAgICAgICBWYXJp
YW50PEF0b21pY1N0cmluZywgUXVhbGlmaWVkTmFtZSwgUmVmUHRyPFJhcmVEYXRhPiwgUmVmUHRy
PE5hbWVXaXRoQ2FzZT4+IG1fZGF0YTsKKworICAgICAgICB1bnNpZ25lZCBtX3JlbGF0aW9uICAg
ICAgICAgICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uVHlwZS4KKyAgICAgICAgbXV0YWJsZSB1
bnNpZ25lZCBtX21hdGNoICAgICAgICAgIDogNDsgLy8gZW51bSBNYXRjaC4KKyAgICAgICAgbXV0
YWJsZSB1bnNpZ25lZCBtX3BzZXVkb1R5cGUgICAgIDogNzsgLy8gZW51bSBQc2V1ZG9DbGFzc1R5
cGUuCisgICAgICAgIHVuc2lnbmVkIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgICA6IDE7CisgICAg
ICAgIHVuc2lnbmVkIG1faXNMYXN0SW5UYWdIaXN0b3J5ICAgICA6IDE7CisgICAgICAgIHVuc2ln
bmVkIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlICA6IDE7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAor
ICAgICAgICB1bnNpZ25lZCBtX2lzRm9yUGFnZSAgICAgICAgICAgICAgOiAxOworI2VuZGlmCiAj
aWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0RJU0FCTEVECiAgICAgICAgIHVu
c2lnbmVkIG1fZGVzdHJ1Y3Rvckhhc0JlZW5DYWxsZWQgOiAxOwogI2VuZGlmCkBAIC0zMzksNyAr
MzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDU1NTZWxlY3RvciYgb3BlcmF0
b3I9KGNvbnN0IENTU1NlbGVjdG9yJik7CiAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmFyZURhdGE+IHsKLSAgICAgICAgICAgIHN0YXRpYyBSZWY8UmFyZURh
dGE+IGNyZWF0ZShBdG9taWNTdHJpbmcmJiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
YXJlRGF0YShXVEZNb3ZlKHZhbHVlKSkpOyB9CisgICAgICAgICAgICBSYXJlRGF0YShBdG9taWNT
dHJpbmcmJiB2YWx1ZSk7CiAgICAgICAgICAgICB+UmFyZURhdGEoKTsKIAogICAgICAgICAgICAg
Ym9vbCBtYXRjaE50aChpbnQgY291bnQpOwpAQCAtMzUwLDE2ICszNTcsMTQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fbWF0Y2hpbmdWYWx1ZTsKICAg
ICAgICAgICAgIEF0b21pY1N0cmluZyBtX3NlcmlhbGl6aW5nVmFsdWU7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGludCBtX2E7IC8vIFVzZWQgZm9yIDpudGgtKgotICAgICAgICAgICAgaW50
IG1fYjsgLy8gVXNlZCBmb3IgOm50aC0qCi0gICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fYXR0
cmlidXRlOyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKKyAgICAgICAgICAgIGludCBt
X2EgeyAwIH07IC8vIFVzZWQgZm9yIDpudGgtKgorICAgICAgICAgICAgaW50IG1fYiB7IDAgfTsg
Ly8gVXNlZCBmb3IgOm50aC0qCisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fYXR0cmlidXRl
IHsgYW55UU5hbWUoKSB9OyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKICAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBtX2F0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZTsKLSAgICAgICAg
ICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMgYW5kIDpu
dGgtKgorICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQgeyBudWxsQXRvbSgpIH07
IC8vIFVzZWQgZm9yIDpjb250YWlucyBhbmQgOm50aC0qCiAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPEF0b21pY1N0cmluZz4+IG1fbGFuZ0FyZ3VtZW50TGlzdDsgLy8gVXNlZCBm
b3IgOmxhbmcgYXJndW1lbnRzLgogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1NlbGVj
dG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDptYXRjaGVzKCkgYW5kIDpub3Qo
KS4KLSAgICAgICAgCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBSYXJlRGF0YShBdG9t
aWNTdHJpbmcmJiB2YWx1ZSk7CisgICAgICAgICAgICBib29sIG1fY2FzZUluc2Vuc2l0aXZlQXR0
cmlidXRlVmFsdWVNYXRjaGluZyB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAgIHZvaWQg
Y3JlYXRlUmFyZURhdGEoKTsKIApAQCAtMzc0LDI4ICszNzksMjEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSBtX29yaWdpbmFsTmFtZTsKICAg
ICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX2xvd2VyY2FzZUxvY2FsTmFtZTsKICAgICAg
ICAgfTsKLQotICAgICAgICB1bmlvbiBEYXRhVW5pb24gewotICAgICAgICAgICAgRGF0YVVuaW9u
KCkgOiBtX3ZhbHVlKDApIHsgfQotICAgICAgICAgICAgQXRvbWljU3RyaW5nSW1wbCogbV92YWx1
ZTsKLSAgICAgICAgICAgIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiBtX3RhZ1FO
YW1lOwotICAgICAgICAgICAgUmFyZURhdGEqIG1fcmFyZURhdGE7Ci0gICAgICAgICAgICBOYW1l
V2l0aENhc2UqIG1fbmFtZVdpdGhDYXNlOwotICAgICAgICB9IG1fZGF0YTsKICAgICB9OworI3By
YWdtYSBwYWNrKHBvcCkKIAogaW5saW5lIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9y
OjphdHRyaWJ1dGUoKSBjb25zdAogewogICAgIEFTU0VSVChpc0F0dHJpYnV0ZVNlbGVjdG9yKCkp
OwotICAgIEFTU0VSVChtX2hhc1JhcmVEYXRhKTsKLSAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURh
dGEtPm1fYXR0cmlidXRlOworICAgIEFTU0VSVChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0
cjxSYXJlRGF0YT4+KG1fZGF0YSkpOworICAgIHJldHVybiBXVEY6OmdldDxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpLT5tX2F0dHJpYnV0ZTsKIH0KIAogaW5saW5lIGNvbnN0IEF0b21pY1N0cmlu
ZyYgQ1NTU2VsZWN0b3I6OmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAgQVNTRVJUKG1faGFzUmFyZURh
dGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGVDYW5vbmljYWxM
b2NhbE5hbWU7CisgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVE
YXRhPj4obV9kYXRhKSk7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1f
ZGF0YSktPm1fYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lOwogfQogCiBpbmxpbmUgYm9vbCBD
U1NTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0VsZW1lbnQoKSBjb25zdApAQCAtNDU4LDIwICs0NTYs
MTYgQEAgaW5saW5lIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFZhbHVlKGNvbnN0IAogewogICAgIEFT
U0VSVChtYXRjaCgpICE9IFRhZyk7CiAgICAgQXRvbWljU3RyaW5nIG1hdGNoaW5nVmFsdWUgPSBt
YXRjaExvd2VyQ2FzZSA/IHZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiB2YWx1ZTsK
LSAgICBpZiAoIW1faGFzUmFyZURhdGEgJiYgbWF0Y2hpbmdWYWx1ZSAhPSB2YWx1ZSkKKyAgICBp
ZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSAmJiBt
YXRjaGluZ1ZhbHVlICE9IHZhbHVlKQogICAgICAgICBjcmVhdGVSYXJlRGF0YSgpOwogICAgIAot
ICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5IGZvciB0aGUgdW5pb24uCi0g
ICAgaWYgKCFtX2hhc1JhcmVEYXRhKSB7Ci0gICAgICAgIGlmIChtX2RhdGEubV92YWx1ZSkKLSAg
ICAgICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigpOwotICAgICAgICBtX2RhdGEubV92YWx1
ZSA9IHZhbHVlLmltcGwoKTsKLSAgICAgICAgbV9kYXRhLm1fdmFsdWUtPnJlZigpOworICAgIGlm
ICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpKSB7Cisg
ICAgICAgIG1fZGF0YSA9IHZhbHVlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9k
YXRhLm1fcmFyZURhdGEtPm1fbWF0Y2hpbmdWYWx1ZSA9IFdURk1vdmUobWF0Y2hpbmdWYWx1ZSk7
Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdWYWx1ZSA9IHZhbHVlOworICAg
IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fbWF0Y2hpbmdWYWx1ZSA9IFdU
Rk1vdmUobWF0Y2hpbmdWYWx1ZSk7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9k
YXRhKS0+bV9zZXJpYWxpemluZ1ZhbHVlID0gdmFsdWU7CiB9CiAKIGlubGluZSBDU1NTZWxlY3Rv
cjo6Q1NTU2VsZWN0b3IoKQpAQCAtNDgwLDExICs0NzQsMTAgQEAgaW5saW5lIENTU1NlbGVjdG9y
OjpDU1NTZWxlY3RvcigpCiAgICAgLCBtX3BzZXVkb1R5cGUoMCkKICAgICAsIG1faXNMYXN0SW5T
ZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgLCBtX2lzTGFzdEluVGFnSGlzdG9yeSh0cnVlKQotICAg
ICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKLSAgICAsIG1faGFzTmFtZVdpdGhDYXNlKGZhbHNlKQot
ICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgLCBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZShm
YWxzZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyhmYWxz
ZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShmYWxzZSkKKyNlbmRp
ZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRAogICAgICwg
bV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZChmYWxzZSkKICNlbmRpZgpAQCAtNDkyLDMzICs0ODUs
MjAgQEAgaW5saW5lIENTU1NlbGVjdG9yOjpDU1NTZWxlY3RvcigpCiB9CiAKIGlubGluZSBDU1NT
ZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3ImIG8pCi0gICAgOiBtX3JlbGF0
aW9uKG8ubV9yZWxhdGlvbikKKyAgICA6IG1fZGF0YShvLm1fZGF0YSkKKyAgICAsIG1fcmVsYXRp
b24oby5tX3JlbGF0aW9uKQogICAgICwgbV9tYXRjaChvLm1fbWF0Y2gpCiAgICAgLCBtX3BzZXVk
b1R5cGUoby5tX3BzZXVkb1R5cGUpCiAgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KG8ubV9p
c0xhc3RJblNlbGVjdG9yTGlzdCkKICAgICAsIG1faXNMYXN0SW5UYWdIaXN0b3J5KG8ubV9pc0xh
c3RJblRhZ0hpc3RvcnkpCi0gICAgLCBtX2hhc1JhcmVEYXRhKG8ubV9oYXNSYXJlRGF0YSkKLSAg
ICAsIG1faGFzTmFtZVdpdGhDYXNlKG8ubV9oYXNOYW1lV2l0aENhc2UpCi0gICAgLCBtX2lzRm9y
UGFnZShvLm1faXNGb3JQYWdlKQogICAgICwgbV90YWdJc0Zvck5hbWVzcGFjZVJ1bGUoby5tX3Rh
Z0lzRm9yTmFtZXNwYWNlUnVsZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFs
dWVNYXRjaGluZyhvLm1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZykKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShvLm1faXNGb3JQYWdlKQorI2Vu
ZGlmCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0RJU0FCTEVECiAgICAg
LCBtX2Rlc3RydWN0b3JIYXNCZWVuQ2FsbGVkKGZhbHNlKQogI2VuZGlmCiB7Ci0gICAgaWYgKG8u
bV9oYXNSYXJlRGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YSA9IG8ubV9kYXRhLm1f
cmFyZURhdGE7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5yZWYoKTsKLSAgICB9IGVsc2Ug
aWYgKG8ubV9oYXNOYW1lV2l0aENhc2UpIHsKLSAgICAgICAgbV9kYXRhLm1fbmFtZVdpdGhDYXNl
ID0gby5tX2RhdGEubV9uYW1lV2l0aENhc2U7Ci0gICAgICAgIG1fZGF0YS5tX25hbWVXaXRoQ2Fz
ZS0+cmVmKCk7Ci0gICAgfSBpZiAoby5tYXRjaCgpID09IFRhZykgewotICAgICAgICBtX2RhdGEu
bV90YWdRTmFtZSA9IG8ubV9kYXRhLm1fdGFnUU5hbWU7Ci0gICAgICAgIG1fZGF0YS5tX3RhZ1FO
YW1lLT5yZWYoKTsKLSAgICB9IGVsc2UgaWYgKG8ubV9kYXRhLm1fdmFsdWUpIHsKLSAgICAgICAg
bV9kYXRhLm1fdmFsdWUgPSBvLm1fZGF0YS5tX3ZhbHVlOwotICAgICAgICBtX2RhdGEubV92YWx1
ZS0+cmVmKCk7Ci0gICAgfQogfQogCiBpbmxpbmUgQ1NTU2VsZWN0b3I6On5DU1NTZWxlY3Rvcigp
CkBAIC01MjcsNjIgKzUwNyw0NCBAQCBpbmxpbmUgQ1NTU2VsZWN0b3I6On5DU1NTZWxlY3Rvcigp
CiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0RJU0FCTEVECiAgICAgbV9k
ZXN0cnVjdG9ySGFzQmVlbkNhbGxlZCA9IHRydWU7CiAjZW5kaWYKLSAgICBpZiAobV9oYXNSYXJl
RGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+ZGVyZWYoKTsKLSAgICAgICAgbV9k
YXRhLm1fcmFyZURhdGEgPSBudWxscHRyOwotICAgICAgICBtX2hhc1JhcmVEYXRhID0gZmFsc2U7
Ci0gICAgfSBlbHNlIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkgewotICAgICAgICBtX2RhdGEubV9u
YW1lV2l0aENhc2UtPmRlcmVmKCk7Ci0gICAgICAgIG1fZGF0YS5tX25hbWVXaXRoQ2FzZSA9IG51
bGxwdHI7Ci0gICAgICAgIG1faGFzTmFtZVdpdGhDYXNlID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlm
IChtYXRjaCgpID09IFRhZykgewotICAgICAgICBtX2RhdGEubV90YWdRTmFtZS0+ZGVyZWYoKTsK
LSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUgPSBudWxscHRyOwotICAgICAgICBtX21hdGNoID0g
VW5rbm93bjsKLSAgICB9IGVsc2UgaWYgKG1fZGF0YS5tX3ZhbHVlKSB7Ci0gICAgICAgIG1fZGF0
YS5tX3ZhbHVlLT5kZXJlZigpOwotICAgICAgICBtX2RhdGEubV92YWx1ZSA9IG51bGxwdHI7Ci0g
ICAgfQogfQogCiBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OnRhZ1FO
YW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSA9PSBUYWcpOwotICAgIGlmIChtX2hh
c05hbWVXaXRoQ2FzZSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5tX25hbWVXaXRoQ2FzZS0+bV9v
cmlnaW5hbE5hbWU7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IFF1YWxpZmll
ZE5hbWUqPigmbV9kYXRhLm1fdGFnUU5hbWUpOworICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0
aXZlPFJlZlB0cjxOYW1lV2l0aENhc2U+PihtX2RhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpn
ZXQ8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSktPm1fb3JpZ2luYWxOYW1lOworICAgIHJl
dHVybiBXVEY6OmdldDxRdWFsaWZpZWROYW1lPihtX2RhdGEpOwogfQogCiBpbmxpbmUgY29uc3Qg
QXRvbWljU3RyaW5nJiBDU1NTZWxlY3Rvcjo6dGFnTG93ZXJjYXNlTG9jYWxOYW1lKCkgY29uc3QK
IHsKLSAgICBpZiAobV9oYXNOYW1lV2l0aENhc2UpCi0gICAgICAgIHJldHVybiBtX2RhdGEubV9u
YW1lV2l0aENhc2UtPm1fbG93ZXJjYXNlTG9jYWxOYW1lOwotICAgIHJldHVybiBtX2RhdGEubV90
YWdRTmFtZS0+bV9sb2NhbE5hbWU7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
UHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6OmdldDxSZWZQ
dHI8TmFtZVdpdGhDYXNlPj4obV9kYXRhKS0+bV9sb3dlcmNhc2VMb2NhbE5hbWU7CisgICAgcmV0
dXJuIFdURjo6Z2V0PFF1YWxpZmllZE5hbWU+KG1fZGF0YSkubG9jYWxOYW1lKCk7CiB9CiAKIGlu
bGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjp2YWx1ZSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKG1hdGNoKCkgIT0gVGFnKTsKLSAgICBpZiAobV9oYXNSYXJlRGF0YSkKLSAgICAg
ICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX21hdGNoaW5nVmFsdWU7CisgICAgaWYgKFdU
Rjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSkKKyAgICAgICAg
cmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fbWF0Y2hpbmdWYWx1
ZTsKIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkganVzdCBhbiBBdG9taWNTdHJpbmdJ
bXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1fdmFsdWUpOworICAgIHJldHVybiBX
VEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAKIGlubGluZSBjb25zdCBBdG9taWNT
dHJpbmcmIENTU1NlbGVjdG9yOjpzZXJpYWxpemluZ1ZhbHVlKCkgY29uc3QKIHsKICAgICBBU1NF
UlQobWF0Y2goKSAhPSBUYWcpOwotICAgIGlmIChtX2hhc1JhcmVEYXRhKQotICAgICAgICByZXR1
cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdWYWx1ZTsKKyAgICBpZiAoV1RGOjpo
b2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpKQorICAgICAgICByZXR1
cm4gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9zZXJpYWxpemluZ1ZhbHVl
OwogICAgIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkganVzdCBhbiBBdG9taWNTdHJp
bmdJbXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAgIHJldHVybiAqcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1fdmFsdWUpOworICAgIHJldHVy
biBXVEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAgICAgCiBpbmxpbmUgYm9vbCBD
U1NTZWxlY3Rvcjo6YXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2FzZUluc2Vuc2l0aXZlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5n
OworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxSYXJlRGF0YT4+KG1f
ZGF0YSkgJiYgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9jYXNlSW5zZW5z
aXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAJKHJl
dmlzaW9uIDIzNDg1MykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw3ICsyOTQsOSBAQCBDU1NTZWxlY3Rvckxpc3Qg
Q1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlCiAgICAgICAgICAgICBzZWxlY3Rvci0+cHJlcGVuZFRh
Z1NlbGVjdG9yKFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9yLCBzdHlsZVNo
ZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKICAgICB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsKKyNlbmRpZgogICAgIHJldHVybiB7IFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+Pjo6ZnJvbShXVEZNb3ZlKHNlbGVj
dG9yKSkgfTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJT
ZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VyU2VsZWN0b3IuaAkocmV2aXNpb24gMjM0ODUzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldE50aChpbnQgYSwgaW50IGIpIHsgbV9zZWxlY3Rvci0+c2V0
TnRoKGEsIGIpOyB9CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFsdWUp
IHsgbV9zZWxlY3Rvci0+c2V0TWF0Y2godmFsdWUpOyB9CiAgICAgdm9pZCBzZXRSZWxhdGlvbihD
U1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlbGF0aW9u
KHZhbHVlKTsgfQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2b2lkIHNldEZvclBhZ2UoKSB7
IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorI2VuZGlmCiAKICAgICBDU1NTZWxlY3Rvcjo6
TWF0Y2ggbWF0Y2goKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5tYXRjaCgpOyB9CiAgICAg
Q1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBlIHBzZXVkb0VsZW1lbnRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347150</attachid>
            <date>2018-08-14 23:42:49 -0700</date>
            <delta_ts>2018-08-14 23:51:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188559-20180815154248.patch</filename>
            <type>text/plain</type>
            <size>22721</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3ZDQxZjJkMzdlYmNlN2MwYmVjY2Y2
ODc3NTVhMTMyNTExZjQ0NDUuLmQyYWNkMGYzZjBiMjQ0OTIxZDM3NThkOWM5MmI1MTVkMTA3ZGU2
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQg
b2YgYSB1bmlvbiBpbiBDU1NTZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgKiB3dGYvVmFyaWFudC5oOgorICAgICAgICBBZGQgcGFja2luZyBt
YWNyb3MgdG8gbWFrZSBpdCBzbyBWYXJpYW50LWNvbnRhaW5pbmcgc3RydWN0dXJlcyBkb24ndCBh
bHdheXMgaGF2ZSA3IGJ5dGVzIG9mIHBhZGRpbmcgcGVyIFZhcmlhbnQuCisKIDIwMTgtMDgtMTQg
IFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSGFzaE1hcDxSZWY8
UD4sIFY+IGFzc2VydHMgd2hlbiBWIGlzIG5vdCB6ZXJvIGZvciBpdHMgZW1wdHkgdmFsdWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBiMzM5MDk4MTdjMGZhZTE0ZTY2MTdmNTJiZTMwYzNlMWEyMGExM2NiLi5kNzQ1
ZWVmYmM3YWVmZjgxMDMxNTZiNzA3YzU4YTA3YzdjZGU0OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQgb2YgYSB1bmlvbiBpbiBD
U1NTZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg4NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAg
ICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiBUaGlzIGp1c3QgbWFrZXMgc29tZSBvZiB0aGUgZXhp
c3RpbmcgcHJvYmxlbXMgbW9yZSBvYnZpb3VzIGFuZCBlYXN5IHRvIGZpeC4KKworICAgICAgICBJ
IG1vdmVkIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyB0byBSYXJlRGF0
YSBiZWNhdXNlIGl0J3Mgb25seSB1c2VkIHdpdGggUmFyZURhdGEuCisgICAgICAgIEkgb25seSBo
YXZlIG1faXNGb3JQYWdlIHdoZW4gYXNzZXJ0aW9ucyBhcmUgZW5hYmxlZCBiZWNhdXNlIGl0J3Mg
b25seSB1c2VkIGZvciBhbiBhc3NlcnRpb24uCisgICAgICAgIFRoZSByZXN0IGlzIHByZXR0eSBz
dHJhaWdodGZvcndhcmQgdHJhbnNsYXRpbmcgdW5pb24gc3ludGF4IHRvIFZhcmlhbnQgc3ludGF4
LgorICAgICAgICBJIHVzZSBSZWZQdHIgZm9yIG5vdyB3aGVyZSBJIGNvdWxkIHVzZSBSZWYgYmVj
YXVzZSBpdCdzIG5ldmVyIG51bGwgdG8gbWFrZSBjb3B5aW5nIGVhc2llciwgYnV0IHRoYXQncyB0
ZW1wb3JhcnkuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpjcmVhdGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRBcmd1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0U2VsZWN0b3JMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXROdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6Om1hdGNoTnRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
OjpudGhBIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpudGhCIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEpOgor
ICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmFyZ3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpsYW5n
QXJndW1lbnRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxl
Y3Rvckxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6YXR0cmlidXRlQ2Fub25p
Y2FsTG9jYWxOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6On5DU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6dGFnUU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OnRhZ0xvd2VyY2FzZUxvY2FsTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTZWxlY3Rvcjo6dmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnNlcmlhbGl6aW5nVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlclNlbGVjdG9yLmg6CisKIDIwMTgtMDgtMTQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzNDg3NCBhbmQgcjIzNDg3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQu
aCBiL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQuaAppbmRleCBmNjQwNWFhMTg4ZDFlYWY2MGMxZTU1
NGZiNWIyZmUwOWM5MzY4MDliLi4zNWZhYmRiNmE4ZmMwMGU1ZmYyM2NlZDc2ZjA1YWI1NTM3YjU0
MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmFyaWFudC5oCkBAIC0xNDM1LDYgKzE0MzUsNyBAQCBzdHJ1Y3QgX19ub2V4Y2VwdF92
YXJpYW50X3N3YXA6CiBfX25vZXhjZXB0X3ZhcmlhbnRfc3dhcF9pbXBsPF9fYWxsX3N3YXBwYWJs
ZTxfVHlwZXMuLi4+Ojp2YWx1ZSxfVHlwZXMuLi4+CiB7fTsKIAorI3ByYWdtYSBwYWNrKHB1c2gs
IDEpCiB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX1R5cGVzPgogY2xhc3MgVmFyaWFudDoKICAgICAg
ICAgcHJpdmF0ZSBfX3ZhcmlhbnRfYmFzZTwKQEAgLTE3MjEsNiArMTcyMiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIH07CisjcHJhZ21hIHBhY2socG9wKQogCiB0ZW1wbGF0ZTw+CiBj
bGFzcyBWYXJpYW50PD57CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBiMmZkZDFi
ZDVlZmU5ZWFhZDRlY2MwYmZlOWYzNTI2OGYzZjhiN2IyLi4xNzhiN2RmMDUyNDg5YjQyOWEyNzli
ZDhhOTRlMjdlOGU5M2I4OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTQw
LDEzICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKIAotc3RydWN0IFNhbWVTaXplQXNDU1NTZWxlY3RvciB7Ci0gICAgdW5zaWduZWQgZmxh
Z3M7Ci0gICAgdm9pZCogdW5pb25Qb2ludGVyOwotfTsKLQogc3RhdGljX2Fzc2VydChDU1NTZWxl
Y3Rvcjo6UmVsYXRpb25UeXBlOjpTdWJzZWxlY3RvciA9PSAwLCAiU3Vic2VsZWN0b3IgbXVzdCBi
ZSAwIGZvciBjb25zdW1lQ29tYmluYXRvci4iKTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKENTU1Nl
bGVjdG9yKSA9PSBzaXplb2YoU2FtZVNpemVBc0NTU1NlbGVjdG9yKSwgIkNTU1NlbGVjdG9yIHNo
b3VsZCByZW1haW4gc21hbGwuIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihDU1NTZWxlY3Rvcikg
PT0gc2l6ZW9mKHZvaWQqKSArIHNpemVvZih1bnNpZ25lZCksICJDU1NTZWxlY3RvciBzaG91bGQg
cmVtYWluIHNtYWxsLiIpOwogCiBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnUU5hbWUsIGJvb2wgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKQogICAgIDogbV9y
ZWxhdGlvbihEZXNjZW5kYW50U3BhY2UpCkBAIC01NCwxMSArNDksMTAgQEAgQ1NTU2VsZWN0b3I6
OkNTU1NlbGVjdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRhZ0lzRm9y
TmFtZXNwYWNlUnUKICAgICAsIG1fcHNldWRvVHlwZSgwKQogICAgICwgbV9pc0xhc3RJblNlbGVj
dG9yTGlzdChmYWxzZSkKICAgICAsIG1faXNMYXN0SW5UYWdIaXN0b3J5KHRydWUpCi0gICAgLCBt
X2hhc1JhcmVEYXRhKGZhbHNlKQotICAgICwgbV9oYXNOYW1lV2l0aENhc2UoZmFsc2UpCi0gICAg
LCBtX2lzRm9yUGFnZShmYWxzZSkKICAgICAsIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlKHRhZ0lz
Rm9yTmFtZXNwYWNlUnVsZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVN
YXRjaGluZyhmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShm
YWxzZSkKKyNlbmRpZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNB
QkxFRAogICAgICwgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZChmYWxzZSkKICNlbmRpZgpAQCAt
NjYsMjUgKzYwLDIxIEBAIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdMb2NhbE5hbWUgPSB0YWdRTmFtZS5sb2NhbE5hbWUoKTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcgdGFnTG9jYWxOYW1lQVNDSUlMb3dlcmNhc2UgPSB0YWdMb2NhbE5hbWUuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIAotICAgIGlmICh0YWdMb2NhbE5hbWUgPT0gdGFnTG9j
YWxOYW1lQVNDSUlMb3dlcmNhc2UpIHsKLSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUgPSB0YWdR
TmFtZS5pbXBsKCk7Ci0gICAgICAgIG1fZGF0YS5tX3RhZ1FOYW1lLT5yZWYoKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBtX2RhdGEubV9uYW1lV2l0aENhc2UgPSBhZG9wdFJlZihuZXcgTmFtZVdp
dGhDYXNlKHRhZ1FOYW1lLCB0YWdMb2NhbE5hbWVBU0NJSUxvd2VyY2FzZSkpLmxlYWtSZWYoKTsK
LSAgICAgICAgbV9oYXNOYW1lV2l0aENhc2UgPSB0cnVlOwotICAgIH0KKyAgICBpZiAodGFnTG9j
YWxOYW1lID09IHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJjYXNlKQorICAgICAgICBtX2RhdGEgPSB0
YWdRTmFtZTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YSA9IGFkb3B0UmVmKG5ldyBOYW1lV2l0
aENhc2UodGFnUU5hbWUsIHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJjYXNlKSk7CiB9CiAKIHZvaWQg
Q1NTU2VsZWN0b3I6OmNyZWF0ZVJhcmVEYXRhKCkKIHsKICAgICBBU1NFUlQobWF0Y2goKSAhPSBU
YWcpOwotICAgIEFTU0VSVCghbV9oYXNOYW1lV2l0aENhc2UpOwotICAgIGlmIChtX2hhc1JhcmVE
YXRhKQorICAgIEFTU0VSVCghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8TmFtZVdpdGhD
YXNlPj4obV9kYXRhKSk7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJh
cmVEYXRhPj4obV9kYXRhKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIE1vdmUgdGhlIHZhbHVl
IHRvIHRoZSByYXJlIGRhdGEgc3R1Y3R1cmUuCi0gICAgQXRvbWljU3RyaW5nIHZhbHVlIHsgYWRv
cHRSZWYobV9kYXRhLm1fdmFsdWUpIH07Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEgPSAmUmFyZURh
dGE6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSkubGVha1JlZigpOwotICAgIG1faGFzUmFyZURhdGEg
PSB0cnVlOworICAgIEF0b21pY1N0cmluZyB2YWx1ZSA9IFdURjo6Z2V0PEF0b21pY1N0cmluZz4o
bV9kYXRhKTsKKyAgICBtX2RhdGEgPSBhZG9wdFJlZihuZXcgUmFyZURhdGEoV1RGTW92ZSh2YWx1
ZSkpKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIHNpbXBsZVNlbGVjdG9yU3BlY2lmaWNpdHlJbnRl
cm5hbChjb25zdCBDU1NTZWxlY3RvciYgc2ltcGxlU2VsZWN0b3IsIGJvb2wgaXNDb21wdXRpbmdN
YXhpbXVtU3BlY2lmaWNpdHkpOwpAQCAtNzUzLDYxICs3NDMsNTQgQEAgU3RyaW5nIENTU1NlbGVj
dG9yOjpzZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiB2b2lkIENT
U1NlbGVjdG9yOjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJvb2wg
Y29udmVydFRvTG93ZXJjYXNlLCBBdHRyaWJ1dGVNYXRjaFR5cGUgbWF0Y2hUeXBlKQogewogICAg
IGNyZWF0ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlID0g
dmFsdWU7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxO
YW1lID0gY29udmVydFRvTG93ZXJjYXNlID8gdmFsdWUubG9jYWxOYW1lKCkuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKSA6IHZhbHVlLmxvY2FsTmFtZSgpOwotICAgIG1fY2FzZUluc2Vuc2l0aXZl
QXR0cmlidXRlVmFsdWVNYXRjaGluZyA9IG1hdGNoVHlwZSA9PSBDYXNlSW5zZW5zaXRpdmU7Cisg
ICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRyaWJ1dGUgPSB2YWx1
ZTsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2F0dHJpYnV0ZUNh
bm9uaWNhbExvY2FsTmFtZSA9IGNvbnZlcnRUb0xvd2VyY2FzZSA/IHZhbHVlLmxvY2FsTmFtZSgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiB2YWx1ZS5sb2NhbE5hbWUoKTsKKyAgICBXVEY6
OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0
ZVZhbHVlTWF0Y2hpbmcgPSBtYXRjaFR5cGUgPT0gQ2FzZUluc2Vuc2l0aXZlOwogfQogICAgIAog
dm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3Vt
ZW50ID0gdmFsdWU7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9h
cmd1bWVudCA9IHZhbHVlOwogfQogCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRM
aXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbWljU3RyaW5nPj4gYXJndW1lbnRMaXN0KQog
ewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbGFuZ0Fy
Z3VtZW50TGlzdCA9IFdURk1vdmUoYXJndW1lbnRMaXN0KTsKKyAgICBXVEY6OmdldDxSZWZQdHI8
UmFyZURhdGE+PihtX2RhdGEpLT5tX2xhbmdBcmd1bWVudExpc3QgPSBXVEZNb3ZlKGFyZ3VtZW50
TGlzdCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdChzdGQ6OnVuaXF1
ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QpCiB7CiAgICAgY3JlYXRlUmFyZURh
dGEoKTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBXVEZNb3ZlKHNl
bGVjdG9yTGlzdCk7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9z
ZWxlY3Rvckxpc3QgPSBXVEZNb3ZlKHNlbGVjdG9yTGlzdCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0
b3I6OnNldE50aChpbnQgYSwgaW50IGIpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKLSAgICBt
X2RhdGEubV9yYXJlRGF0YS0+bV9hID0gYTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9iID0g
YjsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2EgPSBhOworICAg
IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYiA9IGI7CiB9CiAKIGJvb2wg
Q1NTU2VsZWN0b3I6Om1hdGNoTnRoKGludCBjb3VudCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9o
YXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tYXRjaE50aChjb3Vu
dCk7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1hdGNo
TnRoKGNvdW50KTsKIH0KIAogaW50IENTU1NlbGVjdG9yOjpudGhBKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2E7
CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYTsKIH0K
IAogaW50IENTU1NlbGVjdG9yOjpudGhCKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNSYXJl
RGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2I7CisgICAgcmV0dXJuIFdU
Rjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYjsKIH0KIAogQ1NTU2VsZWN0b3I6
OlJhcmVEYXRhOjpSYXJlRGF0YShBdG9taWNTdHJpbmcmJiB2YWx1ZSkKICAgICA6IG1fbWF0Y2hp
bmdWYWx1ZSh2YWx1ZSkKICAgICAsIG1fc2VyaWFsaXppbmdWYWx1ZSh2YWx1ZSkKLSAgICAsIG1f
YSgwKQotICAgICwgbV9iKDApCi0gICAgLCBtX2F0dHJpYnV0ZShhbnlRTmFtZSgpKQotICAgICwg
bV9hcmd1bWVudChudWxsQXRvbSgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmlu
ZGV4IGE2YTFiZDk2ZDYzNWY0NTBjMmY0ZjM3NmJiZmFiYWE4Y2I0YWUzYzIuLjQ5OTYwNTk4OTk5
NDg3ZjY3YjRmY2MxNjAxOGU1MTZjZmI3YWYxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwpAQCAtMzMsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENsYXNzQyA9IDEKICAgICB9Owog
CisjcHJhZ21hIHBhY2socHVzaCwgMSkKICAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBz
ZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUKICAgICBjbGFzcyBDU1NTZWxlY3RvciB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjM1LDEwICsyMzcsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlcmlhbGl6aW5nVmFsdWUo
KSBjb25zdDsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKCkgY29uc3Q7
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1l
KCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBu
dWxsQXRvbSgpOyB9CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25z
dCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSkgPyBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2FyZ3VtZW50IDogbnVs
bEF0b20oKTsgfQogICAgICAgICBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNl
bnNpdGl2ZSgpIGNvbnN0OwotICAgICAgICBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiogbGFu
Z0FyZ3VtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9y
YXJlRGF0YS0+bV9sYW5nQXJndW1lbnRMaXN0LmdldCgpIDogbnVsbHB0cjsgfQotICAgICAgICBj
b25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
UmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiBudWxs
cHRyOyB9CisgICAgICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+KiBsYW5nQXJndW1lbnRM
aXN0KCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpID8gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9sYW5n
QXJndW1lbnRMaXN0LmdldCgpIDogbnVsbHB0cjsgfQorICAgICAgICBjb25zdCBDU1NTZWxlY3Rv
ckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSA/IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+
KG1fZGF0YSktPm1fc2VsZWN0b3JMaXN0LmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgICAgIHZv
aWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiwgYm9vbCBtYXRjaExvd2VyQ2FzZSA9IGZh
bHNlKTsKICAgICAgICAgCkBAIC0zMTUsMjIgKzMxNywyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaXNMYXN0SW5UYWdIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pc0xh
c3RJblRhZ0hpc3Rvcnk7IH0KICAgICAgICAgdm9pZCBzZXROb3RMYXN0SW5UYWdIaXN0b3J5KCkg
eyBtX2lzTGFzdEluVGFnSGlzdG9yeSA9IGZhbHNlOyB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgICAgIGJvb2wgaXNGb3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZvclBhZ2U7IH0K
ICAgICAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX2lzRm9yUGFnZSA9IHRydWU7IH0KKyNlbmRp
ZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdW5zaWduZWQgbV9yZWxhdGlvbiAgICAgICAgICAg
ICAgOiA0OyAvLyBlbnVtIFJlbGF0aW9uVHlwZS4KLSAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBt
X21hdGNoICAgICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoLgotICAgICAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fcHNldWRvVHlwZSAgICA6IDg7IC8vIFBzZXVkb1R5cGUuCi0gICAgICAgIHVuc2lnbmVk
IG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9pc0xhc3RJ
blRhZ0hpc3RvcnkgICAgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2hhc1JhcmVEYXRhICAgICAg
ICAgICA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1faGFzTmFtZVdpdGhDYXNlICAgICAgIDogMTsK
LSAgICAgICAgdW5zaWduZWQgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgOiAxOwotICAgICAgICB1
bnNpZ25lZCBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1f
Y2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyA6IDE7CisgICAgICAgIHN0cnVj
dCBSYXJlRGF0YTsKKyAgICAgICAgc3RydWN0IE5hbWVXaXRoQ2FzZTsKKyAgICAgICAgVmFyaWFu
dDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWUsIFJlZlB0cjxSYXJlRGF0YT4sIFJlZlB0cjxO
YW1lV2l0aENhc2U+PiBtX2RhdGE7CisKKyAgICAgICAgdW5zaWduZWQgY2hhciBtX3JlbGF0aW9u
ICAgICAgICAgICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uVHlwZS4KKyAgICAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBjaGFyIG1fbWF0Y2ggICAgICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoLgorICAg
ICAgICB1bnNpZ25lZCBjaGFyIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgICA6IDE7CisgICAgICAg
IHVuc2lnbmVkIGNoYXIgbV9pc0xhc3RJblRhZ0hpc3RvcnkgICAgIDogMTsKKyAgICAgICAgbXV0
YWJsZSB1bnNpZ25lZCBjaGFyIG1fcHNldWRvVHlwZSAgICAgOiA3OyAvLyBlbnVtIFBzZXVkb0Ns
YXNzVHlwZS4KKyAgICAgICAgdW5zaWduZWQgY2hhciBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSAg
OiAxOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdW5zaWduZWQgY2hhciBtX2lzRm9y
UGFnZSAgICAgICAgICAgICAgOiAxOworI2VuZGlmCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OX0RJU0FCTEVECi0gICAgICAgIHVuc2lnbmVkIG1fZGVzdHJ1Y3Rvckhhc0Jl
ZW5DYWxsZWQgOiAxOworICAgICAgICB1bnNpZ25lZCBjaGFyIG1fZGVzdHJ1Y3Rvckhhc0JlZW5D
YWxsZWQgOiAxOwogI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgc2ltcGxlU2VsZWN0b3JTcGVj
aWZpY2l0eUZvclBhZ2UoKSBjb25zdDsKQEAgLTMzOSw3ICszNDYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIENTU1NlbGVjdG9yJiBvcGVyYXRvcj0oY29uc3QgQ1NTU2VsZWN0b3Im
KTsKIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxSYXJlRGF0
YT4gewotICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJlRGF0YT4gY3JlYXRlKEF0b21pY1N0cmlu
ZyYmIHZhbHVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJhcmVEYXRhKFdURk1vdmUodmFsdWUp
KSk7IH0KKyAgICAgICAgICAgIFJhcmVEYXRhKEF0b21pY1N0cmluZyYmIHZhbHVlKTsKICAgICAg
ICAgICAgIH5SYXJlRGF0YSgpOwogCiAgICAgICAgICAgICBib29sIG1hdGNoTnRoKGludCBjb3Vu
dCk7CkBAIC0zNTAsMTYgKzM1NywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICBBdG9taWNTdHJpbmcgbV9tYXRjaGluZ1ZhbHVlOwogICAgICAgICAgICAgQXRvbWljU3RyaW5n
IG1fc2VyaWFsaXppbmdWYWx1ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IG1fYTsg
Ly8gVXNlZCBmb3IgOm50aC0qCi0gICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZvciA6bnRo
LSoKLSAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0
dHJpYnV0ZSBzZWxlY3RvcgorICAgICAgICAgICAgaW50IG1fYSB7IDAgfTsgLy8gVXNlZCBmb3Ig
Om50aC0qCisgICAgICAgICAgICBpbnQgbV9iIHsgMCB9OyAvLyBVc2VkIGZvciA6bnRoLSoKKyAg
ICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGUgeyBhbnlRTmFtZSgpIH07IC8vIHVz
ZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXR0
cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lOwotICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJn
dW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250YWlucyBhbmQgOm50aC0qCisgICAgICAgICAgICBBdG9t
aWNTdHJpbmcgbV9hcmd1bWVudCB7IG51bGxBdG9tKCkgfTsgLy8gVXNlZCBmb3IgOmNvbnRhaW5z
IGFuZCA6bnRoLSoKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbWljU3Ry
aW5nPj4gbV9sYW5nQXJndW1lbnRMaXN0OyAvLyBVc2VkIGZvciA6bGFuZyBhcmd1bWVudHMuCiAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0PiBtX3NlbGVjdG9yTGlz
dDsgLy8gVXNlZCBmb3IgOm1hdGNoZXMoKSBhbmQgOm5vdCgpLgotICAgICAgICAKLSAgICAgICAg
cHJpdmF0ZToKLSAgICAgICAgICAgIFJhcmVEYXRhKEF0b21pY1N0cmluZyYmIHZhbHVlKTsKKyAg
ICAgICAgICAgIGJvb2wgbV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nIHsg
ZmFsc2UgfTsKICAgICAgICAgfTsKICAgICAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YSgpOwogCkBA
IC0zNzQsMjggKzM3OSwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lIG1fb3JpZ2luYWxOYW1lOwogICAgICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nIG1fbG93ZXJjYXNlTG9jYWxOYW1lOwogICAgICAgICB9OwotCi0gICAgICAgIHVuaW9u
IERhdGFVbmlvbiB7Ci0gICAgICAgICAgICBEYXRhVW5pb24oKSA6IG1fdmFsdWUoMCkgeyB9Ci0g
ICAgICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBtX3ZhbHVlOwotICAgICAgICAgICAgUXVhbGlm
aWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqIG1fdGFnUU5hbWU7Ci0gICAgICAgICAgICBSYXJl
RGF0YSogbV9yYXJlRGF0YTsKLSAgICAgICAgICAgIE5hbWVXaXRoQ2FzZSogbV9uYW1lV2l0aENh
c2U7Ci0gICAgICAgIH0gbV9kYXRhOwogICAgIH07CisjcHJhZ21hIHBhY2socG9wKQogCiBpbmxp
bmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OmF0dHJpYnV0ZSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAgQVNTRVJUKG1faGFzUmFy
ZURhdGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CisgICAg
QVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSk7
CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYXR0cmli
dXRlOwogfQogCiBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBDU1NTZWxlY3Rvcjo6YXR0cmli
dXRlQ2Fub25pY2FsTG9jYWxOYW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNBdHRyaWJ1dGVT
ZWxlY3RvcigpKTsKLSAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0
YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZTsKKyAgICBBU1NFUlQo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpKTsKKyAgICBy
ZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRyaWJ1dGVDYW5v
bmljYWxMb2NhbE5hbWU7CiB9CiAKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjptYXRjaGVzUHNl
dWRvRWxlbWVudCgpIGNvbnN0CkBAIC00NTgsMjAgKzQ1NiwxNiBAQCBpbmxpbmUgdm9pZCBDU1NT
ZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgYm9vbCBtYXRjaExv
d2VyQ2FzZQogewogICAgIEFTU0VSVChtYXRjaCgpICE9IFRhZyk7CiAgICAgQXRvbWljU3RyaW5n
IG1hdGNoaW5nVmFsdWUgPSBtYXRjaExvd2VyQ2FzZSA/IHZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCkgOiB2YWx1ZTsKLSAgICBpZiAoIW1faGFzUmFyZURhdGEgJiYgbWF0Y2hpbmdWYWx1
ZSAhPSB2YWx1ZSkKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVE
YXRhPj4obV9kYXRhKSAmJiBtYXRjaGluZ1ZhbHVlICE9IHZhbHVlKQogICAgICAgICBjcmVhdGVS
YXJlRGF0YSgpOwogICAgIAotICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5
IGZvciB0aGUgdW5pb24uCi0gICAgaWYgKCFtX2hhc1JhcmVEYXRhKSB7Ci0gICAgICAgIGlmICht
X2RhdGEubV92YWx1ZSkKLSAgICAgICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigpOwotICAg
ICAgICBtX2RhdGEubV92YWx1ZSA9IHZhbHVlLmltcGwoKTsKLSAgICAgICAgbV9kYXRhLm1fdmFs
dWUtPnJlZigpOworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpKSB7CisgICAgICAgIG1fZGF0YSA9IHZhbHVlOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbWF0Y2hpbmdWYWx1ZSA9IFdURk1v
dmUobWF0Y2hpbmdWYWx1ZSk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdW
YWx1ZSA9IHZhbHVlOworICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1f
bWF0Y2hpbmdWYWx1ZSA9IFdURk1vdmUobWF0Y2hpbmdWYWx1ZSk7CisgICAgV1RGOjpnZXQ8UmVm
UHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9zZXJpYWxpemluZ1ZhbHVlID0gdmFsdWU7CiB9CiAK
IGlubGluZSBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoKQpAQCAtNDgwLDExICs0NzQsMTAgQEAg
aW5saW5lIENTU1NlbGVjdG9yOjpDU1NTZWxlY3RvcigpCiAgICAgLCBtX3BzZXVkb1R5cGUoMCkK
ICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgLCBtX2lzTGFzdEluVGFn
SGlzdG9yeSh0cnVlKQotICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKLSAgICAsIG1faGFzTmFt
ZVdpdGhDYXNlKGZhbHNlKQotICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgLCBtX3RhZ0lz
Rm9yTmFtZXNwYWNlUnVsZShmYWxzZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
VmFsdWVNYXRjaGluZyhmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9y
UGFnZShmYWxzZSkKKyNlbmRpZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tl9ESVNBQkxFRAogICAgICwgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZChmYWxzZSkKICNlbmRp
ZgpAQCAtNDkyLDMzICs0ODUsMjAgQEAgaW5saW5lIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcigp
CiB9CiAKIGlubGluZSBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Im
IG8pCi0gICAgOiBtX3JlbGF0aW9uKG8ubV9yZWxhdGlvbikKKyAgICA6IG1fZGF0YShvLm1fZGF0
YSkKKyAgICAsIG1fcmVsYXRpb24oby5tX3JlbGF0aW9uKQogICAgICwgbV9tYXRjaChvLm1fbWF0
Y2gpCiAgICAgLCBtX3BzZXVkb1R5cGUoby5tX3BzZXVkb1R5cGUpCiAgICAgLCBtX2lzTGFzdElu
U2VsZWN0b3JMaXN0KG8ubV9pc0xhc3RJblNlbGVjdG9yTGlzdCkKICAgICAsIG1faXNMYXN0SW5U
YWdIaXN0b3J5KG8ubV9pc0xhc3RJblRhZ0hpc3RvcnkpCi0gICAgLCBtX2hhc1JhcmVEYXRhKG8u
bV9oYXNSYXJlRGF0YSkKLSAgICAsIG1faGFzTmFtZVdpdGhDYXNlKG8ubV9oYXNOYW1lV2l0aENh
c2UpCi0gICAgLCBtX2lzRm9yUGFnZShvLm1faXNGb3JQYWdlKQogICAgICwgbV90YWdJc0Zvck5h
bWVzcGFjZVJ1bGUoby5tX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKLSAgICAsIG1fY2FzZUluc2Vu
c2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyhvLm1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
VmFsdWVNYXRjaGluZykKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShv
Lm1faXNGb3JQYWdlKQorI2VuZGlmCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OX0RJU0FCTEVECiAgICAgLCBtX2Rlc3RydWN0b3JIYXNCZWVuQ2FsbGVkKGZhbHNlKQogI2Vu
ZGlmCiB7Ci0gICAgaWYgKG8ubV9oYXNSYXJlRGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJl
RGF0YSA9IG8ubV9kYXRhLm1fcmFyZURhdGE7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5y
ZWYoKTsKLSAgICB9IGVsc2UgaWYgKG8ubV9oYXNOYW1lV2l0aENhc2UpIHsKLSAgICAgICAgbV9k
YXRhLm1fbmFtZVdpdGhDYXNlID0gby5tX2RhdGEubV9uYW1lV2l0aENhc2U7Ci0gICAgICAgIG1f
ZGF0YS5tX25hbWVXaXRoQ2FzZS0+cmVmKCk7Ci0gICAgfSBpZiAoby5tYXRjaCgpID09IFRhZykg
ewotICAgICAgICBtX2RhdGEubV90YWdRTmFtZSA9IG8ubV9kYXRhLm1fdGFnUU5hbWU7Ci0gICAg
ICAgIG1fZGF0YS5tX3RhZ1FOYW1lLT5yZWYoKTsKLSAgICB9IGVsc2UgaWYgKG8ubV9kYXRhLm1f
dmFsdWUpIHsKLSAgICAgICAgbV9kYXRhLm1fdmFsdWUgPSBvLm1fZGF0YS5tX3ZhbHVlOwotICAg
ICAgICBtX2RhdGEubV92YWx1ZS0+cmVmKCk7Ci0gICAgfQogfQogCiBpbmxpbmUgQ1NTU2VsZWN0
b3I6On5DU1NTZWxlY3RvcigpCkBAIC01MjcsNjIgKzUwNyw0NCBAQCBpbmxpbmUgQ1NTU2VsZWN0
b3I6On5DU1NTZWxlY3RvcigpCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
X0RJU0FCTEVECiAgICAgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZCA9IHRydWU7CiAjZW5kaWYK
LSAgICBpZiAobV9oYXNSYXJlRGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+ZGVy
ZWYoKTsKLSAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBudWxscHRyOwotICAgICAgICBtX2hh
c1JhcmVEYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkgewot
ICAgICAgICBtX2RhdGEubV9uYW1lV2l0aENhc2UtPmRlcmVmKCk7Ci0gICAgICAgIG1fZGF0YS5t
X25hbWVXaXRoQ2FzZSA9IG51bGxwdHI7Ci0gICAgICAgIG1faGFzTmFtZVdpdGhDYXNlID0gZmFs
c2U7Ci0gICAgfSBlbHNlIGlmIChtYXRjaCgpID09IFRhZykgewotICAgICAgICBtX2RhdGEubV90
YWdRTmFtZS0+ZGVyZWYoKTsKLSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUgPSBudWxscHRyOwot
ICAgICAgICBtX21hdGNoID0gVW5rbm93bjsKLSAgICB9IGVsc2UgaWYgKG1fZGF0YS5tX3ZhbHVl
KSB7Ci0gICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigpOwotICAgICAgICBtX2RhdGEubV92
YWx1ZSA9IG51bGxwdHI7Ci0gICAgfQogfQogCiBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYg
Q1NTU2VsZWN0b3I6OnRhZ1FOYW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSA9PSBU
YWcpOwotICAgIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5t
X25hbWVXaXRoQ2FzZS0+bV9vcmlnaW5hbE5hbWU7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PGNvbnN0IFF1YWxpZmllZE5hbWUqPigmbV9kYXRhLm1fdGFnUU5hbWUpOworICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxOYW1lV2l0aENhc2U+PihtX2RhdGEpKQorICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSktPm1fb3Jp
Z2luYWxOYW1lOworICAgIHJldHVybiBXVEY6OmdldDxRdWFsaWZpZWROYW1lPihtX2RhdGEpOwog
fQogCiBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBDU1NTZWxlY3Rvcjo6dGFnTG93ZXJjYXNl
TG9jYWxOYW1lKCkgY29uc3QKIHsKLSAgICBpZiAobV9oYXNOYW1lV2l0aENhc2UpCi0gICAgICAg
IHJldHVybiBtX2RhdGEubV9uYW1lV2l0aENhc2UtPm1fbG93ZXJjYXNlTG9jYWxOYW1lOwotICAg
IHJldHVybiBtX2RhdGEubV90YWdRTmFtZS0+bV9sb2NhbE5hbWU7CisgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSkpCisgICAgICAgIHJl
dHVybiBXVEY6OmdldDxSZWZQdHI8TmFtZVdpdGhDYXNlPj4obV9kYXRhKS0+bV9sb3dlcmNhc2VM
b2NhbE5hbWU7CisgICAgcmV0dXJuIFdURjo6Z2V0PFF1YWxpZmllZE5hbWU+KG1fZGF0YSkubG9j
YWxOYW1lKCk7CiB9CiAKIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjp2
YWx1ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1hdGNoKCkgIT0gVGFnKTsKLSAgICBpZiAobV9o
YXNSYXJlRGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX21hdGNoaW5n
VmFsdWU7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4o
bV9kYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSktPm1fbWF0Y2hpbmdWYWx1ZTsKIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkganVz
dCBhbiBBdG9taWNTdHJpbmdJbXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1fdmFs
dWUpOworICAgIHJldHVybiBXVEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAKIGlu
bGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjpzZXJpYWxpemluZ1ZhbHVlKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSAhPSBUYWcpOwotICAgIGlmIChtX2hhc1JhcmVE
YXRhKQotICAgICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdWYWx1
ZTsKKyAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2Rh
dGEpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+
bV9zZXJpYWxpemluZ1ZhbHVlOwogICAgIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkg
anVzdCBhbiBBdG9taWNTdHJpbmdJbXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1f
dmFsdWUpOworICAgIHJldHVybiBXVEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAg
ICAgCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6YXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2Fz
ZUluc2Vuc2l0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jYXNlSW5zZW5zaXRpdmVBdHRy
aWJ1dGVWYWx1ZU1hdGNoaW5nOworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkgJiYgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9k
YXRhKS0+bV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcAppbmRleCBhOGVjZmU3MGYxZTYwMTViMmNhNTVmMDUxODEzY2ZjMDM2ZmI5Mjg3Li4x
ZjI0YjRiNzQ3NGJhMDllZjhmY2U5YjU2NThmNTA1M2FmODlmMGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTI5NCw3ICsyOTQsOSBAQCBDU1NT
ZWxlY3Rvckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSByYW5nZSwgU3R5bAogICAgICAgICAgICAgc2VsZWN0b3ItPnByZXBlbmRUYWdTZWxl
Y3RvcihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+
ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CiAgICAgfQogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IHNlbGVjdG9yLT5zZXRGb3JQYWdlKCk7CisjZW5kaWYKICAgICByZXR1cm4geyBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj46OmZyb20oV1RGTW92ZShzZWxlY3Rvcikp
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3Iu
aAppbmRleCA0OThiZWEwNjIyZmMzZWZiMjY2MzgxNGJmM2I1OTQxODYwMGYxYTBiLi41NTNhZDg4
MzZkMTI1OTI3YjhjOGY1MjdmMTg5YjI1ODY3M2Y5MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE50aChpbnQgYSwgaW50IGIpIHsgbV9zZWxlY3Rvci0+c2V0TnRoKGEsIGIp
OyB9CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxl
Y3Rvci0+c2V0TWF0Y2godmFsdWUpOyB9CiAgICAgdm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rv
cjo6UmVsYXRpb25UeXBlIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlbGF0aW9uKHZhbHVlKTsg
fQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0
b3ItPnNldEZvclBhZ2UoKTsgfQorI2VuZGlmCiAKICAgICBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0
Y2goKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5tYXRjaCgpOyB9CiAgICAgQ1NTU2VsZWN0
b3I6OlBzZXVkb0VsZW1lbnRUeXBlIHBzZXVkb0VsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347151</attachid>
            <date>2018-08-14 23:53:20 -0700</date>
            <delta_ts>2018-09-12 20:47:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188559-20180815155319.patch</filename>
            <type>text/plain</type>
            <size>22664</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3ZDQxZjJkMzdlYmNlN2MwYmVjY2Y2
ODc3NTVhMTMyNTExZjQ0NDUuLmQyYWNkMGYzZjBiMjQ0OTIxZDM3NThkOWM5MmI1MTVkMTA3ZGU2
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQg
b2YgYSB1bmlvbiBpbiBDU1NTZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgKiB3dGYvVmFyaWFudC5oOgorICAgICAgICBBZGQgcGFja2luZyBt
YWNyb3MgdG8gbWFrZSBpdCBzbyBWYXJpYW50LWNvbnRhaW5pbmcgc3RydWN0dXJlcyBkb24ndCBh
bHdheXMgaGF2ZSA3IGJ5dGVzIG9mIHBhZGRpbmcgcGVyIFZhcmlhbnQuCisKIDIwMTgtMDgtMTQg
IFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSGFzaE1hcDxSZWY8
UD4sIFY+IGFzc2VydHMgd2hlbiBWIGlzIG5vdCB6ZXJvIGZvciBpdHMgZW1wdHkgdmFsdWUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBiMzM5MDk4MTdjMGZhZTE0ZTY2MTdmNTJiZTMwYzNlMWEyMGExM2NiLi5kNzQ1
ZWVmYmM3YWVmZjgxMDMxNTZiNzA3YzU4YTA3YzdjZGU0OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTgtMDgtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQgb2YgYSB1bmlvbiBpbiBD
U1NTZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg4NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAg
ICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiBUaGlzIGp1c3QgbWFrZXMgc29tZSBvZiB0aGUgZXhp
c3RpbmcgcHJvYmxlbXMgbW9yZSBvYnZpb3VzIGFuZCBlYXN5IHRvIGZpeC4KKworICAgICAgICBJ
IG1vdmVkIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyB0byBSYXJlRGF0
YSBiZWNhdXNlIGl0J3Mgb25seSB1c2VkIHdpdGggUmFyZURhdGEuCisgICAgICAgIEkgb25seSBo
YXZlIG1faXNGb3JQYWdlIHdoZW4gYXNzZXJ0aW9ucyBhcmUgZW5hYmxlZCBiZWNhdXNlIGl0J3Mg
b25seSB1c2VkIGZvciBhbiBhc3NlcnRpb24uCisgICAgICAgIFRoZSByZXN0IGlzIHByZXR0eSBz
dHJhaWdodGZvcndhcmQgdHJhbnNsYXRpbmcgdW5pb24gc3ludGF4IHRvIFZhcmlhbnQgc3ludGF4
LgorICAgICAgICBJIHVzZSBSZWZQdHIgZm9yIG5vdyB3aGVyZSBJIGNvdWxkIHVzZSBSZWYgYmVj
YXVzZSBpdCdzIG5ldmVyIG51bGwgdG8gbWFrZSBjb3B5aW5nIGVhc2llciwgYnV0IHRoYXQncyB0
ZW1wb3JhcnkuCisKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Nl
bGVjdG9yOjpjcmVhdGVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRBcmd1bWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0U2VsZWN0b3JMaXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXROdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6Om1hdGNoTnRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
OjpudGhBIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpudGhCIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEpOgor
ICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmFyZ3VtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpsYW5n
QXJndW1lbnRMaXN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxl
Y3Rvckxpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6YXR0cmlidXRlQ2Fub25p
Y2FsTG9jYWxOYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6On5DU1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWxlY3Rvcjo6dGFnUU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OnRhZ0xvd2VyY2FzZUxvY2FsTmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTZWxlY3Rvcjo6dmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnNlcmlhbGl6aW5nVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OmF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNlbnNpdGl2ZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFyZURhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU1BhcnNlclNlbGVjdG9yLmg6CisKIDIwMTgtMDgtMTQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIzNDg3NCBhbmQgcjIzNDg3Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQu
aCBiL1NvdXJjZS9XVEYvd3RmL1ZhcmlhbnQuaAppbmRleCBmNjQwNWFhMTg4ZDFlYWY2MGMxZTU1
NGZiNWIyZmUwOWM5MzY4MDliLi4zNWZhYmRiNmE4ZmMwMGU1ZmYyM2NlZDc2ZjA1YWI1NTM3YjU0
MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVmFyaWFudC5oCkBAIC0xNDM1LDYgKzE0MzUsNyBAQCBzdHJ1Y3QgX19ub2V4Y2VwdF92
YXJpYW50X3N3YXA6CiBfX25vZXhjZXB0X3ZhcmlhbnRfc3dhcF9pbXBsPF9fYWxsX3N3YXBwYWJs
ZTxfVHlwZXMuLi4+Ojp2YWx1ZSxfVHlwZXMuLi4+CiB7fTsKIAorI3ByYWdtYSBwYWNrKHB1c2gs
IDEpCiB0ZW1wbGF0ZTx0eXBlbmFtZSAuLi4gX1R5cGVzPgogY2xhc3MgVmFyaWFudDoKICAgICAg
ICAgcHJpdmF0ZSBfX3ZhcmlhbnRfYmFzZTwKQEAgLTE3MjEsNiArMTcyMiw3IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIH07CisjcHJhZ21hIHBhY2socG9wKQogCiB0ZW1wbGF0ZTw+CiBj
bGFzcyBWYXJpYW50PD57CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBiMmZkZDFi
ZDVlZmU5ZWFhZDRlY2MwYmZlOWYzNTI2OGYzZjhiN2IyLi41YjYyZTcyNTMwMDhhNTYwNDk0OGEy
OTQ0N2U1MGY1MDMxZDVjMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTQw
LDI1ICs0MCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKLXN0cnVjdCBTYW1lU2l6ZUFzQ1NTU2VsZWN0b3IgewotICAgIHVuc2lnbmVkIGZs
YWdzOwotICAgIHZvaWQqIHVuaW9uUG9pbnRlcjsKLX07Ci0KIHN0YXRpY19hc3NlcnQoQ1NTU2Vs
ZWN0b3I6OlJlbGF0aW9uVHlwZTo6U3Vic2VsZWN0b3IgPT0gMCwgIlN1YnNlbGVjdG9yIG11c3Qg
YmUgMCBmb3IgY29uc3VtZUNvbWJpbmF0b3IuIik7Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihDU1NT
ZWxlY3RvcikgPT0gc2l6ZW9mKFNhbWVTaXplQXNDU1NTZWxlY3RvciksICJDU1NTZWxlY3RvciBz
aG91bGQgcmVtYWluIHNtYWxsLiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoQ1NTU2VsZWN0b3Ip
ID09IHNpemVvZih2b2lkKikgKyBzaXplb2YodW5zaWduZWQpLCAiQ1NTU2VsZWN0b3Igc2hvdWxk
IHJlbWFpbiBzbWFsbC4iKTsKIAogQ1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ1FOYW1lLCBib29sIHRhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKICAgICA6IG1f
cmVsYXRpb24oRGVzY2VuZGFudFNwYWNlKQogICAgICwgbV9tYXRjaChUYWcpCi0gICAgLCBtX3Bz
ZXVkb1R5cGUoMCkKICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgLCBt
X2lzTGFzdEluVGFnSGlzdG9yeSh0cnVlKQotICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKLSAg
ICAsIG1faGFzTmFtZVdpdGhDYXNlKGZhbHNlKQotICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCisg
ICAgLCBtX3BzZXVkb1R5cGUoMCkKICAgICAsIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlKHRhZ0lz
Rm9yTmFtZXNwYWNlUnVsZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVN
YXRjaGluZyhmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShm
YWxzZSkKKyNlbmRpZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNB
QkxFRAogICAgICwgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZChmYWxzZSkKICNlbmRpZgpAQCAt
NjYsMjUgKzYwLDIxIEBAIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcihjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1CiAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiB0YWdMb2NhbE5hbWUgPSB0YWdRTmFtZS5sb2NhbE5hbWUoKTsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcgdGFnTG9jYWxOYW1lQVNDSUlMb3dlcmNhc2UgPSB0YWdMb2NhbE5hbWUuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIAotICAgIGlmICh0YWdMb2NhbE5hbWUgPT0gdGFnTG9j
YWxOYW1lQVNDSUlMb3dlcmNhc2UpIHsKLSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUgPSB0YWdR
TmFtZS5pbXBsKCk7Ci0gICAgICAgIG1fZGF0YS5tX3RhZ1FOYW1lLT5yZWYoKTsKLSAgICB9IGVs
c2UgewotICAgICAgICBtX2RhdGEubV9uYW1lV2l0aENhc2UgPSBhZG9wdFJlZihuZXcgTmFtZVdp
dGhDYXNlKHRhZ1FOYW1lLCB0YWdMb2NhbE5hbWVBU0NJSUxvd2VyY2FzZSkpLmxlYWtSZWYoKTsK
LSAgICAgICAgbV9oYXNOYW1lV2l0aENhc2UgPSB0cnVlOwotICAgIH0KKyAgICBpZiAodGFnTG9j
YWxOYW1lID09IHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJjYXNlKQorICAgICAgICBtX2RhdGEgPSB0
YWdRTmFtZTsKKyAgICBlbHNlCisgICAgICAgIG1fZGF0YSA9IGFkb3B0UmVmKG5ldyBOYW1lV2l0
aENhc2UodGFnUU5hbWUsIHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJjYXNlKSk7CiB9CiAKIHZvaWQg
Q1NTU2VsZWN0b3I6OmNyZWF0ZVJhcmVEYXRhKCkKIHsKICAgICBBU1NFUlQobWF0Y2goKSAhPSBU
YWcpOwotICAgIEFTU0VSVCghbV9oYXNOYW1lV2l0aENhc2UpOwotICAgIGlmIChtX2hhc1JhcmVE
YXRhKQorICAgIEFTU0VSVCghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8TmFtZVdpdGhD
YXNlPj4obV9kYXRhKSk7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJh
cmVEYXRhPj4obV9kYXRhKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIE1vdmUgdGhlIHZhbHVl
IHRvIHRoZSByYXJlIGRhdGEgc3R1Y3R1cmUuCi0gICAgQXRvbWljU3RyaW5nIHZhbHVlIHsgYWRv
cHRSZWYobV9kYXRhLm1fdmFsdWUpIH07Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEgPSAmUmFyZURh
dGE6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSkubGVha1JlZigpOwotICAgIG1faGFzUmFyZURhdGEg
PSB0cnVlOworICAgIEF0b21pY1N0cmluZyB2YWx1ZSA9IFdURjo6Z2V0PEF0b21pY1N0cmluZz4o
bV9kYXRhKTsKKyAgICBtX2RhdGEgPSBhZG9wdFJlZihuZXcgUmFyZURhdGEoV1RGTW92ZSh2YWx1
ZSkpKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIHNpbXBsZVNlbGVjdG9yU3BlY2lmaWNpdHlJbnRl
cm5hbChjb25zdCBDU1NTZWxlY3RvciYgc2ltcGxlU2VsZWN0b3IsIGJvb2wgaXNDb21wdXRpbmdN
YXhpbXVtU3BlY2lmaWNpdHkpOwpAQCAtNzUzLDYxICs3NDMsNTQgQEAgU3RyaW5nIENTU1NlbGVj
dG9yOjpzZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiByaWdodFNpZGUpIGNvbnN0CiB2b2lkIENT
U1NlbGVjdG9yOjpzZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdmFsdWUsIGJvb2wg
Y29udmVydFRvTG93ZXJjYXNlLCBBdHRyaWJ1dGVNYXRjaFR5cGUgbWF0Y2hUeXBlKQogewogICAg
IGNyZWF0ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlID0g
dmFsdWU7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxO
YW1lID0gY29udmVydFRvTG93ZXJjYXNlID8gdmFsdWUubG9jYWxOYW1lKCkuY29udmVydFRvQVND
SUlMb3dlcmNhc2UoKSA6IHZhbHVlLmxvY2FsTmFtZSgpOwotICAgIG1fY2FzZUluc2Vuc2l0aXZl
QXR0cmlidXRlVmFsdWVNYXRjaGluZyA9IG1hdGNoVHlwZSA9PSBDYXNlSW5zZW5zaXRpdmU7Cisg
ICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRyaWJ1dGUgPSB2YWx1
ZTsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2F0dHJpYnV0ZUNh
bm9uaWNhbExvY2FsTmFtZSA9IGNvbnZlcnRUb0xvd2VyY2FzZSA/IHZhbHVlLmxvY2FsTmFtZSgp
LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiB2YWx1ZS5sb2NhbE5hbWUoKTsKKyAgICBXVEY6
OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0
ZVZhbHVlTWF0Y2hpbmcgPSBtYXRjaFR5cGUgPT0gQ2FzZUluc2Vuc2l0aXZlOwogfQogICAgIAog
dm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3Vt
ZW50ID0gdmFsdWU7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9h
cmd1bWVudCA9IHZhbHVlOwogfQogCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRMYW5nQXJndW1lbnRM
aXN0KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbWljU3RyaW5nPj4gYXJndW1lbnRMaXN0KQog
ewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbGFuZ0Fy
Z3VtZW50TGlzdCA9IFdURk1vdmUoYXJndW1lbnRMaXN0KTsKKyAgICBXVEY6OmdldDxSZWZQdHI8
UmFyZURhdGE+PihtX2RhdGEpLT5tX2xhbmdBcmd1bWVudExpc3QgPSBXVEZNb3ZlKGFyZ3VtZW50
TGlzdCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldFNlbGVjdG9yTGlzdChzdGQ6OnVuaXF1
ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0PiBzZWxlY3Rvckxpc3QpCiB7CiAgICAgY3JlYXRlUmFyZURh
dGEoKTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QgPSBXVEZNb3ZlKHNl
bGVjdG9yTGlzdCk7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9z
ZWxlY3Rvckxpc3QgPSBXVEZNb3ZlKHNlbGVjdG9yTGlzdCk7CiB9CiAKIHZvaWQgQ1NTU2VsZWN0
b3I6OnNldE50aChpbnQgYSwgaW50IGIpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKLSAgICBt
X2RhdGEubV9yYXJlRGF0YS0+bV9hID0gYTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9iID0g
YjsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2EgPSBhOworICAg
IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYiA9IGI7CiB9CiAKIGJvb2wg
Q1NTU2VsZWN0b3I6Om1hdGNoTnRoKGludCBjb3VudCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9o
YXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tYXRjaE50aChjb3Vu
dCk7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1hdGNo
TnRoKGNvdW50KTsKIH0KIAogaW50IENTU1NlbGVjdG9yOjpudGhBKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2E7
CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYTsKIH0K
IAogaW50IENTU1NlbGVjdG9yOjpudGhCKCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNSYXJl
RGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2I7CisgICAgcmV0dXJuIFdU
Rjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYjsKIH0KIAogQ1NTU2VsZWN0b3I6
OlJhcmVEYXRhOjpSYXJlRGF0YShBdG9taWNTdHJpbmcmJiB2YWx1ZSkKICAgICA6IG1fbWF0Y2hp
bmdWYWx1ZSh2YWx1ZSkKICAgICAsIG1fc2VyaWFsaXppbmdWYWx1ZSh2YWx1ZSkKLSAgICAsIG1f
YSgwKQotICAgICwgbV9iKDApCi0gICAgLCBtX2F0dHJpYnV0ZShhbnlRTmFtZSgpKQotICAgICwg
bV9hcmd1bWVudChudWxsQXRvbSgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmlu
ZGV4IGE2YTFiZDk2ZDYzNWY0NTBjMmY0ZjM3NmJiZmFiYWE4Y2I0YWUzYzIuLjQ5OTYwNTk4OTk5
NDg3ZjY3YjRmY2MxNjAxOGU1MTZjZmI3YWYxNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTU2VsZWN0b3JMaXN0OwpAQCAtMzMsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENsYXNzQyA9IDEKICAgICB9Owog
CisjcHJhZ21hIHBhY2socHVzaCwgMSkKICAgICAvLyB0aGlzIGNsYXNzIHJlcHJlc2VudHMgYSBz
ZWxlY3RvciBmb3IgYSBTdHlsZVJ1bGUKICAgICBjbGFzcyBDU1NTZWxlY3RvciB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtMjM1LDEwICsyMzcsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlcmlhbGl6aW5nVmFsdWUo
KSBjb25zdDsKICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKCkgY29uc3Q7
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1l
KCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25zdCB7
IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fYXJndW1lbnQgOiBu
dWxsQXRvbSgpOyB9CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQoKSBjb25z
dCB7IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSkgPyBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2FyZ3VtZW50IDogbnVs
bEF0b20oKTsgfQogICAgICAgICBib29sIGF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nhc2VJbnNl
bnNpdGl2ZSgpIGNvbnN0OwotICAgICAgICBjb25zdCBWZWN0b3I8QXRvbWljU3RyaW5nPiogbGFu
Z0FyZ3VtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9y
YXJlRGF0YS0+bV9sYW5nQXJndW1lbnRMaXN0LmdldCgpIDogbnVsbHB0cjsgfQotICAgICAgICBj
b25zdCBDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFz
UmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV9zZWxlY3Rvckxpc3QuZ2V0KCkgOiBudWxs
cHRyOyB9CisgICAgICAgIGNvbnN0IFZlY3RvcjxBdG9taWNTdHJpbmc+KiBsYW5nQXJndW1lbnRM
aXN0KCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpID8gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9sYW5n
QXJndW1lbnRMaXN0LmdldCgpIDogbnVsbHB0cjsgfQorICAgICAgICBjb25zdCBDU1NTZWxlY3Rv
ckxpc3QqIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSA/IFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+
KG1fZGF0YSktPm1fc2VsZWN0b3JMaXN0LmdldCgpIDogbnVsbHB0cjsgfQogCiAgICAgICAgIHZv
aWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiwgYm9vbCBtYXRjaExvd2VyQ2FzZSA9IGZh
bHNlKTsKICAgICAgICAgCkBAIC0zMTUsMjIgKzMxNywyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaXNMYXN0SW5UYWdIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pc0xh
c3RJblRhZ0hpc3Rvcnk7IH0KICAgICAgICAgdm9pZCBzZXROb3RMYXN0SW5UYWdIaXN0b3J5KCkg
eyBtX2lzTGFzdEluVGFnSGlzdG9yeSA9IGZhbHNlOyB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgICAgIGJvb2wgaXNGb3JQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZvclBhZ2U7IH0K
ICAgICAgICAgdm9pZCBzZXRGb3JQYWdlKCkgeyBtX2lzRm9yUGFnZSA9IHRydWU7IH0KKyNlbmRp
ZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdW5zaWduZWQgbV9yZWxhdGlvbiAgICAgICAgICAg
ICAgOiA0OyAvLyBlbnVtIFJlbGF0aW9uVHlwZS4KLSAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBt
X21hdGNoICAgICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoLgotICAgICAgICBtdXRhYmxlIHVuc2ln
bmVkIG1fcHNldWRvVHlwZSAgICA6IDg7IC8vIFBzZXVkb1R5cGUuCi0gICAgICAgIHVuc2lnbmVk
IG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV9pc0xhc3RJ
blRhZ0hpc3RvcnkgICAgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2hhc1JhcmVEYXRhICAgICAg
ICAgICA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1faGFzTmFtZVdpdGhDYXNlICAgICAgIDogMTsK
LSAgICAgICAgdW5zaWduZWQgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgOiAxOwotICAgICAgICB1
bnNpZ25lZCBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1f
Y2FzZUluc2Vuc2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyA6IDE7CisgICAgICAgIHN0cnVj
dCBSYXJlRGF0YTsKKyAgICAgICAgc3RydWN0IE5hbWVXaXRoQ2FzZTsKKyAgICAgICAgVmFyaWFu
dDxBdG9taWNTdHJpbmcsIFF1YWxpZmllZE5hbWUsIFJlZlB0cjxSYXJlRGF0YT4sIFJlZlB0cjxO
YW1lV2l0aENhc2U+PiBtX2RhdGE7CisKKyAgICAgICAgdW5zaWduZWQgY2hhciBtX3JlbGF0aW9u
ICAgICAgICAgICAgICAgOiAzOyAvLyBlbnVtIFJlbGF0aW9uVHlwZS4KKyAgICAgICAgbXV0YWJs
ZSB1bnNpZ25lZCBjaGFyIG1fbWF0Y2ggICAgICAgICAgOiA0OyAvLyBlbnVtIE1hdGNoLgorICAg
ICAgICB1bnNpZ25lZCBjaGFyIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QgICA6IDE7CisgICAgICAg
IHVuc2lnbmVkIGNoYXIgbV9pc0xhc3RJblRhZ0hpc3RvcnkgICAgIDogMTsKKyAgICAgICAgbXV0
YWJsZSB1bnNpZ25lZCBjaGFyIG1fcHNldWRvVHlwZSAgICAgOiA3OyAvLyBlbnVtIFBzZXVkb0Ns
YXNzVHlwZS4KKyAgICAgICAgdW5zaWduZWQgY2hhciBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSAg
OiAxOworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAgICAgdW5zaWduZWQgY2hhciBtX2lzRm9y
UGFnZSAgICAgICAgICAgICAgOiAxOworI2VuZGlmCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OX0RJU0FCTEVECi0gICAgICAgIHVuc2lnbmVkIG1fZGVzdHJ1Y3Rvckhhc0Jl
ZW5DYWxsZWQgOiAxOworICAgICAgICB1bnNpZ25lZCBjaGFyIG1fZGVzdHJ1Y3Rvckhhc0JlZW5D
YWxsZWQgOiAxOwogI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgc2ltcGxlU2VsZWN0b3JTcGVj
aWZpY2l0eUZvclBhZ2UoKSBjb25zdDsKQEAgLTMzOSw3ICszNDYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIENTU1NlbGVjdG9yJiBvcGVyYXRvcj0oY29uc3QgQ1NTU2VsZWN0b3Im
KTsKIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxSYXJlRGF0
YT4gewotICAgICAgICAgICAgc3RhdGljIFJlZjxSYXJlRGF0YT4gY3JlYXRlKEF0b21pY1N0cmlu
ZyYmIHZhbHVlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJhcmVEYXRhKFdURk1vdmUodmFsdWUp
KSk7IH0KKyAgICAgICAgICAgIFJhcmVEYXRhKEF0b21pY1N0cmluZyYmIHZhbHVlKTsKICAgICAg
ICAgICAgIH5SYXJlRGF0YSgpOwogCiAgICAgICAgICAgICBib29sIG1hdGNoTnRoKGludCBjb3Vu
dCk7CkBAIC0zNTAsMTYgKzM1NywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICBBdG9taWNTdHJpbmcgbV9tYXRjaGluZ1ZhbHVlOwogICAgICAgICAgICAgQXRvbWljU3RyaW5n
IG1fc2VyaWFsaXppbmdWYWx1ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IG1fYTsg
Ly8gVXNlZCBmb3IgOm50aC0qCi0gICAgICAgICAgICBpbnQgbV9iOyAvLyBVc2VkIGZvciA6bnRo
LSoKLSAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGU7IC8vIHVzZWQgZm9yIGF0
dHJpYnV0ZSBzZWxlY3RvcgorICAgICAgICAgICAgaW50IG1fYSB7IDAgfTsgLy8gVXNlZCBmb3Ig
Om50aC0qCisgICAgICAgICAgICBpbnQgbV9iIHsgMCB9OyAvLyBVc2VkIGZvciA6bnRoLSoKKyAg
ICAgICAgICAgIFF1YWxpZmllZE5hbWUgbV9hdHRyaWJ1dGUgeyBhbnlRTmFtZSgpIH07IC8vIHVz
ZWQgZm9yIGF0dHJpYnV0ZSBzZWxlY3RvcgogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXR0
cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lOwotICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJn
dW1lbnQ7IC8vIFVzZWQgZm9yIDpjb250YWlucyBhbmQgOm50aC0qCisgICAgICAgICAgICBBdG9t
aWNTdHJpbmcgbV9hcmd1bWVudCB7IG51bGxBdG9tKCkgfTsgLy8gVXNlZCBmb3IgOmNvbnRhaW5z
IGFuZCA6bnRoLSoKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8QXRvbWljU3Ry
aW5nPj4gbV9sYW5nQXJndW1lbnRMaXN0OyAvLyBVc2VkIGZvciA6bGFuZyBhcmd1bWVudHMuCiAg
ICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTU2VsZWN0b3JMaXN0PiBtX3NlbGVjdG9yTGlz
dDsgLy8gVXNlZCBmb3IgOm1hdGNoZXMoKSBhbmQgOm5vdCgpLgotICAgICAgICAKLSAgICAgICAg
cHJpdmF0ZToKLSAgICAgICAgICAgIFJhcmVEYXRhKEF0b21pY1N0cmluZyYmIHZhbHVlKTsKKyAg
ICAgICAgICAgIGJvb2wgbV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nIHsg
ZmFsc2UgfTsKICAgICAgICAgfTsKICAgICAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YSgpOwogCkBA
IC0zNzQsMjggKzM3OSwyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBjb25z
dCBRdWFsaWZpZWROYW1lIG1fb3JpZ2luYWxOYW1lOwogICAgICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nIG1fbG93ZXJjYXNlTG9jYWxOYW1lOwogICAgICAgICB9OwotCi0gICAgICAgIHVuaW9u
IERhdGFVbmlvbiB7Ci0gICAgICAgICAgICBEYXRhVW5pb24oKSA6IG1fdmFsdWUoMCkgeyB9Ci0g
ICAgICAgICAgICBBdG9taWNTdHJpbmdJbXBsKiBtX3ZhbHVlOwotICAgICAgICAgICAgUXVhbGlm
aWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGwqIG1fdGFnUU5hbWU7Ci0gICAgICAgICAgICBSYXJl
RGF0YSogbV9yYXJlRGF0YTsKLSAgICAgICAgICAgIE5hbWVXaXRoQ2FzZSogbV9uYW1lV2l0aENh
c2U7Ci0gICAgICAgIH0gbV9kYXRhOwogICAgIH07CisjcHJhZ21hIHBhY2socG9wKQogCiBpbmxp
bmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OmF0dHJpYnV0ZSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAgQVNTRVJUKG1faGFzUmFy
ZURhdGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1dGU7CisgICAg
QVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSk7
CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYXR0cmli
dXRlOwogfQogCiBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBDU1NTZWxlY3Rvcjo6YXR0cmli
dXRlQ2Fub25pY2FsTG9jYWxOYW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNBdHRyaWJ1dGVT
ZWxlY3RvcigpKTsKLSAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0dXJuIG1fZGF0
YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZTsKKyAgICBBU1NFUlQo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpKTsKKyAgICBy
ZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRyaWJ1dGVDYW5v
bmljYWxMb2NhbE5hbWU7CiB9CiAKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjptYXRjaGVzUHNl
dWRvRWxlbWVudCgpIGNvbnN0CkBAIC00NTgsMjAgKzQ1NiwxNiBAQCBpbmxpbmUgdm9pZCBDU1NT
ZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgYm9vbCBtYXRjaExv
d2VyQ2FzZQogewogICAgIEFTU0VSVChtYXRjaCgpICE9IFRhZyk7CiAgICAgQXRvbWljU3RyaW5n
IG1hdGNoaW5nVmFsdWUgPSBtYXRjaExvd2VyQ2FzZSA/IHZhbHVlLmNvbnZlcnRUb0FTQ0lJTG93
ZXJjYXNlKCkgOiB2YWx1ZTsKLSAgICBpZiAoIW1faGFzUmFyZURhdGEgJiYgbWF0Y2hpbmdWYWx1
ZSAhPSB2YWx1ZSkKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVE
YXRhPj4obV9kYXRhKSAmJiBtYXRjaGluZ1ZhbHVlICE9IHZhbHVlKQogICAgICAgICBjcmVhdGVS
YXJlRGF0YSgpOwogICAgIAotICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5nIG1hbnVhbGx5
IGZvciB0aGUgdW5pb24uCi0gICAgaWYgKCFtX2hhc1JhcmVEYXRhKSB7Ci0gICAgICAgIGlmICht
X2RhdGEubV92YWx1ZSkKLSAgICAgICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigpOwotICAg
ICAgICBtX2RhdGEubV92YWx1ZSA9IHZhbHVlLmltcGwoKTsKLSAgICAgICAgbV9kYXRhLm1fdmFs
dWUtPnJlZigpOworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpKSB7CisgICAgICAgIG1fZGF0YSA9IHZhbHVlOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbWF0Y2hpbmdWYWx1ZSA9IFdURk1v
dmUobWF0Y2hpbmdWYWx1ZSk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdW
YWx1ZSA9IHZhbHVlOworICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1f
bWF0Y2hpbmdWYWx1ZSA9IFdURk1vdmUobWF0Y2hpbmdWYWx1ZSk7CisgICAgV1RGOjpnZXQ8UmVm
UHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9zZXJpYWxpemluZ1ZhbHVlID0gdmFsdWU7CiB9CiAK
IGlubGluZSBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoKQpAQCAtNDgwLDExICs0NzQsMTAgQEAg
aW5saW5lIENTU1NlbGVjdG9yOjpDU1NTZWxlY3RvcigpCiAgICAgLCBtX3BzZXVkb1R5cGUoMCkK
ICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgLCBtX2lzTGFzdEluVGFn
SGlzdG9yeSh0cnVlKQotICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKLSAgICAsIG1faGFzTmFt
ZVdpdGhDYXNlKGZhbHNlKQotICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCiAgICAgLCBtX3RhZ0lz
Rm9yTmFtZXNwYWNlUnVsZShmYWxzZSkKLSAgICAsIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
VmFsdWVNYXRjaGluZyhmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9y
UGFnZShmYWxzZSkKKyNlbmRpZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tl9ESVNBQkxFRAogICAgICwgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZChmYWxzZSkKICNlbmRp
ZgpAQCAtNDkyLDMzICs0ODUsMjAgQEAgaW5saW5lIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcigp
CiB9CiAKIGlubGluZSBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Im
IG8pCi0gICAgOiBtX3JlbGF0aW9uKG8ubV9yZWxhdGlvbikKKyAgICA6IG1fZGF0YShvLm1fZGF0
YSkKKyAgICAsIG1fcmVsYXRpb24oby5tX3JlbGF0aW9uKQogICAgICwgbV9tYXRjaChvLm1fbWF0
Y2gpCiAgICAgLCBtX3BzZXVkb1R5cGUoby5tX3BzZXVkb1R5cGUpCiAgICAgLCBtX2lzTGFzdElu
U2VsZWN0b3JMaXN0KG8ubV9pc0xhc3RJblNlbGVjdG9yTGlzdCkKICAgICAsIG1faXNMYXN0SW5U
YWdIaXN0b3J5KG8ubV9pc0xhc3RJblRhZ0hpc3RvcnkpCi0gICAgLCBtX2hhc1JhcmVEYXRhKG8u
bV9oYXNSYXJlRGF0YSkKLSAgICAsIG1faGFzTmFtZVdpdGhDYXNlKG8ubV9oYXNOYW1lV2l0aENh
c2UpCi0gICAgLCBtX2lzRm9yUGFnZShvLm1faXNGb3JQYWdlKQogICAgICwgbV90YWdJc0Zvck5h
bWVzcGFjZVJ1bGUoby5tX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZSkKLSAgICAsIG1fY2FzZUluc2Vu
c2l0aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyhvLm1fY2FzZUluc2Vuc2l0aXZlQXR0cmlidXRl
VmFsdWVNYXRjaGluZykKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2lzRm9yUGFnZShv
Lm1faXNGb3JQYWdlKQorI2VuZGlmCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OX0RJU0FCTEVECiAgICAgLCBtX2Rlc3RydWN0b3JIYXNCZWVuQ2FsbGVkKGZhbHNlKQogI2Vu
ZGlmCiB7Ci0gICAgaWYgKG8ubV9oYXNSYXJlRGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJl
RGF0YSA9IG8ubV9kYXRhLm1fcmFyZURhdGE7Ci0gICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5y
ZWYoKTsKLSAgICB9IGVsc2UgaWYgKG8ubV9oYXNOYW1lV2l0aENhc2UpIHsKLSAgICAgICAgbV9k
YXRhLm1fbmFtZVdpdGhDYXNlID0gby5tX2RhdGEubV9uYW1lV2l0aENhc2U7Ci0gICAgICAgIG1f
ZGF0YS5tX25hbWVXaXRoQ2FzZS0+cmVmKCk7Ci0gICAgfSBpZiAoby5tYXRjaCgpID09IFRhZykg
ewotICAgICAgICBtX2RhdGEubV90YWdRTmFtZSA9IG8ubV9kYXRhLm1fdGFnUU5hbWU7Ci0gICAg
ICAgIG1fZGF0YS5tX3RhZ1FOYW1lLT5yZWYoKTsKLSAgICB9IGVsc2UgaWYgKG8ubV9kYXRhLm1f
dmFsdWUpIHsKLSAgICAgICAgbV9kYXRhLm1fdmFsdWUgPSBvLm1fZGF0YS5tX3ZhbHVlOwotICAg
ICAgICBtX2RhdGEubV92YWx1ZS0+cmVmKCk7Ci0gICAgfQogfQogCiBpbmxpbmUgQ1NTU2VsZWN0
b3I6On5DU1NTZWxlY3RvcigpCkBAIC01MjcsNjIgKzUwNyw0NCBAQCBpbmxpbmUgQ1NTU2VsZWN0
b3I6On5DU1NTZWxlY3RvcigpCiAjaWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
X0RJU0FCTEVECiAgICAgbV9kZXN0cnVjdG9ySGFzQmVlbkNhbGxlZCA9IHRydWU7CiAjZW5kaWYK
LSAgICBpZiAobV9oYXNSYXJlRGF0YSkgewotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+ZGVy
ZWYoKTsKLSAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBudWxscHRyOwotICAgICAgICBtX2hh
c1JhcmVEYXRhID0gZmFsc2U7Ci0gICAgfSBlbHNlIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkgewot
ICAgICAgICBtX2RhdGEubV9uYW1lV2l0aENhc2UtPmRlcmVmKCk7Ci0gICAgICAgIG1fZGF0YS5t
X25hbWVXaXRoQ2FzZSA9IG51bGxwdHI7Ci0gICAgICAgIG1faGFzTmFtZVdpdGhDYXNlID0gZmFs
c2U7Ci0gICAgfSBlbHNlIGlmIChtYXRjaCgpID09IFRhZykgewotICAgICAgICBtX2RhdGEubV90
YWdRTmFtZS0+ZGVyZWYoKTsKLSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUgPSBudWxscHRyOwot
ICAgICAgICBtX21hdGNoID0gVW5rbm93bjsKLSAgICB9IGVsc2UgaWYgKG1fZGF0YS5tX3ZhbHVl
KSB7Ci0gICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJlZigpOwotICAgICAgICBtX2RhdGEubV92
YWx1ZSA9IG51bGxwdHI7Ci0gICAgfQogfQogCiBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYg
Q1NTU2VsZWN0b3I6OnRhZ1FOYW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSA9PSBU
YWcpOwotICAgIGlmIChtX2hhc05hbWVXaXRoQ2FzZSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5t
X25hbWVXaXRoQ2FzZS0+bV9vcmlnaW5hbE5hbWU7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9j
YXN0PGNvbnN0IFF1YWxpZmllZE5hbWUqPigmbV9kYXRhLm1fdGFnUU5hbWUpOworICAgIGlmIChX
VEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxOYW1lV2l0aENhc2U+PihtX2RhdGEpKQorICAg
ICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSktPm1fb3Jp
Z2luYWxOYW1lOworICAgIHJldHVybiBXVEY6OmdldDxRdWFsaWZpZWROYW1lPihtX2RhdGEpOwog
fQogCiBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBDU1NTZWxlY3Rvcjo6dGFnTG93ZXJjYXNl
TG9jYWxOYW1lKCkgY29uc3QKIHsKLSAgICBpZiAobV9oYXNOYW1lV2l0aENhc2UpCi0gICAgICAg
IHJldHVybiBtX2RhdGEubV9uYW1lV2l0aENhc2UtPm1fbG93ZXJjYXNlTG9jYWxOYW1lOwotICAg
IHJldHVybiBtX2RhdGEubV90YWdRTmFtZS0+bV9sb2NhbE5hbWU7CisgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+KG1fZGF0YSkpCisgICAgICAgIHJl
dHVybiBXVEY6OmdldDxSZWZQdHI8TmFtZVdpdGhDYXNlPj4obV9kYXRhKS0+bV9sb3dlcmNhc2VM
b2NhbE5hbWU7CisgICAgcmV0dXJuIFdURjo6Z2V0PFF1YWxpZmllZE5hbWU+KG1fZGF0YSkubG9j
YWxOYW1lKCk7CiB9CiAKIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjp2
YWx1ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1hdGNoKCkgIT0gVGFnKTsKLSAgICBpZiAobV9o
YXNSYXJlRGF0YSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX21hdGNoaW5n
VmFsdWU7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4o
bV9kYXRhKSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSktPm1fbWF0Y2hpbmdWYWx1ZTsKIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkganVz
dCBhbiBBdG9taWNTdHJpbmdJbXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAgIHJl
dHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1fdmFs
dWUpOworICAgIHJldHVybiBXVEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAKIGlu
bGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9yOjpzZXJpYWxpemluZ1ZhbHVlKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSAhPSBUYWcpOwotICAgIGlmIChtX2hhc1JhcmVE
YXRhKQotICAgICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VyaWFsaXppbmdWYWx1
ZTsKKyAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2Rh
dGEpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+
bV9zZXJpYWxpemluZ1ZhbHVlOwogICAgIAotICAgIC8vIEF0b21pY1N0cmluZyBpcyByZWFsbHkg
anVzdCBhbiBBdG9taWNTdHJpbmdJbXBsKiBzbyB0aGUgY2FzdCBiZWxvdyBpcyBzYWZlLgotICAg
IHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBBdG9taWNTdHJpbmcqPigmbV9kYXRhLm1f
dmFsdWUpOworICAgIHJldHVybiBXVEY6OmdldDxBdG9taWNTdHJpbmc+KG1fZGF0YSk7CiB9CiAg
ICAgCiBpbmxpbmUgYm9vbCBDU1NTZWxlY3Rvcjo6YXR0cmlidXRlVmFsdWVNYXRjaGluZ0lzQ2Fz
ZUluc2Vuc2l0aXZlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9jYXNlSW5zZW5zaXRpdmVBdHRy
aWJ1dGVWYWx1ZU1hdGNoaW5nOworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkgJiYgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9k
YXRhKS0+bV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1BhcnNlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcAppbmRleCBhOGVjZmU3MGYxZTYwMTViMmNhNTVmMDUxODEzY2ZjMDM2ZmI5Mjg3Li4x
ZjI0YjRiNzQ3NGJhMDllZjhmY2U5YjU2NThmNTA1M2FmODlmMGY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKQEAgLTI5NCw3ICsyOTQsOSBAQCBDU1NT
ZWxlY3Rvckxpc3QgQ1NTUGFyc2VySW1wbDo6cGFyc2VQYWdlU2VsZWN0b3IoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSByYW5nZSwgU3R5bAogICAgICAgICAgICAgc2VsZWN0b3ItPnByZXBlbmRUYWdTZWxl
Y3RvcihRdWFsaWZpZWROYW1lKG51bGxBdG9tKCksIHR5cGVTZWxlY3Rvciwgc3R5bGVTaGVldC0+
ZGVmYXVsdE5hbWVzcGFjZSgpKSk7CiAgICAgfQogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
IHNlbGVjdG9yLT5zZXRGb3JQYWdlKCk7CisjZW5kaWYKICAgICByZXR1cm4geyBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj46OmZyb20oV1RGTW92ZShzZWxlY3Rvcikp
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3Iu
aAppbmRleCA0OThiZWEwNjIyZmMzZWZiMjY2MzgxNGJmM2I1OTQxODYwMGYxYTBiLi41NTNhZDg4
MzZkMTI1OTI3YjhjOGY1MjdmMTg5YjI1ODY3M2Y5MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rvci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE50aChpbnQgYSwgaW50IGIpIHsgbV9zZWxlY3Rvci0+c2V0TnRoKGEsIGIp
OyB9CiAgICAgdm9pZCBzZXRNYXRjaChDU1NTZWxlY3Rvcjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxl
Y3Rvci0+c2V0TWF0Y2godmFsdWUpOyB9CiAgICAgdm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rv
cjo6UmVsYXRpb25UeXBlIHZhbHVlKSB7IG1fc2VsZWN0b3ItPnNldFJlbGF0aW9uKHZhbHVlKTsg
fQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0
b3ItPnNldEZvclBhZ2UoKTsgfQorI2VuZGlmCiAKICAgICBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0
Y2goKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdG9yLT5tYXRjaCgpOyB9CiAgICAgQ1NTU2VsZWN0
b3I6OlBzZXVkb0VsZW1lbnRUeXBlIHBzZXVkb0VsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9zZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5cGUoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>349620</attachid>
            <date>2018-09-12 20:47:39 -0700</date>
            <delta_ts>2018-09-13 10:02:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188559-20180913124738.patch</filename>
            <type>text/plain</type>
            <size>22523</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1OTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDYwNWFhN2RjZTM1NzczYmFmNTc1YzMx
NGY3ZjFkY2NkOTg2YjlkN2IuLmUwMWI2ODU1YTMxYjMxOTUwNDAwNDkyYzUxNDg5NGQ3MDZlYzBi
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDktMTIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgYSBWYXJpYW50IGluc3RlYWQg
b2YgYSB1bmlvbiBpbiBDU1NTZWxlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29p
dmlzdG8uCisKKyAgICAgICAgKiB3dGYvVmFyaWFudC5oOgorICAgICAgICBBZGQgcGFja2luZyBt
YWNyb3MgdG8gbWFrZSBpdCBzbyBWYXJpYW50LWNvbnRhaW5pbmcgc3RydWN0dXJlcyBkb24ndCBh
bHdheXMgaGF2ZSA3IGJ5dGVzIG9mIHBhZGRpbmcgcGVyIFZhcmlhbnQuCisKIDIwMTgtMDktMTIg
IEd1aWxsYXVtZSBFbW9udCAgPGd1aWplbW9udEBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBJ
R05PUkVfV0FSTklOR18uKiBtYWNyb3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDI0ZjZiNzNmMzcxYWIzM2Ri
Nzg2YzcxMTExYzZhNDdhNzc0ZjQwLi43ZmE4OWJjYjE1Njg1YzU0YzZhMjlkYzBhZGQzYTJlOWZj
NTc3YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTgtMDktMTIgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgYSBWYXJp
YW50IGluc3RlYWQgb2YgYSB1bmlvbiBpbiBDU1NTZWxlY3RvcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4NTU5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLiBUaGlz
IGp1c3QgbWFrZXMgc29tZSBvZiB0aGUgZXhpc3RpbmcgcHJvYmxlbXMgbW9yZSBvYnZpb3VzIGFu
ZCBlYXN5IHRvIGZpeC4KKworICAgICAgICBJIG1vdmVkIG1fY2FzZUluc2Vuc2l0aXZlQXR0cmli
dXRlVmFsdWVNYXRjaGluZyB0byBSYXJlRGF0YSBiZWNhdXNlIGl0J3Mgb25seSB1c2VkIHdpdGgg
UmFyZURhdGEuCisgICAgICAgIEkgb25seSBoYXZlIG1faXNGb3JQYWdlIHdoZW4gYXNzZXJ0aW9u
cyBhcmUgZW5hYmxlZCBiZWNhdXNlIGl0J3Mgb25seSB1c2VkIGZvciBhbiBhc3NlcnRpb24uCisg
ICAgICAgIFRoZSByZXN0IGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQgdHJhbnNsYXRpbmcgdW5p
b24gc3ludGF4IHRvIFZhcmlhbnQgc3ludGF4LgorICAgICAgICBJIHVzZSBSZWZQdHIgZm9yIG5v
dyB3aGVyZSBJIGNvdWxkIHVzZSBSZWYgYmVjYXVzZSBpdCdzIG5ldmVyIG51bGwgdG8gbWFrZSBj
b3B5aW5nIGVhc2llciwgYnV0IHRoYXQncyB0ZW1wb3JhcnkuCisKKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpjcmVhdGVSYXJlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjpzZXRBcmd1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxl
Y3Rvcjo6c2V0TGFuZ0FyZ3VtZW50TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rv
cjo6c2V0U2VsZWN0b3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRO
dGgpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6Om1hdGNoTnRoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpudGhBIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjpudGhCIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVj
dG9yOjpSYXJlRGF0YTo6UmFyZURhdGEpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmFyZ3VtZW50IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpsYW5nQXJndW1lbnRMaXN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3Rvckxpc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6YXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6Q1NTU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6On5D
U1NTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6dGFnUU5hbWUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnRhZ0xvd2VyY2FzZUxvY2FsTmFt
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6dmFsdWUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlcmlhbGl6aW5nVmFsdWUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmdJc0Nh
c2VJbnNlbnNpdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6UmFy
ZURhdGE6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OnBhcnNlUGFnZVNlbGVj
dG9yKToKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclNlbGVjdG9yLmg6CisKIDIwMTgt
MDktMTEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zaGFkb3ctZG9tL2Zvcm0tY29udHJvbC1mb3JtLWF0
dHJpYnV0ZS5odG1sIGhpdHMgYXNzZXJ0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9W
YXJpYW50LmggYi9Tb3VyY2UvV1RGL3d0Zi9WYXJpYW50LmgKaW5kZXggZjY0MDVhYTE4OGQxZWFm
NjBjMWU1NTRmYjViMmZlMDljOTM2ODA5Yi4uMzVmYWJkYjZhOGZjMDBlNWZmMjNjZWQ3NmYwNWFi
NTUzN2I1NDMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVmFyaWFudC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1ZhcmlhbnQuaApAQCAtMTQzNSw2ICsxNDM1LDcgQEAgc3RydWN0IF9fbm9l
eGNlcHRfdmFyaWFudF9zd2FwOgogX19ub2V4Y2VwdF92YXJpYW50X3N3YXBfaW1wbDxfX2FsbF9z
d2FwcGFibGU8X1R5cGVzLi4uPjo6dmFsdWUsX1R5cGVzLi4uPgoge307CiAKKyNwcmFnbWEgcGFj
ayhwdXNoLCAxKQogdGVtcGxhdGU8dHlwZW5hbWUgLi4uIF9UeXBlcz4KIGNsYXNzIFZhcmlhbnQ6
CiAgICAgICAgIHByaXZhdGUgX192YXJpYW50X2Jhc2U8CkBAIC0xNzIxLDYgKzE3MjIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KICAgICB9CiB9OworI3ByYWdtYSBwYWNrKHBvcCkKIAogdGVtcGxh
dGU8PgogY2xhc3MgVmFyaWFudDw+ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXgg
YjM0NzczNTcxMmVhMjZiODBhODBmYmMyM2FhY2JkOThmNzg3OTg5MS4uZTU0NzIwMDNmZWRlMzAw
YTJmZDRhMzFiMDc2NDNlM2E5OTllODJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CkBAIC00MCwyNSArNDAsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1zdHJ1Y3QgU2FtZVNpemVBc0NTU1NlbGVjdG9yIHsKLSAgICB1bnNp
Z25lZCBmbGFnczsKLSAgICB2b2lkKiB1bmlvblBvaW50ZXI7Ci19OwotCiBzdGF0aWNfYXNzZXJ0
KENTU1NlbGVjdG9yOjpSZWxhdGlvblR5cGU6OlN1YnNlbGVjdG9yID09IDAsICJTdWJzZWxlY3Rv
ciBtdXN0IGJlIDAgZm9yIGNvbnN1bWVDb21iaW5hdG9yLiIpOwotc3RhdGljX2Fzc2VydChzaXpl
b2YoQ1NTU2VsZWN0b3IpID09IHNpemVvZihTYW1lU2l6ZUFzQ1NTU2VsZWN0b3IpLCAiQ1NTU2Vs
ZWN0b3Igc2hvdWxkIHJlbWFpbiBzbWFsbC4iKTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKENTU1Nl
bGVjdG9yKSA9PSBzaXplb2Yodm9pZCopICsgc2l6ZW9mKHVuc2lnbmVkKSwgIkNTU1NlbGVjdG9y
IHNob3VsZCByZW1haW4gc21hbGwuIik7CiAKIENTU1NlbGVjdG9yOjpDU1NTZWxlY3Rvcihjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSwgYm9vbCB0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCiAg
ICAgOiBtX3JlbGF0aW9uKERlc2NlbmRhbnRTcGFjZSkKICAgICAsIG1fbWF0Y2goVGFnKQotICAg
ICwgbV9wc2V1ZG9UeXBlKDApCiAgICAgLCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0KGZhbHNlKQog
ICAgICwgbV9pc0xhc3RJblRhZ0hpc3RvcnkodHJ1ZSkKLSAgICAsIG1faGFzUmFyZURhdGEoZmFs
c2UpCi0gICAgLCBtX2hhc05hbWVXaXRoQ2FzZShmYWxzZSkKLSAgICAsIG1faXNGb3JQYWdlKGZh
bHNlKQorICAgICwgbV9wc2V1ZG9UeXBlKDApCiAgICAgLCBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVs
ZSh0YWdJc0Zvck5hbWVzcGFjZVJ1bGUpCi0gICAgLCBtX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0
ZVZhbHVlTWF0Y2hpbmcoZmFsc2UpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICwgbV9pc0Zv
clBhZ2UoZmFsc2UpCisjZW5kaWYKICNpZiAhQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJ
T05fRElTQUJMRUQKICAgICAsIG1fZGVzdHJ1Y3Rvckhhc0JlZW5DYWxsZWQoZmFsc2UpCiAjZW5k
aWYKQEAgLTY2LDI1ICs2MCwyMSBAQCBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnUU5hbWUsIGJvb2wgdGFnSXNGb3JOYW1lc3BhY2VSdQogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgdGFnTG9jYWxOYW1lID0gdGFnUU5hbWUubG9jYWxOYW1lKCk7CiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nIHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJjYXNlID0gdGFnTG9jYWxO
YW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAKLSAgICBpZiAodGFnTG9jYWxOYW1lID09
IHRhZ0xvY2FsTmFtZUFTQ0lJTG93ZXJjYXNlKSB7Ci0gICAgICAgIG1fZGF0YS5tX3RhZ1FOYW1l
ID0gdGFnUU5hbWUuaW1wbCgpOwotICAgICAgICBtX2RhdGEubV90YWdRTmFtZS0+cmVmKCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgbV9kYXRhLm1fbmFtZVdpdGhDYXNlID0gYWRvcHRSZWYobmV3
IE5hbWVXaXRoQ2FzZSh0YWdRTmFtZSwgdGFnTG9jYWxOYW1lQVNDSUlMb3dlcmNhc2UpKS5sZWFr
UmVmKCk7Ci0gICAgICAgIG1faGFzTmFtZVdpdGhDYXNlID0gdHJ1ZTsKLSAgICB9CisgICAgaWYg
KHRhZ0xvY2FsTmFtZSA9PSB0YWdMb2NhbE5hbWVBU0NJSUxvd2VyY2FzZSkKKyAgICAgICAgbV9k
YXRhID0gdGFnUU5hbWU7CisgICAgZWxzZQorICAgICAgICBtX2RhdGEgPSBhZG9wdFJlZihuZXcg
TmFtZVdpdGhDYXNlKHRhZ1FOYW1lLCB0YWdMb2NhbE5hbWVBU0NJSUxvd2VyY2FzZSkpOwogfQog
CiB2b2lkIENTU1NlbGVjdG9yOjpjcmVhdGVSYXJlRGF0YSgpCiB7CiAgICAgQVNTRVJUKG1hdGNo
KCkgIT0gVGFnKTsKLSAgICBBU1NFUlQoIW1faGFzTmFtZVdpdGhDYXNlKTsKLSAgICBpZiAobV9o
YXNSYXJlRGF0YSkKKyAgICBBU1NFUlQoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPE5h
bWVXaXRoQ2FzZT4+KG1fZGF0YSkpOworICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJl
ZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBNb3ZlIHRo
ZSB2YWx1ZSB0byB0aGUgcmFyZSBkYXRhIHN0dWN0dXJlLgotICAgIEF0b21pY1N0cmluZyB2YWx1
ZSB7IGFkb3B0UmVmKG1fZGF0YS5tX3ZhbHVlKSB9OwotICAgIG1fZGF0YS5tX3JhcmVEYXRhID0g
JlJhcmVEYXRhOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpLmxlYWtSZWYoKTsKLSAgICBtX2hhc1Jh
cmVEYXRhID0gdHJ1ZTsKKyAgICBBdG9taWNTdHJpbmcgdmFsdWUgPSBXVEY6OmdldDxBdG9taWNT
dHJpbmc+KG1fZGF0YSk7CisgICAgbV9kYXRhID0gYWRvcHRSZWYobmV3IFJhcmVEYXRhKFdURk1v
dmUodmFsdWUpKSk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBzaW1wbGVTZWxlY3RvclNwZWNpZmlj
aXR5SW50ZXJuYWwoY29uc3QgQ1NTU2VsZWN0b3ImIHNpbXBsZVNlbGVjdG9yLCBib29sIGlzQ29t
cHV0aW5nTWF4aW11bVNwZWNpZmljaXR5KTsKQEAgLTc0OSw2MSArNzM5LDU0IEBAIFN0cmluZyBD
U1NTZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgcmlnaHRTaWRlKSBjb25zdAog
dm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVl
LCBib29sIGNvbnZlcnRUb0xvd2VyY2FzZSwgQXR0cmlidXRlTWF0Y2hUeXBlIG1hdGNoVHlwZSkK
IHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJp
YnV0ZSA9IHZhbHVlOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZUNhbm9uaWNh
bExvY2FsTmFtZSA9IGNvbnZlcnRUb0xvd2VyY2FzZSA/IHZhbHVlLmxvY2FsTmFtZSgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCkgOiB2YWx1ZS5sb2NhbE5hbWUoKTsKLSAgICBtX2Nhc2VJbnNl
bnNpdGl2ZUF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmcgPSBtYXRjaFR5cGUgPT0gQ2FzZUluc2Vuc2l0
aXZlOworICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fYXR0cmlidXRl
ID0gdmFsdWU7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRy
aWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUgPSBjb252ZXJ0VG9Mb3dlcmNhc2UgPyB2YWx1ZS5sb2Nh
bE5hbWUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpIDogdmFsdWUubG9jYWxOYW1lKCk7Cisg
ICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9jYXNlSW5zZW5zaXRpdmVB
dHRyaWJ1dGVWYWx1ZU1hdGNoaW5nID0gbWF0Y2hUeXBlID09IENhc2VJbnNlbnNpdGl2ZTsKIH0K
ICAgICAKIHZvaWQgQ1NTU2VsZWN0b3I6OnNldEFyZ3VtZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsKLSAgICBtX2RhdGEubV9yYXJlRGF0YS0+
bV9hcmd1bWVudCA9IHZhbHVlOworICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSktPm1fYXJndW1lbnQgPSB2YWx1ZTsKIH0KIAogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0TGFuZ0Fy
Z3VtZW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21pY1N0cmluZz4+IGFyZ3VtZW50
TGlzdCkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5t
X2xhbmdBcmd1bWVudExpc3QgPSBXVEZNb3ZlKGFyZ3VtZW50TGlzdCk7CisgICAgV1RGOjpnZXQ8
UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9sYW5nQXJndW1lbnRMaXN0ID0gV1RGTW92ZShh
cmd1bWVudExpc3QpOwogfQogCiB2b2lkIENTU1NlbGVjdG9yOjpzZXRTZWxlY3Rvckxpc3Qoc3Rk
Ojp1bmlxdWVfcHRyPENTU1NlbGVjdG9yTGlzdD4gc2VsZWN0b3JMaXN0KQogewogICAgIGNyZWF0
ZVJhcmVEYXRhKCk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2VsZWN0b3JMaXN0ID0gV1RG
TW92ZShzZWxlY3Rvckxpc3QpOworICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0
YSktPm1fc2VsZWN0b3JMaXN0ID0gV1RGTW92ZShzZWxlY3Rvckxpc3QpOwogfQogCiB2b2lkIENT
U1NlbGVjdG9yOjpzZXROdGgoaW50IGEsIGludCBiKQogewogICAgIGNyZWF0ZVJhcmVEYXRhKCk7
Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fYSA9IGE7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEt
Pm1fYiA9IGI7CisgICAgV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hID0g
YTsKKyAgICBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2IgPSBiOwogfQog
CiBib29sIENTU1NlbGVjdG9yOjptYXRjaE50aChpbnQgY291bnQpIGNvbnN0CiB7Ci0gICAgQVNT
RVJUKG1faGFzUmFyZURhdGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bWF0Y2hO
dGgoY291bnQpOworICAgIHJldHVybiBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEp
LT5tYXRjaE50aChjb3VudCk7CiB9CiAKIGludCBDU1NTZWxlY3Rvcjo6bnRoQSgpIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKG1faGFzUmFyZURhdGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0
YS0+bV9hOworICAgIHJldHVybiBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5t
X2E7CiB9CiAKIGludCBDU1NTZWxlY3Rvcjo6bnRoQigpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
aGFzUmFyZURhdGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9iOworICAgIHJl
dHVybiBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX2I7CiB9CiAKIENTU1Nl
bGVjdG9yOjpSYXJlRGF0YTo6UmFyZURhdGEoQXRvbWljU3RyaW5nJiYgdmFsdWUpCiAgICAgOiBt
X21hdGNoaW5nVmFsdWUodmFsdWUpCiAgICAgLCBtX3NlcmlhbGl6aW5nVmFsdWUodmFsdWUpCi0g
ICAgLCBtX2EoMCkKLSAgICAsIG1fYigwKQotICAgICwgbV9hdHRyaWJ1dGUoYW55UU5hbWUoKSkK
LSAgICAsIG1fYXJndW1lbnQobnVsbEF0b20oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaAppbmRleCAwZWM1ODcwYWNlNGFiN2JiYzk3ZWQ5ZjViZmJiYjZjMjUzNjM2MDA5Li4yZDQ0
NDEwMzkzZDBmZDcxZWY3MjNmNDMzODdkNDYwNWRhYTdkYjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgog
I2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKQEAg
LTIzNCwxMCArMjM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzZXJpYWxpemluZ1ZhbHVlKCkgY29uc3Q7CiAgICAgICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZSgpIGNvbnN0OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpIGNvbnN0OwotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YSA/IG1fZGF0
YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50IDogbnVsbEF0b20oKTsgfQorICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1cm4gV1RGOjpob2xkc19hbHRlcm5h
dGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpID8gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRh
Pj4obV9kYXRhKS0+bV9hcmd1bWVudCA6IG51bGxBdG9tKCk7IH0KICAgICAgICAgYm9vbCBhdHRy
aWJ1dGVWYWx1ZU1hdGNoaW5nSXNDYXNlSW5zZW5zaXRpdmUoKSBjb25zdDsKLSAgICAgICAgY29u
c3QgVmVjdG9yPEF0b21pY1N0cmluZz4qIGxhbmdBcmd1bWVudExpc3QoKSBjb25zdCB7IHJldHVy
biBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEtPm1fbGFuZ0FyZ3VtZW50TGlzdC5n
ZXQoKSA6IG51bGxwdHI7IH0KLSAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rv
ckxpc3QoKSBjb25zdCB7IHJldHVybiBtX2hhc1JhcmVEYXRhID8gbV9kYXRhLm1fcmFyZURhdGEt
Pm1fc2VsZWN0b3JMaXN0LmdldCgpIDogbnVsbHB0cjsgfQorICAgICAgICBjb25zdCBWZWN0b3I8
QXRvbWljU3RyaW5nPiogbGFuZ0FyZ3VtZW50TGlzdCgpIGNvbnN0IHsgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSA/IFdURjo6Z2V0PFJlZlB0
cjxSYXJlRGF0YT4+KG1fZGF0YSktPm1fbGFuZ0FyZ3VtZW50TGlzdC5nZXQoKSA6IG51bGxwdHI7
IH0KKyAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QoKSBjb25zdCB7
IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkg
PyBXVEY6OmdldDxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEpLT5tX3NlbGVjdG9yTGlzdC5nZXQo
KSA6IG51bGxwdHI7IH0KIAogICAgICAgICB2b2lkIHNldFZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIGJvb2wgbWF0Y2hMb3dlckNhc2UgPSBmYWxzZSk7CiAgICAgICAgIApAQCAtMzE0LDIyICsz
MTUsMjcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTGFzdEluVGFnSGlz
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXN0SW5UYWdIaXN0b3J5OyB9CiAgICAgICAgIHZv
aWQgc2V0Tm90TGFzdEluVGFnSGlzdG9yeSgpIHsgbV9pc0xhc3RJblRhZ0hpc3RvcnkgPSBmYWxz
ZTsgfQogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICBib29sIGlzRm9yUGFnZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNGb3JQYWdlOyB9CiAgICAgICAgIHZvaWQgc2V0Rm9yUGFnZSgpIHsg
bV9pc0ZvclBhZ2UgPSB0cnVlOyB9CisjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHVu
c2lnbmVkIG1fcmVsYXRpb24gICAgICAgICAgICAgIDogNDsgLy8gZW51bSBSZWxhdGlvblR5cGUu
Ci0gICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9tYXRjaCAgICAgICAgIDogNDsgLy8gZW51bSBN
YXRjaC4KLSAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3BzZXVkb1R5cGUgICAgOiA4OyAvLyBQ
c2V1ZG9UeXBlLgotICAgICAgICB1bnNpZ25lZCBtX2lzTGFzdEluU2VsZWN0b3JMaXN0ICA6IDE7
Ci0gICAgICAgIHVuc2lnbmVkIG1faXNMYXN0SW5UYWdIaXN0b3J5ICAgIDogMTsKLSAgICAgICAg
dW5zaWduZWQgbV9oYXNSYXJlRGF0YSAgICAgICAgICAgOiAxOwotICAgICAgICB1bnNpZ25lZCBt
X2hhc05hbWVXaXRoQ2FzZSAgICAgICA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIG1faXNGb3JQYWdl
ICAgICAgICAgICAgIDogMTsKLSAgICAgICAgdW5zaWduZWQgbV90YWdJc0Zvck5hbWVzcGFjZVJ1
bGUgOiAxOwotICAgICAgICB1bnNpZ25lZCBtX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVZhbHVl
TWF0Y2hpbmcgOiAxOworICAgICAgICBzdHJ1Y3QgUmFyZURhdGE7CisgICAgICAgIHN0cnVjdCBO
YW1lV2l0aENhc2U7CisgICAgICAgIFZhcmlhbnQ8QXRvbWljU3RyaW5nLCBRdWFsaWZpZWROYW1l
LCBSZWZQdHI8UmFyZURhdGE+LCBSZWZQdHI8TmFtZVdpdGhDYXNlPj4gbV9kYXRhOworCisgICAg
ICAgIHVuc2lnbmVkIGNoYXIgbV9yZWxhdGlvbiAgICAgICAgICAgICAgIDogMzsgLy8gZW51bSBS
ZWxhdGlvblR5cGUuCisgICAgICAgIG11dGFibGUgdW5zaWduZWQgY2hhciBtX21hdGNoICAgICAg
ICAgIDogNDsgLy8gZW51bSBNYXRjaC4KKyAgICAgICAgdW5zaWduZWQgY2hhciBtX2lzTGFzdElu
U2VsZWN0b3JMaXN0ICAgOiAxOworICAgICAgICB1bnNpZ25lZCBjaGFyIG1faXNMYXN0SW5UYWdI
aXN0b3J5ICAgICA6IDE7CisgICAgICAgIG11dGFibGUgdW5zaWduZWQgY2hhciBtX3BzZXVkb1R5
cGUgICAgIDogNzsgLy8gZW51bSBQc2V1ZG9DbGFzc1R5cGUuCisgICAgICAgIHVuc2lnbmVkIGNo
YXIgbV90YWdJc0Zvck5hbWVzcGFjZVJ1bGUgIDogMTsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgICAgIHVuc2lnbmVkIGNoYXIgbV9pc0ZvclBhZ2UgICAgICAgICAgICAgIDogMTsKKyNlbmRp
ZgogI2lmICFBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTl9ESVNBQkxFRAotICAgICAg
ICB1bnNpZ25lZCBtX2Rlc3RydWN0b3JIYXNCZWVuQ2FsbGVkIDogMTsKKyAgICAgICAgdW5zaWdu
ZWQgY2hhciBtX2Rlc3RydWN0b3JIYXNCZWVuQ2FsbGVkIDogMTsKICNlbmRpZgogCiAgICAgICAg
IHVuc2lnbmVkIHNpbXBsZVNlbGVjdG9yU3BlY2lmaWNpdHlGb3JQYWdlKCkgY29uc3Q7CkBAIC0z
MzgsNyArMzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDU1NTZWxlY3RvciYg
b3BlcmF0b3I9KGNvbnN0IENTU1NlbGVjdG9yJik7CiAKICAgICAgICAgc3RydWN0IFJhcmVEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8UmFyZURhdGE+IHsKLSAgICAgICAgICAgIHN0YXRpYyBSZWY8
UmFyZURhdGE+IGNyZWF0ZShBdG9taWNTdHJpbmcmJiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSYXJlRGF0YShXVEZNb3ZlKHZhbHVlKSkpOyB9CisgICAgICAgICAgICBSYXJlRGF0YShB
dG9taWNTdHJpbmcmJiB2YWx1ZSk7CiAgICAgICAgICAgICB+UmFyZURhdGEoKTsKIAogICAgICAg
ICAgICAgYm9vbCBtYXRjaE50aChpbnQgY291bnQpOwpAQCAtMzQ5LDE2ICszNTUsMTQgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fbWF0Y2hpbmdWYWx1
ZTsKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBtX3NlcmlhbGl6aW5nVmFsdWU7CiAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGludCBtX2E7IC8vIFVzZWQgZm9yIDpudGgtKgotICAgICAgICAg
ICAgaW50IG1fYjsgLy8gVXNlZCBmb3IgOm50aC0qCi0gICAgICAgICAgICBRdWFsaWZpZWROYW1l
IG1fYXR0cmlidXRlOyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKKyAgICAgICAgICAg
IGludCBtX2EgeyAwIH07IC8vIFVzZWQgZm9yIDpudGgtKgorICAgICAgICAgICAgaW50IG1fYiB7
IDAgfTsgLy8gVXNlZCBmb3IgOm50aC0qCisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIG1fYXR0
cmlidXRlIHsgYW55UU5hbWUoKSB9OyAvLyB1c2VkIGZvciBhdHRyaWJ1dGUgc2VsZWN0b3IKICAg
ICAgICAgICAgIEF0b21pY1N0cmluZyBtX2F0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZTsKLSAg
ICAgICAgICAgIEF0b21pY1N0cmluZyBtX2FyZ3VtZW50OyAvLyBVc2VkIGZvciA6Y29udGFpbnMg
YW5kIDpudGgtKgorICAgICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXJndW1lbnQgeyBudWxsQXRv
bSgpIH07IC8vIFVzZWQgZm9yIDpjb250YWlucyBhbmQgOm50aC0qCiAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmVjdG9yPEF0b21pY1N0cmluZz4+IG1fbGFuZ0FyZ3VtZW50TGlzdDsgLy8g
VXNlZCBmb3IgOmxhbmcgYXJndW1lbnRzLgogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENT
U1NlbGVjdG9yTGlzdD4gbV9zZWxlY3Rvckxpc3Q7IC8vIFVzZWQgZm9yIDptYXRjaGVzKCkgYW5k
IDpub3QoKS4KLSAgICAgICAgCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBSYXJlRGF0
YShBdG9taWNTdHJpbmcmJiB2YWx1ZSk7CisgICAgICAgICAgICBib29sIG1fY2FzZUluc2Vuc2l0
aXZlQXR0cmlidXRlVmFsdWVNYXRjaGluZyB7IGZhbHNlIH07CiAgICAgICAgIH07CiAgICAgICAg
IHZvaWQgY3JlYXRlUmFyZURhdGEoKTsKIApAQCAtMzczLDI4ICszNzcsMjAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSBtX29yaWdpbmFsTmFt
ZTsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyBtX2xvd2VyY2FzZUxvY2FsTmFtZTsK
ICAgICAgICAgfTsKLQotICAgICAgICB1bmlvbiBEYXRhVW5pb24gewotICAgICAgICAgICAgRGF0
YVVuaW9uKCkgOiBtX3ZhbHVlKDApIHsgfQotICAgICAgICAgICAgQXRvbWljU3RyaW5nSW1wbCog
bV92YWx1ZTsKLSAgICAgICAgICAgIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsKiBt
X3RhZ1FOYW1lOwotICAgICAgICAgICAgUmFyZURhdGEqIG1fcmFyZURhdGE7Ci0gICAgICAgICAg
ICBOYW1lV2l0aENhc2UqIG1fbmFtZVdpdGhDYXNlOwotICAgICAgICB9IG1fZGF0YTsKICAgICB9
OwogCiBpbmxpbmUgY29uc3QgUXVhbGlmaWVkTmFtZSYgQ1NTU2VsZWN0b3I6OmF0dHJpYnV0ZSgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQXR0cmlidXRlU2VsZWN0b3IoKSk7Ci0gICAgQVNTRVJU
KG1faGFzUmFyZURhdGEpOwotICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9hdHRyaWJ1
dGU7CisgICAgQVNTRVJUKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4o
bV9kYXRhKSk7CisgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1fZGF0YSkt
Pm1fYXR0cmlidXRlOwogfQogCiBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBDU1NTZWxlY3Rv
cjo6YXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNB
dHRyaWJ1dGVTZWxlY3RvcigpKTsKLSAgICBBU1NFUlQobV9oYXNSYXJlRGF0YSk7Ci0gICAgcmV0
dXJuIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZTsKKyAg
ICBBU1NFUlQoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8UmFyZURhdGE+PihtX2RhdGEp
KTsKKyAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9hdHRy
aWJ1dGVDYW5vbmljYWxMb2NhbE5hbWU7CiB9CiAKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjpt
YXRjaGVzUHNldWRvRWxlbWVudCgpIGNvbnN0CkBAIC00NTYsMzMgKzQ1MiwyOCBAQCBpbmxpbmUg
dm9pZCBDU1NTZWxlY3Rvcjo6c2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgYm9v
bCBtYXRjaExvd2VyQ2FzZQogewogICAgIEFTU0VSVChtYXRjaCgpICE9IFRhZyk7CiAgICAgQXRv
bWljU3RyaW5nIG1hdGNoaW5nVmFsdWUgPSBtYXRjaExvd2VyQ2FzZSA/IHZhbHVlLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCkgOiB2YWx1ZTsKLSAgICBpZiAoIW1faGFzUmFyZURhdGEgJiYgbWF0
Y2hpbmdWYWx1ZSAhPSB2YWx1ZSkKKyAgICBpZiAoIVdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVm
UHRyPFJhcmVEYXRhPj4obV9kYXRhKSAmJiBtYXRjaGluZ1ZhbHVlICE9IHZhbHVlKQogICAgICAg
ICBjcmVhdGVSYXJlRGF0YSgpOwogICAgIAotICAgIC8vIE5lZWQgdG8gZG8gcmVmIGNvdW50aW5n
IG1hbnVhbGx5IGZvciB0aGUgdW5pb24uCi0gICAgaWYgKCFtX2hhc1JhcmVEYXRhKSB7Ci0gICAg
ICAgIGlmIChtX2RhdGEubV92YWx1ZSkKLSAgICAgICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5kZXJl
ZigpOwotICAgICAgICBtX2RhdGEubV92YWx1ZSA9IHZhbHVlLmltcGwoKTsKLSAgICAgICAgbV9k
YXRhLm1fdmFsdWUtPnJlZigpOworICAgIGlmICghV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQ
dHI8UmFyZURhdGE+PihtX2RhdGEpKSB7CisgICAgICAgIG1fZGF0YSA9IHZhbHVlOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbWF0Y2hpbmdWYWx1
ZSA9IFdURk1vdmUobWF0Y2hpbmdWYWx1ZSk7Ci0gICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fc2Vy
aWFsaXppbmdWYWx1ZSA9IHZhbHVlOworICAgIFdURjo6Z2V0PFJlZlB0cjxSYXJlRGF0YT4+KG1f
ZGF0YSktPm1fbWF0Y2hpbmdWYWx1ZSA9IFdURk1vdmUobWF0Y2hpbmdWYWx1ZSk7CisgICAgV1RG
OjpnZXQ8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKS0+bV9zZXJpYWxpemluZ1ZhbHVlID0gdmFs
dWU7CiB9CiAKIGlubGluZSBDU1NTZWxlY3Rvcjo6Q1NTU2VsZWN0b3IoKQogICAgIDogbV9yZWxh
dGlvbihEZXNjZW5kYW50U3BhY2UpCiAgICAgLCBtX21hdGNoKFVua25vd24pCi0gICAgLCBtX3Bz
ZXVkb1R5cGUoMCkKICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3QoZmFsc2UpCiAgICAgLCBt
X2lzTGFzdEluVGFnSGlzdG9yeSh0cnVlKQotICAgICwgbV9oYXNSYXJlRGF0YShmYWxzZSkKLSAg
ICAsIG1faGFzTmFtZVdpdGhDYXNlKGZhbHNlKQotICAgICwgbV9pc0ZvclBhZ2UoZmFsc2UpCisg
ICAgLCBtX3BzZXVkb1R5cGUoMCkKICAgICAsIG1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlKGZhbHNl
KQotICAgICwgbV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nKGZhbHNlKQor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAsIG1faXNGb3JQYWdlKGZhbHNlKQorI2VuZGlmCiAj
aWYgIUFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OX0RJU0FCTEVECiAgICAgLCBtX2Rl
c3RydWN0b3JIYXNCZWVuQ2FsbGVkKGZhbHNlKQogI2VuZGlmCkBAIC00OTAsMzMgKzQ4MSwyMCBA
QCBpbmxpbmUgQ1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKCkKIH0KIAogaW5saW5lIENTU1NlbGVj
dG9yOjpDU1NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciYgbykKLSAgICA6IG1fcmVsYXRpb24o
by5tX3JlbGF0aW9uKQorICAgIDogbV9kYXRhKG8ubV9kYXRhKQorICAgICwgbV9yZWxhdGlvbihv
Lm1fcmVsYXRpb24pCiAgICAgLCBtX21hdGNoKG8ubV9tYXRjaCkKLSAgICAsIG1fcHNldWRvVHlw
ZShvLm1fcHNldWRvVHlwZSkKICAgICAsIG1faXNMYXN0SW5TZWxlY3Rvckxpc3Qoby5tX2lzTGFz
dEluU2VsZWN0b3JMaXN0KQogICAgICwgbV9pc0xhc3RJblRhZ0hpc3Rvcnkoby5tX2lzTGFzdElu
VGFnSGlzdG9yeSkKLSAgICAsIG1faGFzUmFyZURhdGEoby5tX2hhc1JhcmVEYXRhKQotICAgICwg
bV9oYXNOYW1lV2l0aENhc2Uoby5tX2hhc05hbWVXaXRoQ2FzZSkKLSAgICAsIG1faXNGb3JQYWdl
KG8ubV9pc0ZvclBhZ2UpCisgICAgLCBtX3BzZXVkb1R5cGUoby5tX3BzZXVkb1R5cGUpCiAgICAg
LCBtX3RhZ0lzRm9yTmFtZXNwYWNlUnVsZShvLm1fdGFnSXNGb3JOYW1lc3BhY2VSdWxlKQotICAg
ICwgbV9jYXNlSW5zZW5zaXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nKG8ubV9jYXNlSW5zZW5z
aXRpdmVBdHRyaWJ1dGVWYWx1ZU1hdGNoaW5nKQorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICAs
IG1faXNGb3JQYWdlKG8ubV9pc0ZvclBhZ2UpCisjZW5kaWYKICNpZiAhQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT05fRElTQUJMRUQKICAgICAsIG1fZGVzdHJ1Y3Rvckhhc0JlZW5DYWxs
ZWQoZmFsc2UpCiAjZW5kaWYKIHsKLSAgICBpZiAoby5tX2hhc1JhcmVEYXRhKSB7Ci0gICAgICAg
IG1fZGF0YS5tX3JhcmVEYXRhID0gby5tX2RhdGEubV9yYXJlRGF0YTsKLSAgICAgICAgbV9kYXRh
Lm1fcmFyZURhdGEtPnJlZigpOwotICAgIH0gZWxzZSBpZiAoby5tX2hhc05hbWVXaXRoQ2FzZSkg
ewotICAgICAgICBtX2RhdGEubV9uYW1lV2l0aENhc2UgPSBvLm1fZGF0YS5tX25hbWVXaXRoQ2Fz
ZTsKLSAgICAgICAgbV9kYXRhLm1fbmFtZVdpdGhDYXNlLT5yZWYoKTsKLSAgICB9IGlmIChvLm1h
dGNoKCkgPT0gVGFnKSB7Ci0gICAgICAgIG1fZGF0YS5tX3RhZ1FOYW1lID0gby5tX2RhdGEubV90
YWdRTmFtZTsKLSAgICAgICAgbV9kYXRhLm1fdGFnUU5hbWUtPnJlZigpOwotICAgIH0gZWxzZSBp
ZiAoby5tX2RhdGEubV92YWx1ZSkgewotICAgICAgICBtX2RhdGEubV92YWx1ZSA9IG8ubV9kYXRh
Lm1fdmFsdWU7Ci0gICAgICAgIG1fZGF0YS5tX3ZhbHVlLT5yZWYoKTsKLSAgICB9CiB9CiAKIGlu
bGluZSBDU1NTZWxlY3Rvcjo6fkNTU1NlbGVjdG9yKCkKQEAgLTUyNSw2MiArNTAzLDQ0IEBAIGlu
bGluZSBDU1NTZWxlY3Rvcjo6fkNTU1NlbGVjdG9yKCkKICNpZiAhQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT05fRElTQUJMRUQKICAgICBtX2Rlc3RydWN0b3JIYXNCZWVuQ2FsbGVkID0g
dHJ1ZTsKICNlbmRpZgotICAgIGlmIChtX2hhc1JhcmVEYXRhKSB7Ci0gICAgICAgIG1fZGF0YS5t
X3JhcmVEYXRhLT5kZXJlZigpOwotICAgICAgICBtX2RhdGEubV9yYXJlRGF0YSA9IG51bGxwdHI7
Ci0gICAgICAgIG1faGFzUmFyZURhdGEgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKG1faGFzTmFt
ZVdpdGhDYXNlKSB7Ci0gICAgICAgIG1fZGF0YS5tX25hbWVXaXRoQ2FzZS0+ZGVyZWYoKTsKLSAg
ICAgICAgbV9kYXRhLm1fbmFtZVdpdGhDYXNlID0gbnVsbHB0cjsKLSAgICAgICAgbV9oYXNOYW1l
V2l0aENhc2UgPSBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKG1hdGNoKCkgPT0gVGFnKSB7Ci0gICAg
ICAgIG1fZGF0YS5tX3RhZ1FOYW1lLT5kZXJlZigpOwotICAgICAgICBtX2RhdGEubV90YWdRTmFt
ZSA9IG51bGxwdHI7Ci0gICAgICAgIG1fbWF0Y2ggPSBVbmtub3duOwotICAgIH0gZWxzZSBpZiAo
bV9kYXRhLm1fdmFsdWUpIHsKLSAgICAgICAgbV9kYXRhLm1fdmFsdWUtPmRlcmVmKCk7Ci0gICAg
ICAgIG1fZGF0YS5tX3ZhbHVlID0gbnVsbHB0cjsKLSAgICB9CiB9CiAKIGlubGluZSBjb25zdCBR
dWFsaWZpZWROYW1lJiBDU1NTZWxlY3Rvcjo6dGFnUU5hbWUoKSBjb25zdAogewogICAgIEFTU0VS
VChtYXRjaCgpID09IFRhZyk7Ci0gICAgaWYgKG1faGFzTmFtZVdpdGhDYXNlKQotICAgICAgICBy
ZXR1cm4gbV9kYXRhLm1fbmFtZVdpdGhDYXNlLT5tX29yaWdpbmFsTmFtZTsKLSAgICByZXR1cm4g
KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUXVhbGlmaWVkTmFtZSo+KCZtX2RhdGEubV90YWdRTmFt
ZSk7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8UmVmUHRyPE5hbWVXaXRoQ2FzZT4+
KG1fZGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6OmdldDxSZWZQdHI8TmFtZVdpdGhDYXNlPj4o
bV9kYXRhKS0+bV9vcmlnaW5hbE5hbWU7CisgICAgcmV0dXJuIFdURjo6Z2V0PFF1YWxpZmllZE5h
bWU+KG1fZGF0YSk7CiB9CiAKIGlubGluZSBjb25zdCBBdG9taWNTdHJpbmcmIENTU1NlbGVjdG9y
Ojp0YWdMb3dlcmNhc2VMb2NhbE5hbWUoKSBjb25zdAogewotICAgIGlmIChtX2hhc05hbWVXaXRo
Q2FzZSkKLSAgICAgICAgcmV0dXJuIG1fZGF0YS5tX25hbWVXaXRoQ2FzZS0+bV9sb3dlcmNhc2VM
b2NhbE5hbWU7Ci0gICAgcmV0dXJuIG1fZGF0YS5tX3RhZ1FOYW1lLT5tX2xvY2FsTmFtZTsKKyAg
ICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQdHI8TmFtZVdpdGhDYXNlPj4obV9kYXRh
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PFJlZlB0cjxOYW1lV2l0aENhc2U+PihtX2RhdGEp
LT5tX2xvd2VyY2FzZUxvY2FsTmFtZTsKKyAgICByZXR1cm4gV1RGOjpnZXQ8UXVhbGlmaWVkTmFt
ZT4obV9kYXRhKS5sb2NhbE5hbWUoKTsKIH0KIAogaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYg
Q1NTU2VsZWN0b3I6OnZhbHVlKCkgY29uc3QKIHsKICAgICBBU1NFUlQobWF0Y2goKSAhPSBUYWcp
OwotICAgIGlmIChtX2hhc1JhcmVEYXRhKQotICAgICAgICByZXR1cm4gbV9kYXRhLm1fcmFyZURh
dGEtPm1fbWF0Y2hpbmdWYWx1ZTsKKyAgICBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxSZWZQ
dHI8UmFyZURhdGE+PihtX2RhdGEpKQorICAgICAgICByZXR1cm4gV1RGOjpnZXQ8UmVmUHRyPFJh
cmVEYXRhPj4obV9kYXRhKS0+bV9tYXRjaGluZ1ZhbHVlOwogCi0gICAgLy8gQXRvbWljU3RyaW5n
IGlzIHJlYWxseSBqdXN0IGFuIEF0b21pY1N0cmluZ0ltcGwqIHNvIHRoZSBjYXN0IGJlbG93IGlz
IHNhZmUuCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmluZyo+
KCZtX2RhdGEubV92YWx1ZSk7CisgICAgcmV0dXJuIFdURjo6Z2V0PEF0b21pY1N0cmluZz4obV9k
YXRhKTsKIH0KIAogaW5saW5lIGNvbnN0IEF0b21pY1N0cmluZyYgQ1NTU2VsZWN0b3I6OnNlcmlh
bGl6aW5nVmFsdWUoKSBjb25zdAogewogICAgIEFTU0VSVChtYXRjaCgpICE9IFRhZyk7Ci0gICAg
aWYgKG1faGFzUmFyZURhdGEpCi0gICAgICAgIHJldHVybiBtX2RhdGEubV9yYXJlRGF0YS0+bV9z
ZXJpYWxpemluZ1ZhbHVlOworICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFJlZlB0cjxS
YXJlRGF0YT4+KG1fZGF0YSkpCisgICAgICAgIHJldHVybiBXVEY6OmdldDxSZWZQdHI8UmFyZURh
dGE+PihtX2RhdGEpLT5tX3NlcmlhbGl6aW5nVmFsdWU7CiAgICAgCi0gICAgLy8gQXRvbWljU3Ry
aW5nIGlzIHJlYWxseSBqdXN0IGFuIEF0b21pY1N0cmluZ0ltcGwqIHNvIHRoZSBjYXN0IGJlbG93
IGlzIHNhZmUuCi0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21pY1N0cmlu
Zyo+KCZtX2RhdGEubV92YWx1ZSk7CisgICAgcmV0dXJuIFdURjo6Z2V0PEF0b21pY1N0cmluZz4o
bV9kYXRhKTsKIH0KICAgICAKIGlubGluZSBib29sIENTU1NlbGVjdG9yOjphdHRyaWJ1dGVWYWx1
ZU1hdGNoaW5nSXNDYXNlSW5zZW5zaXRpdmUoKSBjb25zdAogewotICAgIHJldHVybiBtX2Nhc2VJ
bnNlbnNpdGl2ZUF0dHJpYnV0ZVZhbHVlTWF0Y2hpbmc7CisgICAgcmV0dXJuIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8UmVmUHRyPFJhcmVEYXRhPj4obV9kYXRhKSAmJiBXVEY6OmdldDxSZWZQdHI8
UmFyZURhdGE+PihtX2RhdGEpLT5tX2Nhc2VJbnNlbnNpdGl2ZUF0dHJpYnV0ZVZhbHVlTWF0Y2hp
bmc7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL0NTU1BhcnNlckltcGwuY3BwCmluZGV4IDQxMTBjZDRmNTU0ZTI2NzY3ZWVlNjlhZWU0OGZl
YzM4ZDhkOGE2MWEuLjBmN2JmMTlhMTNmMGM0YTQyYzBlMDc0NTY3ZDE2Y2NmYWIxYjYwNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtMjk0LDcg
KzI5NCw5IEBAIENTU1NlbGVjdG9yTGlzdCBDU1NQYXJzZXJJbXBsOjpwYXJzZVBhZ2VTZWxlY3Rv
cihDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlLCBTdHlsCiAgICAgICAgICAgICBzZWxlY3Rvci0+
cHJlcGVuZFRhZ1NlbGVjdG9yKFF1YWxpZmllZE5hbWUobnVsbEF0b20oKSwgdHlwZVNlbGVjdG9y
LCBzdHlsZVNoZWV0LT5kZWZhdWx0TmFtZXNwYWNlKCkpKTsKICAgICB9CiAKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsKKyNlbmRpZgogICAgIHJldHVy
biBDU1NTZWxlY3Rvckxpc3QgeyBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPj46OmZyb20oV1RGTW92ZShzZWxlY3RvcikpIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyU2VsZWN0b3IuaAppbmRleCA4NjBmZGExYzExMTJhYjk5YTMy
ODNlM2EyM2M2NDE3Y2VhNTcyN2NlLi5iMDlhYmZlOWZhMDQ3ZWY2Y2ViYWM5YjlhNGE4ZDA1YWI4
NmRkMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclNl
bGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJTZWxlY3Rv
ci5oCkBAIC01OSw3ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE50aChpbnQgYSwgaW50
IGIpIHsgbV9zZWxlY3Rvci0+c2V0TnRoKGEsIGIpOyB9CiAgICAgdm9pZCBzZXRNYXRjaChDU1NT
ZWxlY3Rvcjo6TWF0Y2ggdmFsdWUpIHsgbV9zZWxlY3Rvci0+c2V0TWF0Y2godmFsdWUpOyB9CiAg
ICAgdm9pZCBzZXRSZWxhdGlvbihDU1NTZWxlY3Rvcjo6UmVsYXRpb25UeXBlIHZhbHVlKSB7IG1f
c2VsZWN0b3ItPnNldFJlbGF0aW9uKHZhbHVlKTsgfQorI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICB2b2lkIHNldEZvclBhZ2UoKSB7IG1fc2VsZWN0b3ItPnNldEZvclBhZ2UoKTsgfQorI2VuZGlm
CiAKICAgICBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2goKSBjb25zdCB7IHJldHVybiBtX3NlbGVj
dG9yLT5tYXRjaCgpOyB9CiAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb0VsZW1lbnRUeXBlIHBzZXVk
b0VsZW1lbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rvci0+cHNldWRvRWxlbWVudFR5
cGUoKTsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>