<?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>192853</bug_id>
          
          <creation_ts>2018-12-19 07:02:26 -0800</creation_ts>
          <short_desc>WTF::String and StringImpl overflow MaxLength</short_desc>
          <delta_ts>2018-12-20 08:06:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Tadeu Zagallo">tzagallo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489297</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2018-12-19 07:02:26 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489298</commentid>
    <comment_count>1</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2018-12-19 07:04:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/45726906&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489300</commentid>
    <comment_count>2</comment_count>
      <attachid>357678</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2018-12-19 07:11:00 -0800</bug_when>
    <thetext>Created attachment 357678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489535</commentid>
    <comment_count>3</comment_count>
      <attachid>357741</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2018-12-19 15:37:21 -0800</bug_when>
    <thetext>Created attachment 357741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489538</commentid>
    <comment_count>4</comment_count>
      <attachid>357741</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-12-19 15:45:37 -0800</bug_when>
    <thetext>Comment on attachment 357741
Patch

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

r=me

&gt; Source/WTF/wtf/text/StringImpl.h:575
&gt; +template&lt;typename CharacterType&gt; size_t reverseFindLineTerminator(const CharacterType*, unsigned length, unsigned index = StringImpl::MaxLength);
&gt; +template&lt;typename CharacterType&gt; size_t reverseFind(const CharacterType*, unsigned length, CharacterType matchCharacter, unsigned index = StringImpl::MaxLength);
&gt; +size_t reverseFind(const UChar*, unsigned length, LChar matchCharacter, unsigned index = StringImpl::MaxLength);
&gt; +size_t reverseFind(const LChar*, unsigned length, UChar matchCharacter, unsigned index = StringImpl::MaxLength);

Nit: You don&apos;t need the &quot;StringImpl::&quot; here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489540</commentid>
    <comment_count>5</comment_count>
      <attachid>357741</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-19 15:47:07 -0800</bug_when>
    <thetext>Comment on attachment 357741
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.cpp:196
&gt; +    if (length &gt; std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)))

Would it be possible to use a template function like this?

    template&lt;typename CharacterType&gt;
    constexpr size_t maxUtf8Length() { return std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)); }

constexpr would be nice, but if that doesn&apos;t work, just change it to inline instead.  This allows you to define this limit in one place instead of 3.

&gt; Source/WTF/wtf/text/StringImpl.cpp:225
&gt; +    if (length &gt; std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)))

Use maxUtf8Length&lt;CharacterType&gt;() instead.

&gt; Source/WTF/wtf/text/StringImpl.h:957
&gt; +    if (length &gt; std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType))) {

Use maxUtf8Length&lt;CharacterType&gt; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489546</commentid>
    <comment_count>6</comment_count>
      <attachid>357741</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-19 15:51:14 -0800</bug_when>
    <thetext>Comment on attachment 357741
Patch

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

&gt;&gt; Source/WTF/wtf/text/StringImpl.cpp:196
&gt;&gt; +    if (length &gt; std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)))
&gt; 
&gt; Would it be possible to use a template function like this?
&gt; 
&gt;     template&lt;typename CharacterType&gt;
&gt;     constexpr size_t maxUtf8Length() { return std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)); }
&gt; 
&gt; constexpr would be nice, but if that doesn&apos;t work, just change it to inline instead.  This allows you to define this limit in one place instead of 3.

I forgot: this should be a static method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489552</commentid>
    <comment_count>7</comment_count>
      <attachid>357741</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-19 16:00:24 -0800</bug_when>
    <thetext>Comment on attachment 357741
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/text/StringImpl.cpp:196
&gt;&gt;&gt; +    if (length &gt; std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)))
&gt;&gt; 
&gt;&gt; Would it be possible to use a template function like this?
&gt;&gt; 
&gt;&gt;     template&lt;typename CharacterType&gt;
&gt;&gt;     constexpr size_t maxUtf8Length() { return std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)); }
&gt;&gt; 
&gt;&gt; constexpr would be nice, but if that doesn&apos;t work, just change it to inline instead.  This allows you to define this limit in one place instead of 3.
&gt; 
&gt; I forgot: this should be a static method.

Wait a minute.  I don&apos;t get this.  Why take the min of MaxLength and (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl))?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489570</commentid>
    <comment_count>8</comment_count>
      <attachid>357741</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-12-19 16:23:14 -0800</bug_when>
    <thetext>Comment on attachment 357741
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/text/StringImpl.cpp:196
&gt;&gt;&gt;&gt; +    if (length &gt; std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)))
&gt;&gt;&gt; 
&gt;&gt;&gt; Would it be possible to use a template function like this?
&gt;&gt;&gt; 
&gt;&gt;&gt;     template&lt;typename CharacterType&gt;
&gt;&gt;&gt;     constexpr size_t maxUtf8Length() { return std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType)); }
&gt;&gt;&gt; 
&gt;&gt;&gt; constexpr would be nice, but if that doesn&apos;t work, just change it to inline instead.  This allows you to define this limit in one place instead of 3.
&gt;&gt; 
&gt;&gt; I forgot: this should be a static method.
&gt; 
&gt; Wait a minute.  I don&apos;t get this.  Why take the min of MaxLength and (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl))?

OK, I get it:
1. The actual bytes allocated is allocationSize&lt;CharacterType&gt;(length) which adds the sizeof(StringImpl) to length * sizeof(CharacterType).
2. For an 8bit char, the limit we&apos;ll use is always MaxLength.
3. For a 16-bit char, the limit can&apos;t be MaxLength because at MaxLength, length * sizeof(CharacterType) is already equal to UINT_MAX.  Hence, adding sizeof(StringImpl) would overflow length.

This also means that my choice of name for the method maxUtf8Length() is wrong.  This has nothing to do with utf8 strings.  Can you do use a method instead:

    template&lt;typename CharacterType&gt;
    static constexpr unsigned maxInternalLength()
    {
        // In order to not overflow the unsigned length, the check for (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) is needed when sizeof(CharacterType) == 2.
        return std::min(static_cast&lt;size_t&gt;(MaxLength), (std::numeric_limits&lt;unsigned&gt;::max() - sizeof(StringImpl)) / sizeof(CharacterType));
    }

Sorry for the r- noise earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489836</commentid>
    <comment_count>9</comment_count>
      <attachid>357811</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2018-12-20 07:28:55 -0800</bug_when>
    <thetext>Created attachment 357811
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489840</commentid>
    <comment_count>10</comment_count>
      <attachid>357811</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-20 08:06:55 -0800</bug_when>
    <thetext>Comment on attachment 357811
Patch for landing

Clearing flags on attachment: 357811

Committed r239439: &lt;https://trac.webkit.org/changeset/239439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489841</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-20 08:06:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357678</attachid>
            <date>2018-12-19 07:11:00 -0800</date>
            <delta_ts>2018-12-19 15:37:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192853-20181219160955.patch</filename>
            <type>text/plain</type>
            <size>3812</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NGRhYjk5OTQwNzJjZDI5YTA4ZGVkMjNmMjFmMTdiYTZhNmRkODA1Li42ZDgzMTM5ZjIyMmZhZjI5
YzRiZWI2MGQyZjRjODA4NzY0MGE3NTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxOC0xMi0xOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNv
bT4KKworICAgICAgICBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIgb3ZlcmZsb3cgaXMg
bm90IGNhdWdodCB3aXRoIDE2LWJpdCBjaGFyYWN0ZXIgdGltZXMgMioqMzAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Mjg1MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDU3MjY5MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgc3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyIHdhcyBjaGVja2lu
ZyB0aGF0IHRoZSByZXBlYXQgY291bnQgd2FzCisgICAgICAgIHNtYWxsZXIgdGhhbiBKU1N0cmlu
Zzo6TWF4TGVuZ3RoLCBidXQgaXQgZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudAorICAgICAgICB3
aGV0aGVyIHRoZSBjaGFyYWN0ZXIgdG8gYmUgcmVwZWF0ZWQgd2FzIDgtIG9yIDE2LWJpdC4KKwor
ICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3Ry
aW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKToKKwogMjAxOC0xMi0xOCAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRXJyb3IgbWVzc2FnZSBmb3Ig
YC14ICoqIHlgIGNvbnRhaW5zIGEgdHlwby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDI0MGJhNWVmNTQ5YTYyM2M0ZDRmZDI1
NmQwOWJjMGNjYzEwMmM4NWMuLmM1NzU3OWJkM2FjNTQ4M2ZlNzA5NjM2MjYwNzIwMjJjMzY4NTFl
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcApAQCAtODYzLDIxICs4NjMsMjUgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBzdHJpbmdQcm90b0Z1bmNSZXBlYXRDaGFyYWN0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIEpT
U3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAg
ICAgQVNTRVJUKHN0cmluZy0+bGVuZ3RoKCkgPT0gMSk7CiAKKyAgICBhdXRvIHZpZXdXaXRoU3Ry
aW5nID0gc3RyaW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5n
VmlldyB2aWV3ID0gdmlld1dpdGhTdHJpbmcudmlldzsKKyAgICBBU1NFUlQodmlldy5sZW5ndGgo
KSA9PSAxKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIFVDaGFyIGNoYXJh
Y3RlciA9IHZpZXdbMF07CisKICAgICBKU1ZhbHVlIHJlcGVhdENvdW50VmFsdWUgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgxKTsKICAgICBSRUxFQVNFX0FTU0VSVChyZXBlYXRDb3VudFZhbHVl
LmlzTnVtYmVyKCkpOwogICAgIGludDMyX3QgcmVwZWF0Q291bnQ7CiAgICAgZG91YmxlIHZhbHVl
ID0gcmVwZWF0Q291bnRWYWx1ZS5hc051bWJlcigpOwotICAgIGlmICh2YWx1ZSA+IEpTU3RyaW5n
OjpNYXhMZW5ndGgpCisgICAgZG91YmxlIGxlbmd0aCA9IHZhbHVlOworICAgIGlmIChjaGFyYWN0
ZXIgJiB+MHhmZikKKyAgICAgICAgbGVuZ3RoICo9IDI7CisgICAgaWYgKGxlbmd0aCA+IEpTU3Ry
aW5nOjpNYXhMZW5ndGgpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGV4ZWMsIHNjb3BlKSk7CiAgICAgcmVwZWF0Q291bnQgPSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih2YWx1ZSk7CiAgICAgQVNTRVJUKHJlcGVhdENvdW50ID49IDApOwogICAgIEFT
U0VSVCghcmVwZWF0Q291bnRWYWx1ZS5pc0RvdWJsZSgpIHx8IHJlcGVhdENvdW50VmFsdWUuYXNE
b3VibGUoKSA9PSByZXBlYXRDb3VudCk7CiAKLSAgICBhdXRvIHZpZXdXaXRoU3RyaW5nID0gc3Ry
aW5nLT52aWV3V2l0aFVuZGVybHlpbmdTdHJpbmcoZXhlYyk7Ci0gICAgU3RyaW5nVmlldyB2aWV3
ID0gdmlld1dpdGhTdHJpbmcudmlldzsKLSAgICBBU1NFUlQodmlldy5sZW5ndGgoKSA9PSAxKTsK
LSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIFVDaGFyIGNoYXJhY3RlciA9IHZp
ZXdbMF07CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGlmICghKGNoYXJhY3RlciAmIH4weGZm
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXBlYXRDaGFyYWN0ZXIoKmV4ZWMs
IHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpLCByZXBlYXRDb3VudCkpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkYmQ1YjNjOWFh
MDhkOTNiYTVmMjFkZmNjMjMyMDEzZThiODEzYWUyLi43ODM1MmRhY2RkMjdiZTE2MjgxZDRhMzU5
NGQxZDkwODMwNmYyNWM5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE4LTEyLTE5ICBUYWRldSBaYWdhbGxv
ICA8dHphZ2FsbG9AYXBwbGUuY29tPgorCisgICAgICAgIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENo
YXJhY3RlciBvdmVyZmxvdyBpcyBub3QgY2F1Z2h0IHdpdGggMTYtYml0IGNoYXJhY3RlciB0aW1l
cyAyKiozMAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyODUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTcyNjkwNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9zdHJpbmctMTZiaXQt
cmVwZWF0LW92ZXJmbG93LmpzOiBBZGRlZC4KKyAgICAgICAgKGNhdGNoKToKKwogMjAxOC0xMi0x
OCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRXJy
b3IgbWVzc2FnZSBmb3IgYC14ICoqIHlgIGNvbnRhaW5zIGEgdHlwby4KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3N0cmluZy0xNmJpdC1yZXBlYXQtb3ZlcmZsb3cuanMgYi9KU1Rlc3RzL3N0
cmVzcy9zdHJpbmctMTZiaXQtcmVwZWF0LW92ZXJmbG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNzI0ZmJm
NjJiYzg2Nzg2ZDdiMGVkNzc1YTUzYzEwNzdlNWVlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9zdHJpbmctMTZiaXQtcmVwZWF0LW92ZXJmbG93LmpzCkBAIC0wLDAgKzEsOSBA
QAordmFyIGV4Y2VwdGlvbjsKK3RyeSB7CisgICAgcHJpbnQoJ1x1ZDAwMCcucmVwZWF0KDIqKjMw
KSk7Cit9IGNhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKK30KKworaWYgKGV4Y2VwdGlv
biAhPSAiRXJyb3I6IE91dCBvZiBtZW1vcnkiKQorICAgIHRocm93ICJGQUlMRUQiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357741</attachid>
            <date>2018-12-19 15:37:21 -0800</date>
            <delta_ts>2018-12-20 07:28:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192853-20181220003615.patch</filename>
            <type>text/plain</type>
            <size>19517</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1NDk1MmNiNGZiZTA0ZTY3MTI5ZGU5
NmMyN2Y2MDk1NDI1MjRjYWUuLjkyMjcxZGQwYzk2MmQ0ZjM4MDVlZDNkZmU1Nzc5OTJlZDc5YmFk
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMTItMTkgIFRhZGV1IFphZ2FsbG8gIDx0emFn
YWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc2lzdGVudGx5IHVzZSBNYXhMZW5ndGggZm9y
IGFsbCBXVEYgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkyODUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTcyNjkwNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYXhMZW5ndGggd2Fz
IGludHJvZHVjZWQgdG8gYmUgSU5UX01BWCBmb3IgV1RGOjpTdHJpbmcgYW5kIFN0cmluZ0ltcGws
CisgICAgICAgIGJ1dCBhbGwgdGhlIGFzc2VydGlvbnMgd2VyZSBzdGlsbCBkb25lIHVzaW5nIFVJ
TlRfTUFYLiBDaGFuZ2UgaXQgdG8KKyAgICAgICAgdXNlIE1heExlbmd0aCBmb3IgYWxsIGNoZWNr
cy4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSk6CisgICAgICAg
IChXVEY6OlN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNvbnZlcnRUb0xv
d2VyY2FzZVdpdGhvdXRMb2NhbGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjb252ZXJ0
VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y29u
dmVydFRvTG93ZXJjYXNlV2l0aExvY2FsZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNv
bnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpm
b2xkQ2FzZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RG
OjpTdHJpbmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dXRmOEZv
ckNoYXJhY3RlcnMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0cnlHZXRVdGY4Rm9yUmFu
Z2UgY29uc3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdU
Rjo6bGVuZ3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlN0cmluZ0lt
cGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjph
ZG9wdCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURjo6
U3RyaW5nOjphcHBlbmQpOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omluc2VydCk6CisgICAgICAg
IChXVEY6OlN0cmluZzo6ZnJvbVVURjgpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5o
OgorICAgICAgICAoV1RGOjpTdHJpbmc6OnJldmVyc2VGaW5kIGNvbnN0KToKKwogMjAxOC0xMi0x
NyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUg
YnVpbGRzIGFyZSBicm9rZW4gYWZ0ZXIgcjIzOTI2MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKaW5kZXggMGZjMDFhY2UzOWJkYTk0NzkxYmY3ODEzOTMwYTM0MTJiYTdhOWY5OS4uYzI3Mjk0
ZWFkN2MwYjIwYmJlZTM5NjI3MGY2ODk1MDNiMmQ5MjlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXQKICAg
ICAvLyBBbGxvY2F0ZSBhIHNpbmdsZSBidWZmZXIgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhl
IFN0cmluZ0ltcGwKICAgICAvLyBzdHJ1Y3QgYXMgd2VsbCBhcyB0aGUgZGF0YSB3aGljaCBpdCBj
b250YWlucy4gVGhpcyByZW1vdmVzIG9uZQogICAgIC8vIGhlYXAgYWxsb2NhdGlvbiBmcm9tIHRo
aXMgY2FsbC4KLSAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJhY3RlclR5cGUpKSkK
KyAgICBpZiAobGVuZ3RoID4gc3RkOjptaW4oc3RhdGljX2Nhc3Q8c2l6ZV90PihNYXhMZW5ndGgp
LCAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9mKFN0cmluZ0lt
cGwpKSAvIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCiAgICAgICAgIENSQVNIKCk7CiAgICAgU3Ry
aW5nSW1wbCogc3RyaW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGZhc3RNYWxsb2MoYWxs
b2NhdGlvblNpemU8Q2hhcmFjdGVyVHlwZT4obGVuZ3RoKSkpOwogCkBAIC0yMjIsNyArMjIyLDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gaW5saW5lIEV4cGVjdGVkPFJlZjxT
dHJpbmdJbXBsPiwgVVRGOENvbnZlcnNpb24KICAgICB9CiAKICAgICAvLyBTYW1lIGFzIGNyZWF0
ZVVuaW5pdGlhbGl6ZWQoKSBleGNlcHQgaGVyZSB3ZSB1c2UgZmFzdFJlYWxsb2MuCi0gICAgaWYg
KGxlbmd0aCA+ICgoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc2l6ZW9m
KFN0cmluZ0ltcGwpKSAvIHNpemVvZihDaGFyYWN0ZXJUeXBlKSkpCisgICAgaWYgKGxlbmd0aCA+
IHN0ZDo6bWluKHN0YXRpY19jYXN0PHNpemVfdD4oTWF4TGVuZ3RoKSwgKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hh
cmFjdGVyVHlwZSkpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoVVRGOENvbnZlcnNp
b25FcnJvcjo6T3V0T2ZNZW1vcnkpOwogCiAgICAgb3JpZ2luYWxTdHJpbmctPn5TdHJpbmdJbXBs
KCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0
ZShjb25zdCBMQ2hhciogc3RyaW5nKQogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4g
KmVtcHR5KCk7CiAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihzdHJpbmcpKTsKLSAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQorICAgIGlmIChsZW5ndGggPiBNYXhMZW5ndGgpCiAgICAgICAg
IENSQVNIKCk7CiAgICAgcmV0dXJuIGNyZWF0ZShzdHJpbmcsIGxlbmd0aCk7CiB9CkBAIC0zNzcs
NyArMzc3LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0xvd2VyY2Fz
ZVdpdGhvdXRMb2NhbGUoKQogICAgICAgICByZXR1cm4gbmV3SW1wbDsKICAgICB9CiAKLSAgICBp
ZiAobV9sZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQzMl90Pjo6bWF4KCkpKQorICAgIGlmIChtX2xlbmd0aCA+IE1heExlbmd0aCkKICAgICAgICAg
Q1JBU0goKTsKICAgICBpbnQzMl90IGxlbmd0aCA9IG1fbGVuZ3RoOwogCkBAIC00MjksNyArNDI5
LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhv
dXRMb2NhbGUoKQogICAgIC8vIGZldyBhY3R1YWwgY2FsbHMgdG8gdXBwZXIoKSBhcmUgbm8tb3Bz
LCBzbyBpdCB3b3VsZG4ndCBiZSB3b3J0aAogICAgIC8vIHRoZSBleHRyYSB0aW1lIGZvciBwcmUt
c2Nhbm5pbmcuCiAKLSAgICBpZiAobV9sZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKQorICAgIGlmIChtX2xlbmd0aCA+IE1h
eExlbmd0aCkKICAgICAgICAgQ1JBU0goKTsKICAgICBpbnQzMl90IGxlbmd0aCA9IG1fbGVuZ3Ro
OwogCkBAIC01NDEsNyArNTQxLDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZl
cnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5nJiBsb2MKICAgICAvLyB0
aGlzIGxhc3QgcGFydCBpbnRvIGEgc2hhcmVkIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsb2NhbGUg
c3RyaW5nLCBzaW5jZSB0aGlzIGlzCiAgICAgLy8ganVzdCBsaWtlIHRoZSBlbmQgb2YgdGhhdCBm
dW5jdGlvbi4KIAotICAgIGlmIChtX2xlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpCisgICAgaWYgKG1fbGVuZ3RoID4gTWF4
TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogICAgIGludCBsZW5ndGggPSBtX2xlbmd0aDsKIApA
QCAtNTcyLDcgKzU3Miw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9V
cHBlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jCiAgICAgaWYgKCFuZWVk
c1R1cmtpc2hDYXNpbmdSdWxlcyhsb2NhbGVJZGVudGlmaWVyKSB8fCBmaW5kKCdpJykgPT0gbm90
Rm91bmQpCiAgICAgICAgIHJldHVybiBjb252ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7
CiAKLSAgICBpZiAobV9sZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKQorICAgIGlmIChtX2xlbmd0aCA+IE1heExlbmd0aCkK
ICAgICAgICAgQ1JBU0goKTsKICAgICBpbnQgbGVuZ3RoID0gbV9sZW5ndGg7CiAKQEAgLTY1Nyw3
ICs2NTcsNyBAQCBTbG93UGF0aDoKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX2xlbmd0
aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSkpCisgICAgaWYgKG1fbGVuZ3RoID4gTWF4TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwog
CiAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KCp0aGlzKS51cGNv
bnZlcnRlZENoYXJhY3RlcnMoKTsKQEAgLTkzNSw3ICs5MzUsNyBAQCBzaXplX3QgU3RyaW5nSW1w
bDo6ZmluZChjb25zdCBMQ2hhciogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAgIGlm
ICghbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKICAgICBzaXplX3QgbWF0
Y2hTdHJpbmdMZW5ndGggPSBzdHJsZW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obWF0
Y2hTdHJpbmcpKTsKLSAgICBpZiAobWF0Y2hTdHJpbmdMZW5ndGggPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgaWYgKG1hdGNoU3RyaW5nTGVuZ3RoID4gTWF4TGVu
Z3RoKQogICAgICAgICBDUkFTSCgpOwogICAgIHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hT
dHJpbmdMZW5ndGg7CiAgICAgaWYgKCFtYXRjaExlbmd0aCkKQEAgLTEzMDcsNyArMTMwNyw3IEBA
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1
bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsCiAgICAgaWYgKCFsZW5ndGhUb1JlcGxhY2UgJiYgIWxl
bmd0aFRvSW5zZXJ0KQogICAgICAgICByZXR1cm4gKnRoaXM7CiAKLSAgICBpZiAoKGxlbmd0aCgp
IC0gbGVuZ3RoVG9SZXBsYWNlKSA+PSAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIC0gbGVuZ3RoVG9JbnNlcnQpKQorICAgIGlmICgobGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxh
Y2UpID49IChNYXhMZW5ndGggLSBsZW5ndGhUb0luc2VydCkpCiAgICAgICAgIENSQVNIKCk7CiAK
ICAgICBpZiAoaXM4Qml0KCkgJiYgKCFzdHJpbmcgfHwgc3RyaW5nLT5pczhCaXQoKSkpIHsKQEAg
LTEzNjQsMTIgKzEzNjQsMTIgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2Uo
VUNoYXIgcGF0dGVybiwgY29uc3QgTENoYXIqIHJlcGxhY2VtZW50LCB1bnMKICAgICBpZiAoIW1h
dGNoQ291bnQpCiAgICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIGlmIChyZXBTdHJMZW5ndGgg
JiYgbWF0Y2hDb3VudCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIHJl
cFN0ckxlbmd0aCkKKyAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBNYXhMZW5n
dGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CiAKICAgICB1bnNpZ25lZCByZXBs
YWNlU2l6ZSA9IG1hdGNoQ291bnQgKiByZXBTdHJMZW5ndGg7CiAgICAgdW5zaWduZWQgbmV3U2l6
ZSA9IG1fbGVuZ3RoIC0gbWF0Y2hDb3VudDsKLSAgICBpZiAobmV3U2l6ZSA+PSAoc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gcmVwbGFjZVNpemUpKQorICAgIGlmIChuZXdT
aXplID49IChNYXhMZW5ndGggLSByZXBsYWNlU2l6ZSkpCiAgICAgICAgIENSQVNIKCk7CiAKICAg
ICBuZXdTaXplICs9IHJlcGxhY2VTaXplOwpAQCAtMTQ0MCwxMiArMTQ0MCwxMiBAQCBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFjZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciog
cmVwbGFjZW1lbnQsIHVucwogICAgIGlmICghbWF0Y2hDb3VudCkKICAgICAgICAgcmV0dXJuICp0
aGlzOwogCi0gICAgaWYgKHJlcFN0ckxlbmd0aCAmJiBtYXRjaENvdW50ID4gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC8gcmVwU3RyTGVuZ3RoKQorICAgIGlmIChyZXBTdHJM
ZW5ndGggJiYgbWF0Y2hDb3VudCA+IE1heExlbmd0aCAvIHJlcFN0ckxlbmd0aCkKICAgICAgICAg
Q1JBU0goKTsKIAogICAgIHVuc2lnbmVkIHJlcGxhY2VTaXplID0gbWF0Y2hDb3VudCAqIHJlcFN0
ckxlbmd0aDsKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50Owot
ICAgIGlmIChuZXdTaXplID49IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
LSByZXBsYWNlU2l6ZSkpCisgICAgaWYgKG5ld1NpemUgPj0gKE1heExlbmd0aCAtIHJlcGxhY2VT
aXplKSkKICAgICAgICAgQ1JBU0goKTsKIAogICAgIG5ld1NpemUgKz0gcmVwbGFjZVNpemU7CkBA
IC0xNTI1LDEwICsxNTI1LDEwIEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNl
KFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmluZ0ltcGwqIHJlcGxhY2VtZW50CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICAKICAgICB1bnNpZ25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRj
aENvdW50ICogcGF0dGVybkxlbmd0aDsKLSAgICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291
bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyByZXBTdHJMZW5ndGgp
CisgICAgaWYgKHJlcFN0ckxlbmd0aCAmJiBtYXRjaENvdW50ID4gTWF4TGVuZ3RoIC8gcmVwU3Ry
TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogCi0gICAgaWYgKG5ld1NpemUgPiAoc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbWF0Y2hDb3VudCAqIHJlcFN0ckxlbmd0aCkp
CisgICAgaWYgKG5ld1NpemUgPiAoTWF4TGVuZ3RoIC0gbWF0Y2hDb3VudCAqIHJlcFN0ckxlbmd0
aCkpCiAgICAgICAgIENSQVNIKCk7CiAKICAgICBuZXdTaXplICs9IG1hdGNoQ291bnQgKiByZXBT
dHJMZW5ndGg7CkBAIC0xODA0LDcgKzE4MDQsNyBAQCBFeHBlY3RlZDxDU3RyaW5nLCBVVEY4Q29u
dmVyc2lvbkVycm9yPiBTdHJpbmdJbXBsOjp1dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBMQ2hhcgog
ewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0gICAg
aWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCisg
ICAgaWYgKGxlbmd0aCA+IE1heExlbmd0aCAvIDMpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChVVEY4Q29udmVyc2lvbkVycm9yOjpPdXRPZk1lbW9yeSk7CiAgICAgVmVjdG9yPGNoYXIs
IDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsKICAgICBjaGFyKiBidWZmZXIgPSBidWZm
ZXJWZWN0b3IuZGF0YSgpOwpAQCAtMTgxOCw3ICsxODE4LDcgQEAgRXhwZWN0ZWQ8Q1N0cmluZywg
VVRGOENvbnZlcnNpb25FcnJvcj4gU3RyaW5nSW1wbDo6dXRmOEZvckNoYXJhY3RlcnMoY29uc3Qg
VUNoYXIKIHsKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDAp
OwotICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
LyAzKQorICAgIGlmIChsZW5ndGggPiBNYXhMZW5ndGggLyAzKQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoVVRGOENvbnZlcnNpb25FcnJvcjo6T3V0T2ZNZW1vcnkpOwogICAgIFZlY3Rv
cjxjaGFyLCAxMDI0PiBidWZmZXJWZWN0b3IobGVuZ3RoICogMyk7CiAgICAgY2hhciogYnVmZmVy
ID0gYnVmZmVyVmVjdG9yLmRhdGEoKTsKQEAgLTE4NDYsNyArMTg0Niw3IEBAIEV4cGVjdGVkPENT
dHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+IFN0cmluZ0ltcGw6OnRyeUdldFV0ZjhGb3JSYW5n
ZSh1bnNpZ25lZCBvCiAgICAgLy8gICogV2UgY291bGQgYWxsb2NhdGUgYSBDU3RyaW5nQnVmZmVy
IHdpdGggYW4gYXBwcm9wcmlhdGUgc2l6ZSB0bwogICAgIC8vICAgIGhhdmUgYSBnb29kIGNoYW5j
ZSBvZiBiZWluZyBhYmxlIHRvIHdyaXRlIHRoZSBzdHJpbmcgaW50byB0aGUKICAgICAvLyAgICBi
dWZmZXIgd2l0aG91dCByZWFsbG9jaW5nIChzYXksIDEuNSB4IGxlbmd0aCkuCi0gICAgaWYgKGxl
bmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCisgICAgaWYg
KGxlbmd0aCA+IE1heExlbmd0aCAvIDMpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChV
VEY4Q29udmVyc2lvbkVycm9yOjpPdXRPZk1lbW9yeSk7CiAgICAgVmVjdG9yPGNoYXIsIDEwMjQ+
IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRl
eCAxNGE2NmVkMWIzMzgwYWZmNWY0N2Y1ZTIzYzFjYmU1MTdkYmMyNTU4Li42M2M4ZDkzNjI4Y2I0
ZWM2N2ZmZTM5MjAwMTQ1Y2JjNDVkMDc2N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApA
QCAtMzc5LDcgKzM3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBpdHMgb3duIGNvcHkgb2YgdGhlIHN0
cmluZy4KICAgICBSZWY8U3RyaW5nSW1wbD4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3Np
dGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1
bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gTWF4TGVuZ3RoKTsKIAogICAgIFVD
aGFyIGF0KHVuc2lnbmVkKSBjb25zdDsKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGkp
IGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CkBAIC00MzcsOCArNDM3LDggQEAgcHVibGljOgogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0
cmluZ0ltcGwqKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJbXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNv
bnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwg
dW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVu
c2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBp
bmRleCA9IE1heExlbmd0aCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNl
RmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBNYXhMZW5ndGgpOwogCiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBs
JikgY29uc3Q7CkBAIC01NjksMTAgKzU2OSwxMCBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCosCiBz
aXplX3QgZmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgQ29kZVVuaXRNYXRjaEZ1
bmN0aW9uLCB1bnNpZ25lZCBpbmRleCA9IDApOwogc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAw
KTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5k
TGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSosIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENo
YXJhY3RlclR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFyYWN0
ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KTsKLXNpemVfdCByZXZlcnNlRmluZChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgTENo
YXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1
bnNpZ25lZD46Om1heCgpKTsKLXNpemVfdCByZXZlcnNlRmluZChjb25zdCBMQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpu
dW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJtaW5hdG9yKGNvbnN0IENoYXJhY3Rl
clR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGluZGV4ID0gU3RyaW5nSW1wbDo6TWF4
TGVuZ3RoKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVfdCByZXZlcnNl
RmluZChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0ZXJUeXBl
IG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0cmluZ0ltcGw6Ok1heExlbmd0aCk7
CitzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFy
IG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0cmluZ0ltcGw6Ok1heExlbmd0aCk7
CitzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFy
IG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0cmluZ0ltcGw6Ok1heExlbmd0aCk7
CiAKIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gYm9vbCBlcXVhbElnbm9yaW5nTnVs
bGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5PiYsIFN0cmluZ0ltcGwqKTsK
IApAQCAtNzU1LDcgKzc1NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlu
bGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVkU3RyaW5nKGNvCiAgICAgd2hpbGUg
KHN0cmluZ1tsZW5ndGhdKQogICAgICAgICArK2xlbmd0aDsKIAotICAgIFJFTEVBU0VfQVNTRVJU
KGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQobGVuZ3RoIDwgU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiB9CiAKQEAgLTk1NCw3ICs5NTQsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjp0cgogICAgICAgICByZXR1cm4gZW1wdHkoKTsKICAgICB9CiAK
LSAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
LSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJhY3RlclR5cGUpKSkgeworICAgIGlm
IChsZW5ndGggPiBzdGQ6Om1pbihzdGF0aWNfY2FzdDxzaXplX3Q+KE1heExlbmd0aCksIChzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8g
c2l6ZW9mKENoYXJhY3RlclR5cGUpKSkgewogICAgICAgICBvdXRwdXQgPSBudWxscHRyOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05NzMsNyArOTczLDcgQEAgaW5saW5lIFJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjphZG9wdChWZWN0b3I8Q2hhcmFjdGVyVHlwZSwgaW5s
aW5lQ2FwYWNpdHksIE8KIHsKICAgICBpZiAoc2l6ZV90IHNpemUgPSB2ZWN0b3Iuc2l6ZSgpKSB7
CiAgICAgICAgIEFTU0VSVCh2ZWN0b3IuZGF0YSgpKTsKLSAgICAgICAgaWYgKHNpemUgPiBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgICAgIGlmIChzaXplID4gTWF4
TGVuZ3RoKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RyaW5nSW1wbCh2ZWN0b3IucmVsZWFzZUJ1ZmZlcigpLCBzaXplKSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IGM5NmNjOTkxZWY4ODRmMjhmZTllMTc0YTMxOGUw
MGJkNmIyMTdmNzQuLjI0OGZjMzVlMWNlMmNhMTIxNzA4NDA0MzZhODUxYmYyNTQyYzA2MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBTdHJpbmc6
OmFwcGVuZChjb25zdCBTdHJpbmcmIG90aGVyU3RyaW5nKQogCiAgICAgYXV0byBsZW5ndGggPSBt
X2ltcGwtPmxlbmd0aCgpOwogICAgIGF1dG8gb3RoZXJMZW5ndGggPSBvdGhlclN0cmluZy5tX2lt
cGwtPmxlbmd0aCgpOwotICAgIGlmIChvdGhlckxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSAtIGxlbmd0aCkKKyAgICBpZiAob3RoZXJMZW5ndGggPiBNYXhMZW5n
dGggLSBsZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CiAKICAgICBpZiAobV9pbXBsLT5pczhCaXQo
KSAmJiBvdGhlclN0cmluZy5tX2ltcGwtPmlzOEJpdCgpKSB7CkBAIC0xMjksNyArMTI5LDcgQEAg
dm9pZCBTdHJpbmc6OmFwcGVuZChMQ2hhciBjaGFyYWN0ZXIpCiAgICAgICAgIGFwcGVuZChzdGF0
aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
aWYgKG1faW1wbC0+bGVuZ3RoKCkgPj0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpKQorICAgIGlmIChtX2ltcGwtPmxlbmd0aCgpID49IE1heExlbmd0aCkKICAgICAgICAgQ1JB
U0goKTsKICAgICBMQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpj
cmVhdGVVbmluaXRpYWxpemVkKG1faW1wbC0+bGVuZ3RoKCkgKyAxLCBkYXRhKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKFVDaGFyIGNoYXJhY3RlcikKICAgICAgICAg
YXBwZW5kKHN0YXRpY19jYXN0PExDaGFyPihjaGFyYWN0ZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpZiAobV9pbXBsLT5sZW5ndGgoKSA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCisgICAgaWYgKG1faW1wbC0+bGVuZ3RoKCkgPj0gTWF4TGVuZ3RoKQog
ICAgICAgICBDUkFTSCgpOwogICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8gbmV3SW1wbCA9IFN0
cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5ndGgoKSArIDEsIGRhdGEp
OwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgU3RyaW5nOjppbnNlcnQoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHVuc2lnbmVkIHBvc2l0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGxlbmd0aFRvSW5zZXJ0ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC0gbGVuZ3RoKCkpCisgICAgaWYgKGxlbmd0aFRvSW5zZXJ0ID4gTWF4TGVuZ3RoIC0gbGVuZ3Ro
KCkpCiAgICAgICAgIENSQVNIKCk7CiAKICAgICBpZiAoaXM4Qml0KCkgJiYgc3RyaW5nLmlzOEJp
dCgpKSB7CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBMQ2hh
ciogY2hhcmFjdGVyc1RvQXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICB1bnNp
Z25lZCBzdHJMZW5ndGggPSBtX2ltcGwtPmxlbmd0aCgpOwogCiAgICAgaWYgKG1faW1wbC0+aXM4
Qml0KCkpIHsKLSAgICAgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpIC0gc3RyTGVuZ3RoKQorICAgICAgICBpZiAobGVuZ3RoVG9BcHBl
bmQgPiBNYXhMZW5ndGggLSBzdHJMZW5ndGgpCiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAg
ICBMQ2hhciogZGF0YTsKICAgICAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRl
VW5pbml0aWFsaXplZChzdHJMZW5ndGggKyBsZW5ndGhUb0FwcGVuZCwgZGF0YSk7CkBAIC0yMzIs
NyArMjMyLDcgQEAgdm9pZCBTdHJpbmc6OmFwcGVuZChjb25zdCBMQ2hhciogY2hhcmFjdGVyc1Rv
QXBwZW5kLCB1bnNpZ25lZCBsZW5ndGhUb0FwcGVuZCkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChsZW5ndGhUb0FwcGVuZCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSAtIHN0ckxlbmd0aCkKKyAgICBpZiAobGVuZ3RoVG9BcHBlbmQgPiBNYXhMZW5ndGgg
LSBzdHJMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CiAgICAgVUNoYXIqIGRhdGE7CiAgICAgYXV0
byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgoKSArIGxl
bmd0aFRvQXBwZW5kLCBkYXRhKTsKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIFN0cmluZzo6YXBw
ZW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBw
ZW5kKQogICAgIHVuc2lnbmVkIHN0ckxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7CiAgICAgCiAg
ICAgQVNTRVJUKGNoYXJhY3RlcnNUb0FwcGVuZCk7Ci0gICAgaWYgKGxlbmd0aFRvQXBwZW5kID4g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc3RyTGVuZ3RoKQorICAgIGlm
IChsZW5ndGhUb0FwcGVuZCA+IE1heExlbmd0aCAtIHN0ckxlbmd0aCkKICAgICAgICAgQ1JBU0go
KTsKICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVh
dGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0aFRvQXBwZW5kLCBkYXRhKTsKQEAgLTg4
NSw3ICs4ODUsNyBAQCBTdHJpbmcgU3RyaW5nOjptYWtlMTZCaXRGcm9tOEJpdFNvdXJjZShjb25z
dCBMQ2hhciogc291cmNlLCBzaXplX3QgbGVuZ3RoKQogCiBTdHJpbmcgU3RyaW5nOjpmcm9tVVRG
OChjb25zdCBMQ2hhciogc3RyaW5nU3RhcnQsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgaWYgKGxl
bmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICBpZiAobGVu
Z3RoID4gTWF4TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogCiAgICAgaWYgKCFzdHJpbmdTdGFy
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDYwYmIxNmVlYjA0YWI5ODYyZWRkZjMyMjlk
Nzk0OTFiNWFmMzU3NTkuLjgyMWYwNTkxNDlhNjkyNjMwNTI4ODJmMzcwZmIzZWEzODIxYjFkZmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTk0LDggKzE5NCw4IEBAIHB1YmxpYzoKICAg
ICBzaXplX3QgZmluZChjb25zdCBMQ2hhciogc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IDApIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+ZmluZChzdHJpbmcsIHN0YXJ0KSA6IG5vdEZv
dW5kOyB9CiAKICAgICAvLyBGaW5kIHRoZSBsYXN0IGluc3RhbmNlIG9mIGEgc2luZ2xlIGNoYXJh
Y3RlciBvciBzdHJpbmcuCi0gICAgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyIGNoYXJhY3Rlciwg
dW5zaWduZWQgc3RhcnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNv
bnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoY2hhcmFjdGVyLCBzdGFy
dCkgOiBub3RGb3VuZDsgfQotICAgIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBTdHJpbmcmIHN0
cmluZywgdW5zaWduZWQgc3RhcnQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpIGNvbnN0IHsgcmV0dXJuIG1faW1wbCA/IG1faW1wbC0+cmV2ZXJzZUZpbmQoc3RyaW5nLmlt
cGwoKSwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQoVUNoYXIg
Y2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IE1heExlbmd0aCkgY29uc3QgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5yZXZlcnNlRmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9
CisgICAgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBz
dGFydCA9IE1heExlbmd0aCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5yZXZlcnNl
RmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFZlY3RvcjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBj
b25zdDsKIApAQCAtMjM3LDggKzIzNyw4IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgdm9pZCB0cnVuY2F0ZSh1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7CiAK
LSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlv
biwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
KSBjb25zdDsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN1YnN0cmluZ1NoYXJpbmdJ
bXBsKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJp
bmcgc3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBNYXhMZW5n
dGgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgc3Vic3RyaW5nU2hhcmlu
Z0ltcGwodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IE1heExlbmd0aCkgY29u
c3Q7CiAgICAgU3RyaW5nIGxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJz
dHJpbmcoMCwgbGVuZ3RoKTsgfQogICAgIFN0cmluZyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNv
bnN0IHsgcmV0dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsg
fQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGRiZDViM2M5YWEwOGQ5M2JhNWYyMWRmY2MyMzIwMTNlOGI4MTNhZTIuLjQ1NGRjOTRhOWEx
MDY3MDU3MzI1ZmQ1NzUyYmZiMzRhMGRkMWI2ZTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTItMTkg
IFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc2lzdGVu
dGx5IHVzZSBNYXhMZW5ndGggZm9yIGFsbCBXVEYgc3RyaW5ncworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyODUzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTcyNjkwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHN0cmVzcy9zdHJpbmctMTZiaXQtcmVwZWF0LW92ZXJmbG93LmpzOiBBZGRlZC4K
KyAgICAgICAgKGNhdGNoKToKKwogMjAxOC0xMi0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2ly
c2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgRXJyb3IgbWVzc2FnZSBmb3IgYC14ICoqIHlgIGNv
bnRhaW5zIGEgdHlwby4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3N0cmluZy0xNmJpdC1y
ZXBlYXQtb3ZlcmZsb3cuanMgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctMTZiaXQtcmVwZWF0LW92
ZXJmbG93LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjNzI0ZmJmNjJiYzg2Nzg2ZDdiMGVkNzc1YTUzYzEwNzdl
NWVlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zdHJpbmctMTZiaXQtcmVw
ZWF0LW92ZXJmbG93LmpzCkBAIC0wLDAgKzEsOSBAQAordmFyIGV4Y2VwdGlvbjsKK3RyeSB7Cisg
ICAgcHJpbnQoJ1x1ZDAwMCcucmVwZWF0KDIqKjMwKSk7Cit9IGNhdGNoIChlKSB7CisgICAgZXhj
ZXB0aW9uID0gZTsKK30KKworaWYgKGV4Y2VwdGlvbiAhPSAiRXJyb3I6IE91dCBvZiBtZW1vcnki
KQorICAgIHRocm93ICJGQUlMRUQiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357811</attachid>
            <date>2018-12-20 07:28:55 -0800</date>
            <delta_ts>2018-12-20 08:06:55 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192853-20181220162748.patch</filename>
            <type>text/plain</type>
            <size>20220</size>
            <attacher name="Tadeu Zagallo">tzagallo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY1NDk1MmNiNGZiZTA0ZTY3MTI5ZGU5
NmMyN2Y2MDk1NDI1MjRjYWUuLjIxNWUyNDU2ZGIwZWYzYmQ1MWQ3N2JhMGFlMmRjZGU1Zjg5YTI5
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTgtMTItMTkgIFRhZGV1IFphZ2FsbG8gIDx0emFn
YWxsb0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc2lzdGVudGx5IHVzZSBNYXhMZW5ndGggZm9y
IGFsbCBXVEYgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkyODUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTcyNjkwNj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBNYXhMZW5ndGggd2FzIGludHJv
ZHVjZWQgdG8gYmUgSU5UX01BWCBmb3IgV1RGOjpTdHJpbmcgYW5kIFN0cmluZ0ltcGwsCisgICAg
ICAgIGJ1dCBhbGwgdGhlIGFzc2VydGlvbnMgd2VyZSBzdGlsbCBkb25lIHVzaW5nIFVJTlRfTUFY
LiBDaGFuZ2UgaXQgdG8KKyAgICAgICAgdXNlIE1heExlbmd0aCBmb3IgYWxsIGNoZWNrcy4KKwor
ICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkSW50ZXJuYWxOb25FbXB0eSk6CisgICAgICAgIChXVEY6
OlN0cmluZ0ltcGw6OnJlYWxsb2NhdGVJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OlN0cmluZ0lt
cGw6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNvbnZlcnRUb0xvd2VyY2Fz
ZVdpdGhvdXRMb2NhbGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjb252ZXJ0VG9VcHBl
cmNhc2VXaXRob3V0TG9jYWxlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y29udmVydFRv
TG93ZXJjYXNlV2l0aExvY2FsZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmNvbnZlcnRU
b1VwcGVyY2FzZVdpdGhMb2NhbGUpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpmb2xkQ2Fz
ZSk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OmZpbmQpOgorICAgICAgICAoV1RGOjpTdHJp
bmdJbXBsOjpyZXBsYWNlKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dXRmOEZvckNoYXJh
Y3RlcnMpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0cnlHZXRVdGY4Rm9yUmFuZ2UgY29u
c3QpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6bGVu
Z3RoT2ZOdWxsVGVybWluYXRlZFN0cmluZyk6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjphZG9wdCk6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om1heEludGVybmFsTGVuZ3RoKToKKyAgICAgICAg
KiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmFwcGVuZCk6
CisgICAgICAgIChXVEY6OlN0cmluZzo6aW5zZXJ0KToKKyAgICAgICAgKFdURjo6U3RyaW5nOjpm
cm9tVVRGOCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6
OlN0cmluZzo6cmV2ZXJzZUZpbmQgY29uc3QpOgorCiAyMDE4LTEyLTE3ICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgU29tZSBidWlsZHMgYXJlIGJyb2tl
biBhZnRlciByMjM5MjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCAwZmMwMWFj
ZTM5YmRhOTQ3OTFiZjc4MTM5MzBhMzQxMmJhN2E5Zjk5Li42MGYzZmQzMmI2NGY2ZWIyNzVjZWM4
ODNhNjYzZWVhYzQ3MGRlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE5
Myw3ICsxOTMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBpbmxpbmUgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdAogICAgIC8vIEFsbG9jYXRlIGEg
c2luZ2xlIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgU3RyaW5nSW1wbAogICAg
IC8vIHN0cnVjdCBhcyB3ZWxsIGFzIHRoZSBkYXRhIHdoaWNoIGl0IGNvbnRhaW5zLiBUaGlzIHJl
bW92ZXMgb25lCiAgICAgLy8gaGVhcCBhbGxvY2F0aW9uIGZyb20gdGhpcyBjYWxsLgotICAgIGlm
IChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAtIHNpemVv
ZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQorICAgIGlmIChsZW5ndGgg
PiBtYXhJbnRlcm5hbExlbmd0aDxDaGFyYWN0ZXJUeXBlPigpKQogICAgICAgICBDUkFTSCgpOwog
ICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihmYXN0TWFs
bG9jKGFsbG9jYXRpb25TaXplPENoYXJhY3RlclR5cGU+KGxlbmd0aCkpKTsKIApAQCAtMjIyLDcg
KzIyMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGlubGluZSBFeHBlY3Rl
ZDxSZWY8U3RyaW5nSW1wbD4sIFVURjhDb252ZXJzaW9uCiAgICAgfQogCiAgICAgLy8gU2FtZSBh
cyBjcmVhdGVVbmluaXRpYWxpemVkKCkgZXhjZXB0IGhlcmUgd2UgdXNlIGZhc3RSZWFsbG9jLgot
ICAgIGlmIChsZW5ndGggPiAoKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAt
IHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpKQorICAgIGlmIChs
ZW5ndGggPiBtYXhJbnRlcm5hbExlbmd0aDxDaGFyYWN0ZXJUeXBlPigpKQogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoVVRGOENvbnZlcnNpb25FcnJvcjo6T3V0T2ZNZW1vcnkpOwogCiAg
ICAgb3JpZ2luYWxTdHJpbmctPn5TdHJpbmdJbXBsKCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogc3RyaW5nKQogICAg
IGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7CiAgICAgc2l6ZV90IGxlbmd0
aCA9IHN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihzdHJpbmcpKTsKLSAgICBp
ZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQorICAgIGlm
IChsZW5ndGggPiBNYXhMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CiAgICAgcmV0dXJuIGNyZWF0
ZShzdHJpbmcsIGxlbmd0aCk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhvdXRMb2NhbGUoKQogICAgICAgICBy
ZXR1cm4gbmV3SW1wbDsKICAgICB9CiAKLSAgICBpZiAobV9sZW5ndGggPiBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKQorICAgIGlmICht
X2xlbmd0aCA+IE1heExlbmd0aCkKICAgICAgICAgQ1JBU0goKTsKICAgICBpbnQzMl90IGxlbmd0
aCA9IG1fbGVuZ3RoOwogCkBAIC00MjksNyArNDI5LDcgQEAgUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OmNvbnZlcnRUb1VwcGVyY2FzZVdpdGhvdXRMb2NhbGUoKQogICAgIC8vIGZldyBhY3R1
YWwgY2FsbHMgdG8gdXBwZXIoKSBhcmUgbm8tb3BzLCBzbyBpdCB3b3VsZG4ndCBiZSB3b3J0aAog
ICAgIC8vIHRoZSBleHRyYSB0aW1lIGZvciBwcmUtc2Nhbm5pbmcuCiAKLSAgICBpZiAobV9sZW5n
dGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWF4KCkpKQorICAgIGlmIChtX2xlbmd0aCA+IE1heExlbmd0aCkKICAgICAgICAgQ1JBU0goKTsK
ICAgICBpbnQzMl90IGxlbmd0aCA9IG1fbGVuZ3RoOwogCkBAIC01NDEsNyArNTQxLDcgQEAgUmVm
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNvbnZlcnRUb0xvd2VyY2FzZVdpdGhMb2NhbGUoY29u
c3QgQXRvbWljU3RyaW5nJiBsb2MKICAgICAvLyB0aGlzIGxhc3QgcGFydCBpbnRvIGEgc2hhcmVk
IGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsb2NhbGUgc3RyaW5nLCBzaW5jZSB0aGlzIGlzCiAgICAg
Ly8ganVzdCBsaWtlIHRoZSBlbmQgb2YgdGhhdCBmdW5jdGlvbi4KIAotICAgIGlmIChtX2xlbmd0
aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
YXgoKSkpCisgICAgaWYgKG1fbGVuZ3RoID4gTWF4TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwog
ICAgIGludCBsZW5ndGggPSBtX2xlbmd0aDsKIApAQCAtNTcyLDcgKzU3Miw3IEBAIFJlZjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9VcHBlcmNhc2VXaXRoTG9jYWxlKGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jCiAgICAgaWYgKCFuZWVkc1R1cmtpc2hDYXNpbmdSdWxlcyhsb2NhbGVJ
ZGVudGlmaWVyKSB8fCBmaW5kKCdpJykgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9VcHBlcmNhc2VXaXRob3V0TG9jYWxlKCk7CiAKLSAgICBpZiAobV9sZW5ndGggPiBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpKQor
ICAgIGlmIChtX2xlbmd0aCA+IE1heExlbmd0aCkKICAgICAgICAgQ1JBU0goKTsKICAgICBpbnQg
bGVuZ3RoID0gbV9sZW5ndGg7CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQCBTbG93UGF0aDoKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChtX2xlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpCisgICAgaWYgKG1fbGVuZ3RoID4g
TWF4TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogCiAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJh
Y3RlcnMgPSBTdHJpbmdWaWV3KCp0aGlzKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKQEAgLTkz
NSw3ICs5MzUsNyBAQCBzaXplX3QgU3RyaW5nSW1wbDo6ZmluZChjb25zdCBMQ2hhciogbWF0Y2hT
dHJpbmcsIHVuc2lnbmVkIGluZGV4KQogICAgIGlmICghbWF0Y2hTdHJpbmcpCiAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKICAgICBzaXplX3QgbWF0Y2hTdHJpbmdMZW5ndGggPSBzdHJsZW4ocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obWF0Y2hTdHJpbmcpKTsKLSAgICBpZiAobWF0Y2hT
dHJpbmdMZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAg
aWYgKG1hdGNoU3RyaW5nTGVuZ3RoID4gTWF4TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogICAg
IHVuc2lnbmVkIG1hdGNoTGVuZ3RoID0gbWF0Y2hTdHJpbmdMZW5ndGg7CiAgICAgaWYgKCFtYXRj
aExlbmd0aCkKQEAgLTEzMDcsNyArMTMwNyw3IEBAIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpyZXBsYWNlKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGhUb1JlcGxhY2UsCiAg
ICAgaWYgKCFsZW5ndGhUb1JlcGxhY2UgJiYgIWxlbmd0aFRvSW5zZXJ0KQogICAgICAgICByZXR1
cm4gKnRoaXM7CiAKLSAgICBpZiAoKGxlbmd0aCgpIC0gbGVuZ3RoVG9SZXBsYWNlKSA+PSAoc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbGVuZ3RoVG9JbnNlcnQpKQorICAg
IGlmICgobGVuZ3RoKCkgLSBsZW5ndGhUb1JlcGxhY2UpID49IChNYXhMZW5ndGggLSBsZW5ndGhU
b0luc2VydCkpCiAgICAgICAgIENSQVNIKCk7CiAKICAgICBpZiAoaXM4Qml0KCkgJiYgKCFzdHJp
bmcgfHwgc3RyaW5nLT5pczhCaXQoKSkpIHsKQEAgLTEzNjQsMTIgKzEzNjQsMTIgQEAgUmVmPFN0
cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlcGxhY2UoVUNoYXIgcGF0dGVybiwgY29uc3QgTENoYXIq
IHJlcGxhY2VtZW50LCB1bnMKICAgICBpZiAoIW1hdGNoQ291bnQpCiAgICAgICAgIHJldHVybiAq
dGhpczsKIAotICAgIGlmIChyZXBTdHJMZW5ndGggJiYgbWF0Y2hDb3VudCA+IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIHJlcFN0ckxlbmd0aCkKKyAgICBpZiAocmVwU3Ry
TGVuZ3RoICYmIG1hdGNoQ291bnQgPiBNYXhMZW5ndGggLyByZXBTdHJMZW5ndGgpCiAgICAgICAg
IENSQVNIKCk7CiAKICAgICB1bnNpZ25lZCByZXBsYWNlU2l6ZSA9IG1hdGNoQ291bnQgKiByZXBT
dHJMZW5ndGg7CiAgICAgdW5zaWduZWQgbmV3U2l6ZSA9IG1fbGVuZ3RoIC0gbWF0Y2hDb3VudDsK
LSAgICBpZiAobmV3U2l6ZSA+PSAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC0gcmVwbGFjZVNpemUpKQorICAgIGlmIChuZXdTaXplID49IChNYXhMZW5ndGggLSByZXBsYWNl
U2l6ZSkpCiAgICAgICAgIENSQVNIKCk7CiAKICAgICBuZXdTaXplICs9IHJlcGxhY2VTaXplOwpA
QCAtMTQ0MCwxMiArMTQ0MCwxMiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVwbGFj
ZShVQ2hhciBwYXR0ZXJuLCBjb25zdCBVQ2hhciogcmVwbGFjZW1lbnQsIHVucwogICAgIGlmICgh
bWF0Y2hDb3VudCkKICAgICAgICAgcmV0dXJuICp0aGlzOwogCi0gICAgaWYgKHJlcFN0ckxlbmd0
aCAmJiBtYXRjaENvdW50ID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC8g
cmVwU3RyTGVuZ3RoKQorICAgIGlmIChyZXBTdHJMZW5ndGggJiYgbWF0Y2hDb3VudCA+IE1heExl
bmd0aCAvIHJlcFN0ckxlbmd0aCkKICAgICAgICAgQ1JBU0goKTsKIAogICAgIHVuc2lnbmVkIHJl
cGxhY2VTaXplID0gbWF0Y2hDb3VudCAqIHJlcFN0ckxlbmd0aDsKICAgICB1bnNpZ25lZCBuZXdT
aXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50OwotICAgIGlmIChuZXdTaXplID49IChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSByZXBsYWNlU2l6ZSkpCisgICAgaWYgKG5l
d1NpemUgPj0gKE1heExlbmd0aCAtIHJlcGxhY2VTaXplKSkKICAgICAgICAgQ1JBU0goKTsKIAog
ICAgIG5ld1NpemUgKz0gcmVwbGFjZVNpemU7CkBAIC0xNTI1LDEwICsxNTI1LDEwIEBAIFJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZXBsYWNlKFN0cmluZ0ltcGwqIHBhdHRlcm4sIFN0cmlu
Z0ltcGwqIHJlcGxhY2VtZW50CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAKICAgICB1bnNp
Z25lZCBuZXdTaXplID0gbV9sZW5ndGggLSBtYXRjaENvdW50ICogcGF0dGVybkxlbmd0aDsKLSAg
ICBpZiAocmVwU3RyTGVuZ3RoICYmIG1hdGNoQ291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkgLyByZXBTdHJMZW5ndGgpCisgICAgaWYgKHJlcFN0ckxlbmd0aCAmJiBt
YXRjaENvdW50ID4gTWF4TGVuZ3RoIC8gcmVwU3RyTGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwog
Ci0gICAgaWYgKG5ld1NpemUgPiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgp
IC0gbWF0Y2hDb3VudCAqIHJlcFN0ckxlbmd0aCkpCisgICAgaWYgKG5ld1NpemUgPiAoTWF4TGVu
Z3RoIC0gbWF0Y2hDb3VudCAqIHJlcFN0ckxlbmd0aCkpCiAgICAgICAgIENSQVNIKCk7CiAKICAg
ICBuZXdTaXplICs9IG1hdGNoQ291bnQgKiByZXBTdHJMZW5ndGg7CkBAIC0xODA0LDcgKzE4MDQs
NyBAQCBFeHBlY3RlZDxDU3RyaW5nLCBVVEY4Q29udmVyc2lvbkVycm9yPiBTdHJpbmdJbXBsOjp1
dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBMQ2hhcgogewogICAgIGlmICghbGVuZ3RoKQogICAgICAg
ICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0gICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCisgICAgaWYgKGxlbmd0aCA+IE1heExlbmd0aCAv
IDMpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChVVEY4Q29udmVyc2lvbkVycm9yOjpP
dXRPZk1lbW9yeSk7CiAgICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGgg
KiAzKTsKICAgICBjaGFyKiBidWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgpOwpAQCAtMTgxOCw3
ICsxODE4LDcgQEAgRXhwZWN0ZWQ8Q1N0cmluZywgVVRGOENvbnZlcnNpb25FcnJvcj4gU3RyaW5n
SW1wbDo6dXRmOEZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIKIHsKICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOwotICAgIGlmIChsZW5ndGggPiBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyAzKQorICAgIGlmIChsZW5ndGggPiBNYXhM
ZW5ndGggLyAzKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoVVRGOENvbnZlcnNpb25F
cnJvcjo6T3V0T2ZNZW1vcnkpOwogICAgIFZlY3RvcjxjaGFyLCAxMDI0PiBidWZmZXJWZWN0b3Io
bGVuZ3RoICogMyk7CiAgICAgY2hhciogYnVmZmVyID0gYnVmZmVyVmVjdG9yLmRhdGEoKTsKQEAg
LTE4NDYsNyArMTg0Niw3IEBAIEV4cGVjdGVkPENTdHJpbmcsIFVURjhDb252ZXJzaW9uRXJyb3I+
IFN0cmluZ0ltcGw6OnRyeUdldFV0ZjhGb3JSYW5nZSh1bnNpZ25lZCBvCiAgICAgLy8gICogV2Ug
Y291bGQgYWxsb2NhdGUgYSBDU3RyaW5nQnVmZmVyIHdpdGggYW4gYXBwcm9wcmlhdGUgc2l6ZSB0
bwogICAgIC8vICAgIGhhdmUgYSBnb29kIGNoYW5jZSBvZiBiZWluZyBhYmxlIHRvIHdyaXRlIHRo
ZSBzdHJpbmcgaW50byB0aGUKICAgICAvLyAgICBidWZmZXIgd2l0aG91dCByZWFsbG9jaW5nIChz
YXksIDEuNSB4IGxlbmd0aCkuCi0gICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSAvIDMpCisgICAgaWYgKGxlbmd0aCA+IE1heExlbmd0aCAvIDMpCiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChVVEY4Q29udmVyc2lvbkVycm9yOjpPdXRPZk1l
bW9yeSk7CiAgICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAxNGE2NmVkMWIzMzgwYWZmNWY0N2Y1ZTIz
YzFjYmU1MTdkYmMyNTU4Li5iZDAxZjJjMjY4NTk5ZGQxMTAwZmYxNTcyYzUxYWFhZDYwNmYzZDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMzc5LDcgKzM3OSw3IEBAIHB1YmxpYzoK
ICAgICAvLyBpdHMgb3duIGNvcHkgb2YgdGhlIHN0cmluZy4KICAgICBSZWY8U3RyaW5nSW1wbD4g
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgUmVmPFN0cmlu
Z0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgUmVmPFN0cmluZ0ltcGw+IHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQg
bGVuZ3RoID0gTWF4TGVuZ3RoKTsKIAogICAgIFVDaGFyIGF0KHVuc2lnbmVkKSBjb25zdDsKICAg
ICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CkBA
IC00MzcsOCArNDM3LDggQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXplX3Qg
ZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwqKSBjb25zdDsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc2l6ZV90IGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJpbmdJ
bXBsKiwgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0OwogCi0gICAgV1RGX0VYUE9SVF9QUklW
QVRFIHNpemVfdCByZXZlcnNlRmluZChVQ2hhciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzaXpl
X3QgcmV2ZXJzZUZpbmQoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc2l6ZV90
IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IE1heExlbmd0aCk7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHNpemVfdCByZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQg
aW5kZXggPSBNYXhMZW5ndGgpOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgc3RhcnRz
V2l0aChjb25zdCBTdHJpbmdJbXBsKikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJv
b2wgc3RhcnRzV2l0aChjb25zdCBTdHJpbmdJbXBsJikgY29uc3Q7CkBAIC00OTUsNiArNDk1LDcg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKENoZWNrZWQ8c2l6ZV90PiB0YWlsRWxlbWVudENvdW50KTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZT4gc3RhdGljIHNpemVfdCBtYXhJbnRlcm5hbExlbmd0aCgp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lPiBzdGF0aWMgc2l6ZV90IHRhaWxPZmZzZXQoKTsKIAog
ICAgIGJvb2wgcmVxdWlyZXNDb3B5KCkgY29uc3Q7CkBAIC01NjksMTAgKzU3MCwxMCBAQCB0ZW1w
bGF0ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
Y29uc3QgU3RyaW5nSW1wbCosCiBzaXplX3QgZmluZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCwgQ29kZVVuaXRNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBpbmRleCA9IDApOwogc2l6ZV90
IGZpbmQoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlv
biwgdW5zaWduZWQgaW5kZXggPSAwKTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFjdGVyVHlwZSos
IHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpOwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc2l6ZV90
IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJh
Y3RlclR5cGUgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZD46Om1heCgpKTsKLXNpemVfdCByZXZlcnNlRmluZChjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLXNpemVfdCByZXZlcnNlRmlu
ZChjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVu
c2lnbmVkIGluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHNpemVfdCByZXZlcnNlRmluZExpbmVUZXJt
aW5hdG9yKGNvbnN0IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIGlu
ZGV4ID0gU3RyaW5nSW1wbDo6TWF4TGVuZ3RoKTsKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+IHNpemVfdCByZXZlcnNlRmluZChjb25zdCBDaGFyYWN0ZXJUeXBlKiwgdW5zaWduZWQg
bGVuZ3RoLCBDaGFyYWN0ZXJUeXBlIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0
cmluZ0ltcGw6Ok1heExlbmd0aCk7CitzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIExDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0
cmluZ0ltcGw6Ok1heExlbmd0aCk7CitzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgTENoYXIqLCB1
bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFN0
cmluZ0ltcGw6Ok1heExlbmd0aCk7CiAKIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4g
Ym9vbCBlcXVhbElnbm9yaW5nTnVsbGl0eShjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFj
aXR5PiYsIFN0cmluZ0ltcGwqKTsKIApAQCAtNzU1LDcgKzc1Niw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+IGlubGluZSB1bnNpZ25lZCBsZW5ndGhPZk51bGxUZXJtaW5hdGVk
U3RyaW5nKGNvCiAgICAgd2hpbGUgKHN0cmluZ1tsZW5ndGhdKQogICAgICAgICArK2xlbmd0aDsK
IAotICAgIFJFTEVBU0VfQVNTRVJUKGxlbmd0aCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWdu
ZWQ+OjptYXgoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobGVuZ3RoIDwgU3RyaW5nSW1wbDo6TWF4
TGVuZ3RoKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCk7CiB9CiAK
QEAgLTk1NCw3ICs5NTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdB
WVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp0cgogICAgICAgICByZXR1
cm4gZW1wdHkoKTsKICAgICB9CiAKLSAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKENoYXJh
Y3RlclR5cGUpKSkgeworICAgIGlmIChsZW5ndGggPiBtYXhJbnRlcm5hbExlbmd0aDxDaGFyYWN0
ZXJUeXBlPigpKSB7CiAgICAgICAgIG91dHB1dCA9IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KQEAgLTk3Myw3ICs5NzQsNyBAQCBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmFkb3B0KFZlY3RvcjxDaGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwg
TwogewogICAgIGlmIChzaXplX3Qgc2l6ZSA9IHZlY3Rvci5zaXplKCkpIHsKICAgICAgICAgQVNT
RVJUKHZlY3Rvci5kYXRhKCkpOwotICAgICAgICBpZiAoc2l6ZSA+IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICAgICAgaWYgKHNpemUgPiBNYXhMZW5ndGgpCiAgICAg
ICAgICAgICBDUkFTSCgpOwogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdJbXBs
KHZlY3Rvci5yZWxlYXNlQnVmZmVyKCksIHNpemUpKTsKICAgICB9CkBAIC0xMTEyLDYgKzExMTMs
MTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjphbGxv
Y2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gdGEKICAgICByZXR1cm4gKHRhaWxPZmZzZXQ8VD4o
KSArIHRhaWxFbGVtZW50Q291bnQgKiBzaXplb2YoVCkpLnVuc2FmZUdldCgpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgoraW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpt
YXhJbnRlcm5hbExlbmd0aCgpCit7CisgICAgLy8gSW4gb3JkZXIgdG8gbm90IG92ZXJmbG93IHRo
ZSB1bnNpZ25lZCBsZW5ndGgsIHRoZSBjaGVjayBmb3IgKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSAtIHNpemVvZihTdHJpbmdJbXBsKSkgaXMgbmVlZGVkIHdoZW4gc2l6ZW9m
KENoYXJhY3RlclR5cGUpID09IDIuCisgICAgcmV0dXJuIHN0ZDo6bWluKHN0YXRpY19jYXN0PHNp
emVfdD4oTWF4TGVuZ3RoKSwgKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAt
IHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoQ2hhcmFjdGVyVHlwZSkpOworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgc2l6ZV90IFN0cmluZ0ltcGw6OnRhaWxPZmZzZXQoKQog
ewogI2lmIENPTVBJTEVSKE1TVkMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggYzk2
Y2M5OTFlZjg4NGYyOGZlOWUxNzRhMzE4ZTAwYmQ2YjIxN2Y3NC4uMjQ4ZmMzNWUxY2UyY2ExMjE3
MDg0MDQzNmE4NTFiZjI1NDJjMDYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAt
OTksNyArOTksNyBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKGNvbnN0IFN0cmluZyYgb3RoZXJTdHJp
bmcpCiAKICAgICBhdXRvIGxlbmd0aCA9IG1faW1wbC0+bGVuZ3RoKCk7CiAgICAgYXV0byBvdGhl
ckxlbmd0aCA9IG90aGVyU3RyaW5nLm1faW1wbC0+bGVuZ3RoKCk7Ci0gICAgaWYgKG90aGVyTGVu
Z3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gbGVuZ3RoKQorICAg
IGlmIChvdGhlckxlbmd0aCA+IE1heExlbmd0aCAtIGxlbmd0aCkKICAgICAgICAgQ1JBU0goKTsK
IAogICAgIGlmIChtX2ltcGwtPmlzOEJpdCgpICYmIG90aGVyU3RyaW5nLm1faW1wbC0+aXM4Qml0
KCkpIHsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFN0cmluZzo6YXBwZW5kKExDaGFyIGNoYXJh
Y3RlcikKICAgICAgICAgYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV9pbXBsLT5sZW5ndGgoKSA+PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCisgICAgaWYgKG1faW1wbC0+bGVuZ3RoKCkg
Pj0gTWF4TGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogICAgIExDaGFyKiBkYXRhOwogICAgIGF1
dG8gbmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9pbXBsLT5sZW5n
dGgoKSArIDEsIGRhdGEpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQo
VUNoYXIgY2hhcmFjdGVyKQogICAgICAgICBhcHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGNoYXJh
Y3RlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2ltcGwtPmxlbmd0aCgp
ID49IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKKyAgICBpZiAobV9pbXBs
LT5sZW5ndGgoKSA+PSBNYXhMZW5ndGgpCiAgICAgICAgIENSQVNIKCk7CiAgICAgVUNoYXIqIGRh
dGE7CiAgICAgYXV0byBuZXdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0aWFsaXplZCht
X2ltcGwtPmxlbmd0aCgpICsgMSwgZGF0YSk7CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBTdHJp
bmc6Omluc2VydChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgcG9zaXRpb24pCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobGVuZ3RoVG9JbnNlcnQgPiBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBsZW5ndGgoKSkKKyAgICBpZiAobGVuZ3RoVG9J
bnNlcnQgPiBNYXhMZW5ndGggLSBsZW5ndGgoKSkKICAgICAgICAgQ1JBU0goKTsKIAogICAgIGlm
IChpczhCaXQoKSAmJiBzdHJpbmcuaXM4Qml0KCkpIHsKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lk
IFN0cmluZzo6YXBwZW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVk
IGxlbmd0aFRvQXBwZW5kKQogICAgIHVuc2lnbmVkIHN0ckxlbmd0aCA9IG1faW1wbC0+bGVuZ3Ro
KCk7CiAKICAgICBpZiAobV9pbXBsLT5pczhCaXQoKSkgewotICAgICAgICBpZiAobGVuZ3RoVG9B
cHBlbmQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzdHJMZW5ndGgp
CisgICAgICAgIGlmIChsZW5ndGhUb0FwcGVuZCA+IE1heExlbmd0aCAtIHN0ckxlbmd0aCkKICAg
ICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIExDaGFyKiBkYXRhOwogICAgICAgICBhdXRvIG5l
d0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKHN0ckxlbmd0aCArIGxlbmd0
aFRvQXBwZW5kLCBkYXRhKTsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFN0cmluZzo6YXBwZW5k
KGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzVG9BcHBlbmQsIHVuc2lnbmVkIGxlbmd0aFRvQXBwZW5k
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIC0gc3RyTGVuZ3RoKQorICAgIGlmIChs
ZW5ndGhUb0FwcGVuZCA+IE1heExlbmd0aCAtIHN0ckxlbmd0aCkKICAgICAgICAgQ1JBU0goKTsK
ICAgICBVQ2hhciogZGF0YTsKICAgICBhdXRvIG5ld0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVV
bmluaXRpYWxpemVkKGxlbmd0aCgpICsgbGVuZ3RoVG9BcHBlbmQsIGRhdGEpOwpAQCAtMjU4LDcg
KzI1OCw3IEBAIHZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnNUb0Fw
cGVuZCwgdW5zaWduZWQgbGVuZ3RoVG9BcHBlbmQpCiAgICAgdW5zaWduZWQgc3RyTGVuZ3RoID0g
bV9pbXBsLT5sZW5ndGgoKTsKICAgICAKICAgICBBU1NFUlQoY2hhcmFjdGVyc1RvQXBwZW5kKTsK
LSAgICBpZiAobGVuZ3RoVG9BcHBlbmQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkgLSBzdHJMZW5ndGgpCisgICAgaWYgKGxlbmd0aFRvQXBwZW5kID4gTWF4TGVuZ3RoIC0g
c3RyTGVuZ3RoKQogICAgICAgICBDUkFTSCgpOwogICAgIFVDaGFyKiBkYXRhOwogICAgIGF1dG8g
bmV3SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoc3RyTGVuZ3RoICsgbGVu
Z3RoVG9BcHBlbmQsIGRhdGEpOwpAQCAtODg1LDcgKzg4NSw3IEBAIFN0cmluZyBTdHJpbmc6Om1h
a2UxNkJpdEZyb204Qml0U291cmNlKGNvbnN0IExDaGFyKiBzb3VyY2UsIHNpemVfdCBsZW5ndGgp
CiAKIFN0cmluZyBTdHJpbmc6OmZyb21VVEY4KGNvbnN0IExDaGFyKiBzdHJpbmdTdGFydCwgc2l6
ZV90IGxlbmd0aCkKIHsKLSAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQorICAgIGlmIChsZW5ndGggPiBNYXhMZW5ndGgpCiAgICAgICAgIENSQVNI
KCk7CiAKICAgICBpZiAoIXN0cmluZ1N0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXgg
NjBiYjE2ZWViMDRhYjk4NjJlZGRmMzIyOWQ3OTQ5MWI1YWYzNTc1OS4uODIxZjA1OTE0OWE2OTI2
MzA1Mjg4MmYzNzBmYjNlYTM4MjFiMWRmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0x
OTQsOCArMTk0LDggQEAgcHVibGljOgogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBzdHJp
bmcsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5m
aW5kKHN0cmluZywgc3RhcnQpIDogbm90Rm91bmQ7IH0KIAogICAgIC8vIEZpbmQgdGhlIGxhc3Qg
aW5zdGFuY2Ugb2YgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIHN0cmluZy4KLSAgICBzaXplX3QgcmV2
ZXJzZUZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5y
ZXZlcnNlRmluZChjaGFyYWN0ZXIsIHN0YXJ0KSA6IG5vdEZvdW5kOyB9Ci0gICAgc2l6ZV90IHJl
dmVyc2VGaW5kKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBzdGFydCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3QgeyByZXR1cm4gbV9pbXBsID8gbV9p
bXBsLT5yZXZlcnNlRmluZChzdHJpbmcuaW1wbCgpLCBzdGFydCkgOiBub3RGb3VuZDsgfQorICAg
IHNpemVfdCByZXZlcnNlRmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gTWF4
TGVuZ3RoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKGNoYXJh
Y3Rlciwgc3RhcnQpIDogbm90Rm91bmQ7IH0KKyAgICBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIHN0YXJ0ID0gTWF4TGVuZ3RoKSBjb25zdCB7IHJldHVy
biBtX2ltcGwgPyBtX2ltcGwtPnJldmVyc2VGaW5kKHN0cmluZy5pbXBsKCksIHN0YXJ0KSA6IG5v
dEZvdW5kOyB9CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVmVjdG9yPFVDaGFyPiBjaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpIGNvbnN0OwogCkBAIC0yMzcsOCArMjM3LDggQEAgcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVtb3ZlKHVuc2lnbmVkIHBvc2l0aW9u
LCB1bnNpZ25lZCBsZW5ndGggPSAxKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
c3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGggPSBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0OwotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgc3Vic3RyaW5nU2hhcmluZ0ltcGwodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24s
IHVuc2lnbmVkIGxlbmd0aCA9IE1heExlbmd0aCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyBzdWJzdHJpbmdTaGFyaW5nSW1wbCh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWdu
ZWQgbGVuZ3RoID0gTWF4TGVuZ3RoKSBjb25zdDsKICAgICBTdHJpbmcgbGVmdCh1bnNpZ25lZCBs
ZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygwLCBsZW5ndGgpOyB9CiAgICAgU3RyaW5n
IHJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKHRoaXMtPmxl
bmd0aCgpIC0gbGVuZ3RoLCBsZW5ndGgpOyB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGJkNWIzYzlhYTA4ZDkzYmE1ZjIxZGZjYzIz
MjAxM2U4YjgxM2FlMi4uNzBiOGQ5NGU4MmQzOTM1MDZmMDNhNzNiM2IyM2ZjNjQxNTA5ZDAzNyAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxOC0xMi0xOSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxl
LmNvbT4KKworICAgICAgICBXVEY6OlN0cmluZyBhbmQgU3RyaW5nSW1wbCBvdmVyZmxvdyBNYXhM
ZW5ndGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
Mjg1MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDU3MjY5MDY+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBzdHJlc3Mvc3RyaW5nLTE2Yml0LXJlcGVhdC1v
dmVyZmxvdy5qczogQWRkZWQuCisgICAgICAgIChjYXRjaCk6CisKIDIwMTgtMTItMTggIFJvc3Mg
S2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIEVycm9yIG1lc3Nh
Z2UgZm9yIGAteCAqKiB5YCBjb250YWlucyBhIHR5cG8uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9zdHJpbmctMTZiaXQtcmVwZWF0LW92ZXJmbG93LmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3Ry
aW5nLTE2Yml0LXJlcGVhdC1vdmVyZmxvdy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzcyNGZiZjYyYmM4Njc4
NmQ3YjBlZDc3NWE1M2MxMDc3ZTVlZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3Mvc3RyaW5nLTE2Yml0LXJlcGVhdC1vdmVyZmxvdy5qcwpAQCAtMCwwICsxLDkgQEAKK3ZhciBl
eGNlcHRpb247Cit0cnkgeworICAgIHByaW50KCdcdWQwMDAnLnJlcGVhdCgyKiozMCkpOworfSBj
YXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbiA9IGU7Cit9CisKK2lmIChleGNlcHRpb24gIT0gIkVy
cm9yOiBPdXQgb2YgbWVtb3J5IikKKyAgICB0aHJvdyAiRkFJTEVEIjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>