<?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>21312</bug_id>
          
          <creation_ts>2008-10-02 10:50:50 -0700</creation_ts>
          <short_desc>text-transform: lowercase is not lang-dependent (Turkish languages : tr,az)</short_desc>
          <delta_ts>2013-10-04 23:37:10 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/International/tests/sec-text-transform-1</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67586</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jungshik Shin">jshin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ajlyon</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cbguder</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ian</cc>
    
    <cc>isherman</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mitz</cc>
    
    <cc>nickshanks</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.bugzilla</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93752</commentid>
    <comment_count>0</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2008-10-02 10:50:50 -0700</bug_when>
    <thetext>1. Go to the URL above and scroll down the Turkish section

Expected: U+0049 should be transformed to U+0131 (lowercase letter dotless I). U+0130 (latin capital letter dotted I) should be transformed to U+0069 (lowercase I = i).

Actual: U+0049 and U+0130 are transformed to U+0069 and &lt;U+0069, U+0307&gt; (&apos;i&apos; followed by a combining mark dot above). 

This is a subset of the problem (not honoring &apos;lang&apos;/&apos;xml:lang&apos; in CSS).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93754</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-02 11:05:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/3611341&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112599</commentid>
    <comment_count>2</comment_count>
      <attachid>28363</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-03-06 09:18:30 -0800</bug_when>
    <thetext>Created attachment 28363
tentative 1st step toward a fix

I realized that Eric added the code language &apos;calcuation&apos; for pseudo-lang selector support (so my previous comment about the lack of lang-dependent behavior is wrong). To refer to the value of lang in text transform (RenderText), I moved the code to Node. 

The second part will be to make upper/lower/capitalize lang-dependent (using ICU for ports that use it and by other means elsewhere)

I also want to use this for bug 10874 (and bug 18085) as well.  

Before going further, I&apos;d like to know whether I&apos;m on the right track. So, it&apos;d be nice if any of you can take a quick look. Thanks !</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112855</commentid>
    <comment_count>3</comment_count>
      <attachid>28363</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-03-09 10:41:01 -0700</bug_when>
    <thetext>Comment on attachment 28363
tentative 1st step toward a fix

I don&apos;t expect r+ for this patch (this patch even has &apos;#if 0-enclosed code&apos;), but I like to get some (potentially harsh) feedback to move things forward because the patch is also necessary for lang-based font selection bugs (mentioned earlier).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112858</commentid>
    <comment_count>4</comment_count>
      <attachid>28363</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-03-09 10:49:24 -0700</bug_when>
    <thetext>Comment on attachment 28363
tentative 1st step toward a fix

I realized that bug 16801 deals with this issue and uploaded this path there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112859</commentid>
    <comment_count>5</comment_count>
      <attachid>28363</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-09 10:52:26 -0700</bug_when>
    <thetext>Comment on attachment 28363
tentative 1st step toward a fix

There are 3 things done here:

    1) Move the language-determining code for the style system from CSSStyleSelector into a member function in the Node class.
    2) Adding a cache in every Node object to store that language code.
    3) Changes to the logic of the language-determining code.

I can&apos;t easily comment on much of (3), because the patch doesn&apos;t show the change from the old to the new due to the use of #if 0.

There are some issues with (1):

    A) The style system only needs the language for elements, not other nodes, I would have the code in Element, not Node. But we won&apos;t want to dedicate 4 bytes in every Element to caching the language for that element. See below. In general, we need to keep the number of function members in these basic classes to a minimum, so it&apos;s unfortunate that the code is moving here.

    B) Breaking the language-computation out into a separate function is fine. That could be done as a first step of refactoring inside the CSSStyleSelector class. I don&apos;t think the function needs to be a member of the Node classes.

The biggest problems are with (2):

    C) There&apos;s no way we can make all nodes 4 bytes bigger just to make it faster to retrieve the value of the lang attribute, so that aspect of this patch is unacceptable. There are techniques we could use, such as putting the cached language into the rare data or using an external hash table that could keep the cost down for typical elements.

    D) There&apos;s no code to invalidate the cached language when attributes change or when the DOM tree structure changes. For example, if you store the value of an attribute such as langAttr, you then need code to deal with the case where that attribute changes. This becomes even more complex when you cache the value of the lang attribute of a parent. Then that parent&apos;s attribute changes and somehow the cached value needs to be invalidated for all the descendants of that parent. The cost of a cache is the invalidation cost, and since there&apos;s no invalidation here it&apos;s unclear we could afford it.

One issue with (3):

    E) It&apos;s generally much better to use iteration to walk through the parent list than to use recursion; we don&apos;t want an algorithm that uses machine stack proportional to the depth of the DOM tree if we can avoid it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112875</commentid>
    <comment_count>6</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2009-03-09 12:01:12 -0700</bug_when>
    <thetext>Thanks a lot for your very extensive review comment. In bug 16801 comment 3, Dave mentioned that lang should be in the style. Your comment on RareData led me to find that ElementRareData has access to computedStyle. So, if lang becomes available in the style, perhaps, we can just access it via ElementRareData. Then, I think there&apos;s no need to add it to ElementRareData (let alone Element or Node). 
 </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201717</commentid>
    <comment_count>7</comment_count>
    <who name="Avram Lyon">ajlyon</who>
    <bug_when>2010-03-18 23:10:04 -0700</bug_when>
    <thetext>Before this lands, please note that there are other affected languages. The Latin scripts for Crimean Tatar (crh), Volga Tatar (tt), and Bashkir (ba) all use the Turkish/Azerbaijani-style i/İ and ı/I pairings. All three have both Cyrillic and Latin scripts, and only the latter is affected, so perhaps this would require the use of script variants (e.g., tt-Latn), but Azerbaijani also has a well-represented Cyrillic script. I would like to see the new text-transform behavior apply to tt, crh, and ba as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426966</commentid>
    <comment_count>8</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-06-24 10:49:02 -0700</bug_when>
    <thetext>Ironically, Element.cpp has computeInheritedLanguage almost identical to my patch here with the same shortcomings :-) It&apos;s added by isherman on 2010-09-02. ( http://trac.webkit.org/changeset/66647 )


Anyway, I&apos;ll try to use it for text-transform. 

I&apos;m also looking into the possibility of mapping &apos;lang&apos; to &apos;-webkit-locale&apos; in HTMLElement.cpp (the same way HTML attribute dir is mapped to CSS property direction. I don&apos;t understand why we introduced &apos;-webkit-locale&apos; when we have &apos;lang&apos; to determine what locale to use for  hyphenation, line breaking, text-transform,  font selection, etc.  

However, in retrospect, introducing &apos;-webkit-locale&apos; seems to be a brilliant move because that way, Darin&apos;s comment in this bug is almost automatically addressed. 

Perhaps, I&apos;ll do that in bug 16801.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427148</commentid>
    <comment_count>9</comment_count>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-06-24 14:28:03 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Ironically, Element.cpp has computeInheritedLanguage almost identical to my patch here with the same shortcomings :-) It&apos;s added by isherman on 2010-09-02. ( http://trac.webkit.org/changeset/66647 )

Does my patch really have the same issues (I assume you&apos;re referring to comment #5)?  It does not add any caching, so it looks to me like it satisfies Darin&apos;s concerns.  If not, though, we should probably fix it :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427174</commentid>
    <comment_count>10</comment_count>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-06-24 14:57:34 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Ironically, Element.cpp has computeInheritedLanguage almost identical to my patch here with the same shortcomings :-) It&apos;s added by isherman on 2010-09-02. ( http://trac.webkit.org/changeset/66647 )
&gt; 
&gt; Does my patch really have the same issues (I assume you&apos;re referring to comment #5)?  It does not add any caching, so it looks to me like it satisfies Darin&apos;s concerns.  If not, though, we should probably fix it :-)

Sorry I missed two differences (recursion vs iteration and caching). I&apos;ll try to map &apos;lang&apos; (HTML attribute) to &apos;-webkit-locale&apos; (CSS property), which may speed things up for font-fallback handing patch (in bug 10874).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439533</commentid>
    <comment_count>11</comment_count>
      <attachid>101403</attachid>
    <who name="Jungshik Shin">jshin</who>
    <bug_when>2011-07-19 15:58:11 -0700</bug_when>
    <thetext>Created attachment 101403
pilot patch (to work with/test the patch for bug 16801) 

This is not meant to be for review or anything. It&apos;s just to test the patch for bug 16801.  

When bug 16801 is fixed, perhaps I have to add a version of String::makeUpper() and String::makeLower() that accept a locale as an input.   

With the patch for bug 16801 and this patch, it works correctly for Turkish tests at http://www.w3.org/International/tests/tests-html-css/list-text-transform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936506</commentid>
    <comment_count>12</comment_count>
      <attachid>213441</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-04 22:05:47 -0700</bug_when>
    <thetext>Created attachment 213441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936507</commentid>
    <comment_count>13</comment_count>
      <attachid>213441</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-04 22:20:41 -0700</bug_when>
    <thetext>Comment on attachment 213441
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.cpp:570
&gt; +#if !USE(ICU_UNICODE)
&gt; +    UNUSED_PARAM(localeIdentifier);
&gt; +    return lower();
&gt; +#else

Can we move this stuff into wtf/unicode?
We can just leave the non-ICU version fallback to the regular lower().

&gt; Source/WTF/wtf/text/StringImpl.cpp:572
&gt; +    if (!(localeIdentifier == &quot;tr&quot; || localeIdentifier == &quot;az&quot;))

It seems somewhat fragile to hard-code these two languages.

&gt; Source/WTF/wtf/text/StringImpl.cpp:587
&gt; +    u_strToLower(data16, realLength, source16, length, &quot;tr&quot;, &amp;status);

The documentation says &amp;status cannot indicate a failure. So maybe we need to reset the value here?
But we&apos;re probably not getting the right real length if there was a failure anyway so I&apos;m not sure if that&apos;s what we&apos;re supposed to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936508</commentid>
    <comment_count>14</comment_count>
      <attachid>213441</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-04 22:25:27 -0700</bug_when>
    <thetext>Comment on attachment 213441
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.cpp:584
&gt; +    if (U_SUCCESS(status) &amp;&amp; realLength == length)

Is it correct to hard-code &quot;tr&quot; here?  Perhaps this deserves a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936510</commentid>
    <comment_count>15</comment_count>
      <attachid>213441</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-04 22:29:21 -0700</bug_when>
    <thetext>Comment on attachment 213441
Patch

Attachment 213441 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3334026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936514</commentid>
    <comment_count>16</comment_count>
      <attachid>213441</attachid>
    <who name="">mitz</who>
    <bug_when>2013-10-04 22:38:46 -0700</bug_when>
    <thetext>Comment on attachment 213441
Patch

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

&gt;&gt; Source/WTF/wtf/text/StringImpl.cpp:572
&gt;&gt; +    if (!(localeIdentifier == &quot;tr&quot; || localeIdentifier == &quot;az&quot;))
&gt; 
&gt; It seems somewhat fragile to hard-code these two languages.

Is it sufficient to check for these two strings? Shouldn’t localeIdentifier values such as &quot;tr-TR&quot; or even “tR-Tr” be handled too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936518</commentid>
    <comment_count>17</comment_count>
      <attachid>213442</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-04 22:54:13 -0700</bug_when>
    <thetext>Created attachment 213442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936519</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-04 22:56:05 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Shouldn’t localeIdentifier values such as &quot;tr-TR&quot; or even “tR-Tr” be handled too?

Possibly.

If so, then we need test coverage for that.

And if true, then it seems wrong for us to use the type AtomicString for localeIdentifier values in RenderStyle, since equality comparison is an inappropriate way to interpret them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936521</commentid>
    <comment_count>19</comment_count>
      <attachid>213442</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-04 23:02:26 -0700</bug_when>
    <thetext>Comment on attachment 213442
Patch

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

&gt; Source/WTF/wtf/text/StringImpl.cpp:577
&gt; +    if (!(localeIdentifier == &quot;tr&quot; || localeIdentifier == &quot;az&quot;))
&gt; +        return lower();

We should do case-insensitive comparison according to BCP47 format as specified in
http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-lang-and-xml:lang-attributes

We can add then add test cases for TR-TR, etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936527</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-04 23:37:10 -0700</bug_when>
    <thetext>Committed r156948: &lt;http://trac.webkit.org/changeset/156948&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28363</attachid>
            <date>2009-03-06 09:18:30 -0800</date>
            <delta_ts>2011-07-19 15:58:11 -0700</delta_ts>
            <desc>tentative 1st step toward a fix</desc>
            <filename>21312.patch.1</filename>
            <type>text/plain</type>
            <size>2664</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA0MTQ0OSkKKysrIFdlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzQ2LDcgKzIz
NDYsOCBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MYW5n
OiB7CiAgICAgICAgICAgICAgICAgTm9kZSogbiA9IGU7Ci0gICAgICAgICAgICAgICAgQXRvbWlj
U3RyaW5nIHZhbHVlOworICAgICAgICAgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZSA9IG4tPmNh
bGN1bGF0ZUxhbmd1YWdlQW5kUmV0cmlldmUoKTsKKyNpZiAwCiAgICAgICAgICAgICAgICAgLy8g
VGhlIGxhbmd1YWdlIHByb3BlcnR5IGlzIGluaGVyaXRlZCwgc28gd2UgaXRlcmF0ZSBvdmVyIHRo
ZSBwYXJlbnRzCiAgICAgICAgICAgICAgICAgLy8gdG8gZmluZCB0aGUgZmlyc3QgbGFuZ3VhZ2Uu
CiAgICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYgdmFsdWUuaXNFbXB0eSgpKSB7CkBAIC0yMzYx
LDYgKzIzNjIsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAK
ICAgICAgICAgICAgICAgICAgICAgbiA9IG4tPnBhcmVudCgpOwogICAgICAgICAgICAgICAgIH0K
KyNlbmRpZgogICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXJndW1lbnQgPSBz
ZWwtPmFyZ3VtZW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSB8fCAh
dmFsdWUuc3RhcnRzV2l0aChhcmd1bWVudCwgZmFsc2UpKQogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKSW5kZXg6IFdlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL05vZGUuY3BwCShyZXZpc2lvbiA0MTQ0OSkKKysrIFdlYkNvcmUvZG9tL05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjU0LDYgKzMyNTQsMjUgQEAgdm9pZCBOb2RlOjpzZXRPbnVubG9h
ZChQYXNzUmVmUHRyPEV2ZW50TAogICAgIHNldElubGluZUV2ZW50TGlzdGVuZXJGb3JUeXBlKGV2
ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgZXZlbnRMaXN0ZW5lcik7CiB9CiAKK0F0b21pY1N0cmlu
ZyBOb2RlOjpjYWxjdWxhdGVMYW5ndWFnZUFuZFJldHJpZXZlKCkKK3sKKyAgICBpZiAoIW1fbGFu
Z3VhZ2UuaXNFbXB0eSgpKSAKKyAgICAgICAgcmV0dXJuIG1fbGFuZ3VhZ2U7CisgICAgaWYgKGlz
RWxlbWVudE5vZGUoKSkgeworICAgICAgICAvLyBTcGVjOiB4bWw6bGFuZyB0YWtlcyBwcmVjZWRl
bmNlIC0tIGh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS8jQ183CisgICAgICAgIEVsZW1lbnQq
IGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4odGhpcyk7CisgICAgICAgIG1fbGFuZ3VhZ2UgPSBl
LT5nZXRBdHRyaWJ1dGUoWE1MTmFtZXM6OmxhbmdBdHRyKTsKKyAgICAgICAgaWYgKG1fbGFuZ3Vh
Z2UuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9sYW5ndWFnZSA9IGUtPmdldEF0dHJpYnV0ZShs
YW5nQXR0cik7CisgICAgfSBlbHNlIGlmIChpc0RvY3VtZW50Tm9kZSgpKSB7CisgICAgICAgIC8v
IGNoZWNraW5nIHRoZSBNSU1FIGNvbnRlbnQtbGFuZ3VhZ2UKKyAgICAgICAgbV9sYW5ndWFnZSA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPmNvbnRlbnRMYW5ndWFnZSgpOworICAgIH0K
KyAgICBpZiAobV9sYW5ndWFnZS5pc0VtcHR5KCkgJiYgcGFyZW50KCkpCisgICAgICAgIG1fbGFu
Z3VhZ2UgPSBwYXJlbnQoKS0+Y2FsY3VsYXRlTGFuZ3VhZ2VBbmRSZXRyaWV2ZSgpOworICAgIHJl
dHVybiBtX2xhbmd1YWdlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNpZm5kZWYg
TkRFQlVHCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vTm9kZS5oCShyZXZpc2lvbiA0MTQ0OSkKKysrIFdlYkNvcmUvZG9tL05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQ2LDYgKzY0Niw4IEBAIHB1YmxpYzoKICAgICBFdmVudExpc3RlbmVyKiBv
bnVubG9hZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0T251bmxvYWQoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPik7CiAKKyAgICBBdG9taWNTdHJpbmcgY2FsY3VsYXRlTGFuZ3VhZ2VBbmRSZXRyaWV2
ZSgpOworCiAgICAgdXNpbmcgVHJlZVNoYXJlZDxOb2RlPjo6cmVmOwogICAgIHVzaW5nIFRyZWVT
aGFyZWQ8Tm9kZT46OmRlcmVmOwogIApAQCAtNjc3LDYgKzY3OSw3IEBAIHByaXZhdGU6CiAgICAg
Tm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7CiAgICAgUmVuZGVyT2JqZWN0KiBt
X3JlbmRlcmVyOworICAgIEF0b21pY1N0cmluZyBtX2xhbmd1YWdlOwogCiAgICAgdW5zaWduZWQg
bV9zdHlsZUNoYW5nZSA6IDI7CiAgICAgYm9vbCBtX2hhc0lkIDogMTsK
</data>
<flag name="review"
          id="13925"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101403</attachid>
            <date>2011-07-19 15:58:11 -0700</date>
            <delta_ts>2013-10-04 22:05:41 -0700</delta_ts>
            <desc>pilot patch (to work with/test the patch for bug 16801) </desc>
            <filename>21312.patch.0</filename>
            <type>text/plain</type>
            <size>2807</size>
            <attacher name="Jungshik Shin">jshin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCShyZXZpc2lvbiA5MDc4OSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw1
NiBAQAogICAgICpzdHJpbmcgPSBTdHJpbmc6OmFkb3B0KGRhdGEpOwogfQogCitzdGF0aWMgdm9p
ZCB0cmFuc2Zvcm1Ub0xvd2VyKFN0cmluZyYgdGV4dCwgTm9kZSogbm9kZSkgeworICAgIHdoaWxl
ICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQorICAg
ICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICBTdHJpbmcgbG9jYWxlID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KG5vZGUpLT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKKyAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAvLyBjb25zaWRlciB1c2luZyB1
Y2FzZW1hcCBBUEkgdG8gY2FjaGUgdGhlIGNhc2UgbWFwcGVyLgorICAgIGNvbnN0IFVDaGFyKiBz
cmMgPSB0ZXh0LmNoYXJhY3RlcnMoKTsKKyAgICBpbnQgc3JjTGVuZ3RoID0gdGV4dC5sZW5ndGgo
KTsKKyAgICBVQ2hhciogcmVzdWx0OworICAgIGludCByZXN1bHRMZW5ndGggPSBzcmNMZW5ndGg7
CisgICAgU3RyaW5nIHRtcCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChyZXN1bHRMZW5n
dGgsIHJlc3VsdCk7CisgICAgLyppbnQgcmVhbExlbmd0aCA9ICovIHVfc3RyVG9Mb3dlcihyZXN1
bHQsIHJlc3VsdExlbmd0aCwgc3JjLCBzcmNMZW5ndGgsIGxvY2FsZS5hc2NpaSgpLmRhdGEoKSwg
JnN0YXR1cyk7CisgICAgaWYgKFVfU1VDQ0VTUyhzdGF0dXMpKQorICAgICAgICB0ZXh0LnN3YXAo
dG1wKTsKKyNpZiAwCisgICAgZWxzZSBpZiAoc3RhdHVzID09IFVfRVJST1JfQlVGRkVSX09WRVJG
TE9XKSB7CisgICAgICAgIHRtcCA9IFN0cmluZzo6Y3JlYXRlVW5pdGlhbGl6ZWQocmVzdWx0LCBy
ZWFsTGVuZ3RoKTsKKyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBpZiAo
cmVhbExlbmd0aCA9PSB1X3N0clRvTG93ZXIocmVzdWx0LCByZWFsTGVuZ3RoLCBzcmMsIHNyY0xl
bmd0aCwgbG9jYWxlLmFzY2lpKCksICZzdGF0dXMpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKQorCisg
ICAgICAgICAgICB0ZXh0ID0gdG1wOworICAgIH0KKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCB0
cmFuc2Zvcm1Ub1VwcGVyKFN0cmluZyYgdGV4dCwgTm9kZSogbm9kZSkgeworICAgIHdoaWxlICgh
bm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmICFub2RlLT5pc0RvY3VtZW50Tm9kZSgpKQorICAgICAg
bm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICBTdHJpbmcgbG9jYWxlID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG5vZGUpLT5jb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKKyAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAvLyBjb25zaWRlciB1c2luZyB1Y2Fz
ZW1hcCBBUEkgdG8gY2FjaGUgdGhlIGNhc2UgbWFwcGVyLgorICAgIGNvbnN0IFVDaGFyKiBzcmMg
PSB0ZXh0LmNoYXJhY3RlcnMoKTsKKyAgICBpbnQgc3JjTGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsK
KyAgICBVQ2hhciogcmVzdWx0OworICAgIGludCByZXN1bHRMZW5ndGggPSBzcmNMZW5ndGg7Cisg
ICAgU3RyaW5nIHRtcCA9IFN0cmluZzo6Y3JlYXRlVW5pbml0aWFsaXplZChyZXN1bHRMZW5ndGgs
IHJlc3VsdCk7CisgICAgLyppbnQgcmVhbExlbmd0aCA9Ki8gdV9zdHJUb1VwcGVyKHJlc3VsdCwg
cmVzdWx0TGVuZ3RoLCBzcmMsIHNyY0xlbmd0aCwgbG9jYWxlLmFzY2lpKCkuZGF0YSgpLCAmc3Rh
dHVzKTsKKyAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykpCisgICAgICAgIHRleHQuc3dhcCh0bXAp
OworI2lmIDAKKyAgICBlbHNlIGlmIChzdGF0dXMgPT0gVV9FUlJPUl9CVUZGRVJfT1ZFUkZMT1cp
IHsKKyAgICAgICAgdG1wID0gU3RyaW5nOjpjcmVhdGVVbml0aWFsaXplZChyZXN1bHQsIHJlYWxM
ZW5ndGgpOworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGlmIChyZWFs
TGVuZ3RoID09IHVfc3RyVG9Mb3dlcihyZXN1bHQsIHJlYWxMZW5ndGgsIHNyYywgc3JjTGVuZ3Ro
LCBsb2NhbGUuYXNjaWkoKSwgJnN0YXR1cykgJiYgVV9TVUNDRVNTKHN0YXR1cykpCisKKyAgICAg
ICAgICAgIHRleHQgPSB0bXA7CisgICAgfQorI2VuZGlmCit9CisKIFJlbmRlclRleHQ6OlJlbmRl
clRleHQoTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBzdHIpCiAgICAgIDogUmVu
ZGVyT2JqZWN0KG5vZGUpCiAgICAgICwgbV9taW5XaWR0aCgtMSkKQEAgLTExNDMsMTAgKzExOTMs
MTIgQEAKICAgICAgICAgbWFrZUNhcGl0YWxpemVkKCZ0ZXh0LCBwcmV2aW91c0NoYXJhY3Rlcigp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVUFBFUkNBU0U6Ci0gICAgICAgIHRleHQubWFr
ZVVwcGVyKCk7CisgICAgICAgIHRyYW5zZm9ybVRvVXBwZXIodGV4dCwgbm9kZSgpKTsgCisgICAg
ICAgIC8vdGV4dC5tYWtlVXBwZXIoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMT1dFUkNB
U0U6Ci0gICAgICAgIHRleHQubWFrZUxvd2VyKCk7CisgICAgICAgIHRyYW5zZm9ybVRvTG93ZXIo
dGV4dCwgbm9kZSgpKTsgCisgICAgICAgIC8vdGV4dC5tYWtlTG93ZXIoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213441</attachid>
            <date>2013-10-04 22:05:47 -0700</date>
            <delta_ts>2013-10-04 22:54:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21312-20131004220545.patch</filename>
            <type>text/plain</type>
            <size>14488</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA4MThiMWRjMTk3NDY3ODFkODhlZmRm
MWExMjA4YjZjYWY0NTA2OTQuLjZjYjZmYmVmMGUzMmNlYTFhMGVlMjZmZmU0ZDEwOTY1MGQwMDdh
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMTAtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgaXMgbm90IGxh
bmctZGVwZW5kZW50IChUdXJraXNoIGxhbmd1YWdlcyA6IHRyLGF6KQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp1cHBlcik6IFJlbW92ZWQgYW4gZXh0cmEgY2Fs
bCB0aGF0IHdvdWxkIHVubmVjZXNzYXJpbHkgcmVhbGxvY2F0ZQorICAgICAgICBhIFN0cmluZ0lt
cGwgaW4gdGhlIGdlbmVyYWwgbm9uLUFTQ0lJIGNhc2UuIEFkZGVkIGFuIG92ZXJsb2FkIHRoYXQg
dGFrZXMgYSBsb2NhbGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6bG93
ZXIpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6IERpdHRvLgorICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6bG93
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp1cHBlcik6IERpdHRvLgorICAgICAg
ICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBEaXR0by4gQWxzbyBkZWxldGVkIHRoZSBtYWtlTG93
ZXIgYW5kIG1ha2VVcHBlciBmdW5jdGlvbnMgc2luY2UgdGhleQorICAgICAgICBvZmZlciBubyBh
ZHZhbnRhZ2VzIG92ZXIgdGhlIGxvd2VyIGFuZCB1cHBlciBmdW5jdGlvbnMuCisKIDIwMTMtMTAt
MDIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0g
VXBkYXRlIHNvbHV0aW9ucyBhbmQgcHJvamVjdHMgdG8gc3VwcG9ydCA2NC1iaXQgYnVpbGQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZWM3NGM5NWFmYTI5NGRkNmI2OTA5ZDI4ODQ5OTc3ZGQ3YzFlNjNhYi4uMjgy
NjQ3ZTJmYzVjZmZlMjczZGM5M2RiNzdhMDg5ZmEyZjk5MWIzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDEzLTEwLTA0ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlIGlzIG5vdCBsYW5nLWRlcGVuZGVudCAo
VHVya2lzaCBsYW5ndWFnZXMgOiB0cixheikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogZmFzdC90ZXh0L3RleHQtdHJhbnNmb3JtLXR1cmtpc2gt
YW5kLWF6ZXJpLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUpOiBVc2UgU3Ry
aW5nOjp1cHBlciBpbnN0ZWFkIG9mIFN0cmluZzo6bWFrZVVwcGVyLgorICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmREcm9wWm9uZSk6IFVzZSBT
dHJpbmc6Omxvd2VyIGluc3RlYWQgb2YgU3RyaW5nOjptYWtlTG93ZXIuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlUZXh0VHJhbnNm
b3JtKTogVXNlIFN0cmluZzo6dXBwZXIgYW5kIFN0cmluZzo6bG93ZXIgaW5zdGVhZCBvZgorICAg
ICAgICBTdHJpbmc6Om1ha2VVcHBlciBhbmQgU3RyaW5nOjptYWtlTG93ZXIsIGFuZCBhbHNvIHBh
c3MgaW4gdGhlIGxvY2FsZSB0byBlYWNoLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6dXBwZXJjYXNlS25vd25IVFRQ
TWV0aG9kKTogQ2hhbmdlZCB0aGlzIHNvIGl0IGRvZXNuJ3QgY2FsbAorICAgICAgICB1cHBlciBq
dXN0IHRvIHJldHVybiBhbiBhbHJlYWR5IGtub3duIHN0cmluZyBjb25zdGFudC4KKwogMjAxMy0x
MC0wNCAgS3J6eXN6dG9mIFdvbGFuc2tpICA8ay53b2xhbnNraUBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbRUZMXSBFbmFibGUgY29ycmVjdCBiZWhhdmlvdXIgZm9yIGRlbGV0aW5nIHJlZ2lvbmFs
IGluZGljYXRvciBzeW1ib2xzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCAxMWZh
MTAzMzIwMGQ2MTA2MWZjYWRlYTljMjNmNWE4M2NjNzFmYjNkLi4xMTlmOWQyNmU2ODhmMmI1NTcx
ZmYzODE0ZTkwMTFmYmExMTcxOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAg
LTU1Miw3ICs1NTIsNiBAQCB1cGNvbnZlcnQ6CiAKICAgICAvLyBEbyBhIHNsb3dlciBpbXBsZW1l
bnRhdGlvbiBmb3IgY2FzZXMgdGhhdCBpbmNsdWRlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgogICAg
IGJvb2wgZXJyb3I7Ci0gICAgbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9sZW5ndGgs
IGRhdGExNik7CiAgICAgaW50MzJfdCByZWFsTGVuZ3RoID0gVW5pY29kZTo6dG9VcHBlcihkYXRh
MTYsIGxlbmd0aCwgc291cmNlMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOwogICAgIGlmICghZXJyb3Ig
JiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiBuZXdJbXBsOwpAQCAtNTYz
LDExICs1NjIsNjYgQEAgdXBjb252ZXJ0OgogICAgIHJldHVybiBuZXdJbXBsLnJlbGVhc2UoKTsK
IH0KIAotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpmaWxsKFVDaGFyIGNoYXJh
Y3RlcikKK1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpsb3dlcihjb25zdCBBdG9taWNT
dHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2xlbmd0aCkKKyNpZiAhVVNF
KElDVV9VTklDT0RFKQorICAgIFVOVVNFRF9QQVJBTShsb2NhbGVJZGVudGlmaWVyKTsKKyAgICBy
ZXR1cm4gbG93ZXIoKTsKKyNlbHNlCisgICAgLy8gVXNlIHRoZSBtb3JlLW9wdGltaXplZCBjb2Rl
IHBhdGggbW9zdCBvZiB0aGUgdGltZS4KKyAgICBpZiAoIShsb2NhbGVJZGVudGlmaWVyID09ICJ0
ciIgfHwgbG9jYWxlSWRlbnRpZmllciA9PSAiYXoiKSkKKyAgICAgICAgcmV0dXJuIGxvd2VyKCk7
CisKKyAgICBpZiAobV9sZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1heCgpKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBpbnQgbGVuZ3RoID0g
bV9sZW5ndGg7CisKKyAgICBjb25zdCBVQ2hhciogc291cmNlMTYgPSBjaGFyYWN0ZXJzKCk7Cisg
ICAgVUNoYXIqIGRhdGExNjsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5nID0gY3Jl
YXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGExNik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CisgICAgaW50IHJlYWxMZW5ndGggPSB1X3N0clRvTG93ZXIoZGF0YTE2
LCBsZW5ndGgsIHNvdXJjZTE2LCBsZW5ndGgsICJ0ciIsICZzdGF0dXMpOworICAgIGlmIChVX1NV
Q0NFU1Moc3RhdHVzKSAmJiByZWFsTGVuZ3RoID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5l
d1N0cmluZzsKKyAgICBuZXdTdHJpbmcgPSBjcmVhdGVVbmluaXRpYWxpemVkKHJlYWxMZW5ndGgs
IGRhdGExNik7CisgICAgdV9zdHJUb0xvd2VyKGRhdGExNiwgcmVhbExlbmd0aCwgc291cmNlMTYs
IGxlbmd0aCwgInRyIiwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAg
ICAgICByZXR1cm4gdGhpczsKKyAgICByZXR1cm4gbmV3U3RyaW5nLnJlbGVhc2UoKTsKKyNlbmRp
ZgorfQogCitSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dXBwZXIoY29uc3QgQXRvbWlj
U3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKQoreworI2lmICFVU0UoSUNVX1VOSUNPREUpCisgICAg
VU5VU0VEX1BBUkFNKGxvY2FsZUlkZW50aWZpZXIpOworICAgIHJldHVybiB1cHBlcigpOworI2Vs
c2UKKyAgICAvLyBVc2UgdGhlIG1vcmUtb3B0aW1pemVkIGNvZGUgcGF0aCBtb3N0IG9mIHRoZSB0
aW1lLgorICAgIGlmICghKGxvY2FsZUlkZW50aWZpZXIgPT0gInRyIiB8fCBsb2NhbGVJZGVudGlm
aWVyID09ICJheiIpIHx8IGZpbmQoJ2knKSA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIHVw
cGVyKCk7CisKKyAgICBpZiAobV9sZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1heCgpKSkKKyAgICAgICAgQ1JBU0goKTsKKyAgICBpbnQgbGVu
Z3RoID0gbV9sZW5ndGg7CisKKyAgICBjb25zdCBVQ2hhciogc291cmNlMTYgPSBjaGFyYWN0ZXJz
KCk7CisgICAgVUNoYXIqIGRhdGExNjsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5n
ID0gY3JlYXRlVW5pbml0aWFsaXplZChsZW5ndGgsIGRhdGExNik7CisgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgaW50IHJlYWxMZW5ndGggPSB1X3N0clRvVXBwZXIo
ZGF0YTE2LCBsZW5ndGgsIHNvdXJjZTE2LCBsZW5ndGgsICJ0ciIsICZzdGF0dXMpOworICAgIGlm
IChVX1NVQ0NFU1Moc3RhdHVzKSAmJiByZWFsTGVuZ3RoID09IGxlbmd0aCkKKyAgICAgICAgcmV0
dXJuIG5ld1N0cmluZzsKKyAgICBuZXdTdHJpbmcgPSBjcmVhdGVVbmluaXRpYWxpemVkKHJlYWxM
ZW5ndGgsIGRhdGExNik7CisgICAgdV9zdHJUb1VwcGVyKGRhdGExNiwgcmVhbExlbmd0aCwgc291
cmNlMTYsIGxlbmd0aCwgInRyIiwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICByZXR1cm4gbmV3U3RyaW5nLnJlbGVhc2UoKTsK
KyNlbmRpZgorfQorCitQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmZpbGwoVUNo
YXIgY2hhcmFjdGVyKQorewogICAgIGlmICghKGNoYXJhY3RlciAmIH4weDdGKSkgewogICAgICAg
ICBMQ2hhciogZGF0YTsKICAgICAgICAgUmVmUHRyPFN0cmluZ0ltcGw+IG5ld0ltcGwgPSBjcmVh
dGVVbmluaXRpYWxpemVkKG1fbGVuZ3RoLCBkYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
aW5kZXggODc2NjYxMmEyZTlhZmU2ZjQ2NTYxOTYxZmViNGEwZjZlOGIwMmZkYS4uN2UxNzZhNGI5
MDg4ZDVhYjFjZWE3ODEyZDRiOThmODhkZDdlZGJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKQEAgLTY4Nyw2ICs2ODcsOCBAQCBwdWJsaWM6CiAKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcigpOwogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHVwcGVyKCk7CisgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFJlZlB0cjxTdHJpbmdJbXBsPiBsb3dlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2Fs
ZUlkZW50aWZpZXIpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWZQdHI8U3RyaW5nSW1w
bD4gdXBwZXIoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKTsKIAogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGZpbGwoVUNoYXIpOwog
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGZpbGwoY2hhcikgb3IgY2FuIHdlIGp1c3QgZG8gdGhl
IHJpZ2h0IHRoaW5nIGlmIFVDaGFyIGlzIEFTQ0lJPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CmluZGV4IGRkYTA1NjcyYTRmM2IyYWJhNGI0MTc3YmVhZTgzYjg4NmIwMjI1MGIuLjViZjMzY2Vk
MTk1MmU1NmJlY2FhMjRiZjE5YzcyM2M5NjhlODMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKQEAgLTMzMyw2ICszMzMsMjAgQEAgU3RyaW5nIFN0cmluZzo6dXBwZXIoKSBjb25zdAog
ICAgIHJldHVybiBtX2ltcGwtPnVwcGVyKCk7CiB9CiAKK1N0cmluZyBTdHJpbmc6Omxvd2VyKGNv
bnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBpZiAoIW1f
aW1wbCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBtX2ltcGwtPmxvd2Vy
KGxvY2FsZUlkZW50aWZpZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjp1cHBlcihjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltcGwpCisg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9pbXBsLT51cHBlcihsb2NhbGVJ
ZGVudGlmaWVyKTsKK30KKwogU3RyaW5nIFN0cmluZzo6c3RyaXBXaGl0ZVNwYWNlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1faW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGQwMzFmNjI4
NmE4ZDBiYzRmZDliMDQwMWY1MDc4MjQ0OWY2MjMzOGQuLmUwN2I3NjlhYjBlMzMyYjI4ODQ5MjMz
MjdmNjViNDM2ZjYyNjM5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMTIyLDYgKzEy
Miw3IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4g
ZXhpc3RpbmcgU3RyaW5nSW1wbC4KICAgICBTdHJpbmcoU3RyaW5nSW1wbCogaW1wbCkgOiBtX2lt
cGwoaW1wbCkgeyB9CiAgICAgU3RyaW5nKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gaW1wbCkgOiBt
X2ltcGwoaW1wbCkgeyB9CisgICAgU3RyaW5nKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGltcGwpIDog
bV9pbXBsKGltcGwpIHsgfQogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBjb25z
dGFudCBzdHJpbmcgbGl0ZXJhbC4KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKEFT
Q0lJTGl0ZXJhbCBjaGFyYWN0ZXJzKTsKQEAgLTMxOCw4ICszMTksNiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICB2b2lkIG1ha2VMb3dlcigpIHsgaWYgKG1f
aW1wbCkgbV9pbXBsID0gbV9pbXBsLT5sb3dlcigpOyB9Ci0gICAgdm9pZCBtYWtlVXBwZXIoKSB7
IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+dXBwZXIoKTsgfQogICAgIHZvaWQgZmlsbChV
Q2hhciBjKSB7IGlmIChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+ZmlsbChjKTsgfQogCiAgICAg
V1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuKTsKQEAgLTMz
NCw2ICszMzMsOSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBs
b3dlcigpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgdXBwZXIoKSBj
b25zdDsKIAorICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgbG93ZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgU3RyaW5nIHVwcGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikg
Y29uc3Q7CisKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHN0cmlwV2hpdGVTcGFj
ZSgpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc3RyaXBXaGl0ZVNw
YWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAyZWVkNzQ2OTZmNmRhYjUwMjQz
MzU0NTRkNzU3YzhiZGExZTI3ZjBiLi45ZjI3YTE4MmM2N2Q3NTVhMWVkODIxNTE3OTA5MTM3Yjkw
NzcxOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBw
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cApAQCAtMTQyLDggKzE0Miw3IEBAIE5vZGUqIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2RlKE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2RlCiAgICAgICAgIG9s
ZExpc3QuYXBwZW5kKGNyZWF0ZURpZ2VzdChjaGlsZCwgMCkpOwogCiAgICAgLy8gQ29tcG9zZSB0
aGUgbmV3IGxpc3QuCi0gICAgU3RyaW5nIG1hcmt1cENvcHkgPSBtYXJrdXA7Ci0gICAgbWFya3Vw
Q29weS5tYWtlTG93ZXIoKTsKKyAgICBTdHJpbmcgbWFya3VwQ29weSA9IG1hcmt1cC5sb3dlcigp
OwogICAgIFZlY3RvcjxPd25QdHI8RGlnZXN0PiA+IG5ld0xpc3Q7CiAgICAgZm9yIChOb2RlKiBj
aGlsZCA9IHBhcmVudE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQgIT0gbm9kZTsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgbmV3TGlzdC5hcHBlbmQoY3JlYXRlRGlnZXN0
KGNoaWxkLCAwKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNzlmYjgw
ZGMxMzUzMDVhYWE4ZDIwYjVjOWQ4MGQ2MGJmYzI4MzEzZS4uZjNmOTgyZWZiNTUzMTk0ODc5ZmY2
YWUxMjRmMzYyNjJmMmMyNmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMjA2MSw3ICsyMDYxLDcgQEAgc3RhdGljIGJvb2wgZmluZERyb3Bab25lKE5vZGUqIHRhcmdl
dCwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiAgICAgICAgIGlmIChkcm9wWm9uZVN0ci5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGRyb3Bab25lU3Ry
Lm1ha2VMb3dlcigpOworICAgICAgICBkcm9wWm9uZVN0ciA9IGRyb3Bab25lU3RyLmxvd2VyKCk7
CiAgICAgICAgIAogICAgICAgICBTcGFjZVNwbGl0U3RyaW5nIGtleXdvcmRzKGRyb3Bab25lU3Ry
LCBmYWxzZSk7CiAgICAgICAgIGlmIChrZXl3b3Jkcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZjM4MjVmZWNiZGQ2Yzg3MWNjZWExYmY4ODU5
MzA1OWIyNjZhY2U5OS4uNTJiNmQ4OGEzOGJjODQzYjc2ZjBlMzlmMTg4ZjIyZmMxY2M4NzcwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTMzMSwxMCArMTMz
MSwxMCBAQCB2b2lkIGFwcGx5VGV4dFRyYW5zZm9ybShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUs
IFN0cmluZyYgdGV4dCwgVUNoYXIgcHJldmlvdXNDaAogICAgICAgICBtYWtlQ2FwaXRhbGl6ZWQo
JnRleHQsIHByZXZpb3VzQ2hhcmFjdGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVUFBF
UkNBU0U6Ci0gICAgICAgIHRleHQubWFrZVVwcGVyKCk7CisgICAgICAgIHRleHQgPSB0ZXh0LnVw
cGVyKHN0eWxlLT5sb2NhbGUoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTE9XRVJDQVNF
OgotICAgICAgICB0ZXh0Lm1ha2VMb3dlcigpOworICAgICAgICB0ZXh0ID0gdGV4dC5sb3dlcihz
dHlsZS0+bG9jYWxlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA3MmM2NDQ2OWI0YjE4MmI1ZTE1NDkyNzQwNjE5MmQ4
ZTg0ZWFhYTg4Li4xY2VlMGVhZDRhNWVhYzVmNzcyZGFhMmE4ODMwMjMxMzQ4NWNiOWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ1MiwxMiArNDUyLDE0IEBAIGJv
b2wgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dlZEhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBtZXRo
b2QpCiAKIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6dXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKGNv
bnN0IFN0cmluZyYgbWV0aG9kKQogewotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShtZXRob2Qs
ICJDT1BZIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiREVMRVRFIikgfHwgZXF1YWxJ
Z25vcmluZ0Nhc2UobWV0aG9kLCAiR0VUIikKLSAgICAgICAgfHwgZXF1YWxJZ25vcmluZ0Nhc2Uo
bWV0aG9kLCAiSEVBRCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1ldGhvZCwgIklOREVYIikgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiTE9DSyIpCi0gICAgICAgIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKG1ldGhvZCwgIk0tUE9TVCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1ldGhvZCwgIk1L
Q09MIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiTU9WRSIpCi0gICAgICAgIHx8IGVx
dWFsSWdub3JpbmdDYXNlKG1ldGhvZCwgIk9QVElPTlMiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZSht
ZXRob2QsICJQT1NUIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiUFJPUEZJTkQiKQot
ICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShtZXRob2QsICJQUk9QUEFUQ0giKSB8fCBlcXVh
bElnbm9yaW5nQ2FzZShtZXRob2QsICJQVVQiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShtZXRob2Qs
ICJVTkxPQ0siKSkgewotICAgICAgICByZXR1cm4gbWV0aG9kLnVwcGVyKCk7CisgICAgY29uc3Qg
Y2hhciogY29uc3QgbWV0aG9kc1tdID0geyAiQ09QWSIsICJERUxFVEUiLCAiR0VUIiwgIkhFQUQi
LCAiSU5ERVgiLCAiTE9DSyIsICJNLVBPU1QiLCAiTUtDT0wiLCAiTU9WRSIsICJPUFRJT05TIiwg
IlBPU1QiLCAiUFJPUEZJTkQiLCAiUFJPUFBBVENIIiwgIlBVVCIsICJVTkxPQ0siIH07CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgobWV0aG9kcyk7ICsraSkg
eworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCBtZXRob2RzW2ldKSkgewor
ICAgICAgICAgICAgLy8gRG9uJ3QgYm90aGVyIGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nIGlmIGl0
J3MgYWxyZWFkeSBhbGwgdXBwZXJjYXNlLgorICAgICAgICAgICAgaWYgKG1ldGhvZCA9PSBtZXRo
b2RzW2ldKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbChtZXRob2RzW2ldKTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gbWV0aG9k
OwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGQ5YzcxZGI4MWYyMzY5Mjg5YTc4ZWM3MjE3NjQ2ZTk0ZTg4NDcyNTguLmJk
YmVjY2NiNzdiYTA3MWVkMWNhNDUzNzFhZjdmYmZlZmQ5NzEyZmIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMy0xMC0wNCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZSBpcyBub3QgbGFuZy1kZXBlbmRlbnQgKFR1cmtp
c2ggbGFuZ3VhZ2VzIDogdHIsYXopCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTMxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogZmFzdC90ZXh0L3RleHQtdHJhbnNmb3JtLXR1cmtpc2gtYW5kLWF6ZXJp
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC90ZXh0LXRyYW5zZm9y
bS10dXJraXNoLWFuZC1hemVyaS5odG1sOiBBZGRlZC4KKwogMjAxMy0xMC0wNCAgS3J6eXN6dG9m
IFdvbGFuc2tpICA8ay53b2xhbnNraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFi
bGUgY29ycmVjdCBiZWhhdmlvdXIgZm9yIGRlbGV0aW5nIHJlZ2lvbmFsIGluZGljYXRvciBzeW1i
b2xzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC10cmFuc2Zvcm0tdHVy
a2lzaC1hbmQtYXplcmktZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0
LXRyYW5zZm9ybS10dXJraXNoLWFuZC1hemVyaS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkz
MjYzYjQ2MDRhNDU0NWYxODY4MGIyODA3YmE4YzRkMmQ4ZTEyZDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC10cmFuc2Zvcm0tdHVya2lzaC1hbmQtYXplcmkt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPjwvaGVhZD4KKzxib2R5PgorPHA+VHVya2lzaCB1
cHBlcmNhc2luZyAoZWFjaCBwYWlyIHNob3VsZCBtYXRjaCk6IMSwIMSwLCBJIEkuPC9wPgorPHA+
VHVya2lzaCBsb3dlcmNhc2luZyAoZWFjaCBwYWlyIHNob3VsZCBtYXRjaCk6IGkgaSwgaSBpLCDE
sSDEsS48L3A+Cis8cD5BemVyaSB1cHBlcmNhc2luZyAoZWFjaCBwYWlyIHNob3VsZCBtYXRjaCk6
IMSwIMSwLCBJIEkuPC9wPgorPHA+QXplcmkgbG93ZXJjYXNpbmcgKGVhY2ggcGFpciBzaG91bGQg
bWF0Y2gpOiBpIGksIGkgaSwgxLEgxLEuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdHJhbnNmb3JtLXR1cmtpc2gtYW5kLWF6ZXJp
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC10cmFuc2Zvcm0tdHVya2lzaC1hbmQt
YXplcmkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGMyM2ZjYmNiYTY5OTNkZTE0ODBmY2M2NWVmNjk4ZTI1
M2QwMGJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdHJh
bnNmb3JtLXR1cmtpc2gtYW5kLWF6ZXJpLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48L2hlYWQ+Cis8Ym9k
eT4KKzxwPlR1cmtpc2ggdXBwZXJjYXNpbmcgKGVhY2ggcGFpciBzaG91bGQgbWF0Y2gpOiA8c3Bh
biBsYW5nPSJ0ciIgc3R5bGU9InRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UiPmkgxLAsIMSxIEk8
L3NwYW4+LjwvcD4KKzxwPlR1cmtpc2ggbG93ZXJjYXNpbmcgKGVhY2ggcGFpciBzaG91bGQgbWF0
Y2gpOiA8c3BhbiBsYW5nPSJ0ciIgc3R5bGU9InRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UiPsSw
IGksIEnMhyBpLCBJIMSxPC9zcGFuPi48L3A+Cis8cD5BemVyaSB1cHBlcmNhc2luZyAoZWFjaCBw
YWlyIHNob3VsZCBtYXRjaCk6IDxzcGFuIGxhbmc9ImF6IiBzdHlsZT0idGV4dC10cmFuc2Zvcm06
IHVwcGVyY2FzZSI+aSDEsCwgxLEgSTwvc3Bhbj4uPC9wPgorPHA+QXplcmkgbG93ZXJjYXNpbmcg
KGVhY2ggcGFpciBzaG91bGQgbWF0Y2gpOiA8c3BhbiBsYW5nPSJheiIgc3R5bGU9InRleHQtdHJh
bnNmb3JtOiBsb3dlcmNhc2UiPsSwIGksIEnMhyBpLCBJIMSxPC9zcGFuPi48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213442</attachid>
            <date>2013-10-04 22:54:13 -0700</date>
            <delta_ts>2013-10-04 23:02:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-21312-20131004225412.patch</filename>
            <type>text/plain</type>
            <size>27122</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2ODg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA4MThiMWRjMTk3NDY3ODFkODhlZmRm
MWExMjA4YjZjYWY0NTA2OTQuLjBmNTg2NzZkNDE3MWJjMzdjZTIzYTRiMjA5NDVmMDU0NjhlMWQ3
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMTAtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgaXMgbm90IGxh
bmctZGVwZW5kZW50IChUdXJraXNoIGxhbmd1YWdlcyA6IHRyLGF6KQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp1cHBlcik6IFJlbW92ZWQgYW4gZXh0cmEgY2Fs
bCB0aGF0IHdvdWxkIHVubmVjZXNzYXJpbHkgcmVhbGxvY2F0ZQorICAgICAgICBhIFN0cmluZ0lt
cGwgaW4gdGhlIGdlbmVyYWwgbm9uLUFTQ0lJIGNhc2UuIEFkZGVkIGFuIG92ZXJsb2FkIHRoYXQg
dGFrZXMgYSBsb2NhbGUgaWRlbnRpZmllci4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6bG93
ZXIpOiBEaXR0by4KKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6IERpdHRvLgorICAg
ICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6bG93
ZXIpOiBEaXR0by4KKyAgICAgICAgKFdURjo6U3RyaW5nOjp1cHBlcik6IERpdHRvLgorICAgICAg
ICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOiBEaXR0by4gQWxzbyBkZWxldGVkIHRoZSBtYWtlTG93
ZXIgYW5kIG1ha2VVcHBlciBmdW5jdGlvbnMgc2luY2UgdGhleQorICAgICAgICBvZmZlciBubyBh
ZHZhbnRhZ2VzIG92ZXIgdGhlIGxvd2VyIGFuZCB1cHBlciBmdW5jdGlvbnMuIEFsc28gYWRkZWQg
YSBjb25zdHJ1Y3RvciB0aGF0IHRha2VzCisgICAgICAgIGEgUmVmUHRyPFN0cmluZ0ltcGw+IHdp
dGggbW92ZSBjb25zdHJ1Y3Rpb24gdG8gaGVscC4KKwogMjAxMy0xMC0wMiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBVcGRhdGUgc29sdXRpb25z
IGFuZCBwcm9qZWN0cyB0byBzdXBwb3J0IDY0LWJpdCBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYzc0
Yzk1YWZhMjk0ZGQ2YjY5MDlkMjg4NDk5NzdkZDdjMWU2M2FiLi45YjBlOGUwYzY0MmQ1YTg2ZWE0
ZWEyNzUxMGQ0ZTg1Y2QyMjVkNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTMt
MTAtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHRleHQtdHJh
bnNmb3JtOiBsb3dlcmNhc2UgaXMgbm90IGxhbmctZGVwZW5kZW50IChUdXJraXNoIGxhbmd1YWdl
cyA6IHRyLGF6KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBmYXN0L3RleHQvdGV4dC10cmFuc2Zvcm0tdHVya2lzaC1hbmQtYXplcmkuaHRtbAor
CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9kZSk6IFVzZSBTdHJpbmc6OnVwcGVyIGluc3Rl
YWQgb2YgU3RyaW5nOjptYWtlVXBwZXIuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6ZmluZERyb3Bab25lKTogVXNlIFN0cmluZzo6bG93ZXIgaW5z
dGVhZCBvZiBTdHJpbmc6Om1ha2VMb3dlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6elNo
YXBlcjo6c2hhcGVIYXJmQnV6elJ1bnMpOiBVc2UgU3RyaW5nOjp1cHBlciBpbnN0ZWFkIG9mIFN0
cmluZzo6bWFrZVVwcGVyLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9y
c3MvUlNTMTBQYXJzZXIuY3BwOiBbU2VyaW91c2x5LCBob3cgaXMgYW4gUlNTIHBhcnNlcgorICAg
ICAgICBwYXJ0IG9mIFdlYktpdCdzIG5ldHdvcmtpbmcgbGF5ZXI/IFdoZXJlIGFyZSB0aGUgdGVz
dHMgdGhhdCBjb3ZlciB0aGlzPyBTZWVtcyB3cm9uZworICAgICAgICB0byBoYXZlIHRoaXMgY29k
ZSBpbiB0aGUgcHJvamVjdC5dCisgICAgICAgIChXZWJDb3JlOjpSU1MxMFBhcnNlcjo6cGFyc2VY
bWxEb2MpOiBVc2UgbG93ZXIgaW5zdGVhZCBvZiBtYWtlTG93ZXIuCisgICAgICAgIChXZWJDb3Jl
OjpSU1MxMFBhcnNlcjo6cGFyc2VJdGVtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSU1Mx
MFBhcnNlcjo6cGFyc2VGZWVkKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9i
bGFja2JlcnJ5L3Jzcy9SU1MyMFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSU1MyMFBh
cnNlcjo6cGFyc2VYbWxEb2MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJTUzIwUGFyc2Vy
OjpwYXJzZUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJTUzIwUGFyc2VyOjpwYXJz
ZUZlZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJTUzIwUGFyc2VyOjpwYXJzZUVuY2xv
c3VyZSk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3Mv
UlNTQXRvbVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSU1NBdG9tUGFyc2VyOjpwYXJz
ZVhtbERvYyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UlNTQXRvbVBhcnNlcjo6cGFyc2VJ
dGVtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSU1NBdG9tUGFyc2VyOjpwYXJzZUZlZWQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJTU0F0b21QYXJzZXI6OnBhcnNlTGluayk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UlNTQXRvbVBhcnNlcjo6cGFyc2VDb250ZW50KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSU1NBdG9tUGFyc2VyOjpwYXJzZUF1dGhvcik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6UlNTQXRvbVBhcnNlcjo6cGFyc2VDYXRlZ29yeSk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb252ZXJ0TG9jYWxlTmFtZVRvTENJRCk6IFVzZSBTdHJpbmc6Omxvd2VyIGluc3Rl
YWQgb2YgU3RyaW5nOjptYWtlTG93ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlUZXh0VHJhbnNmb3JtKTogVXNlIFN0cmluZzo6
dXBwZXIgYW5kIFN0cmluZzo6bG93ZXIgaW5zdGVhZCBvZgorICAgICAgICBTdHJpbmc6Om1ha2VV
cHBlciBhbmQgU3RyaW5nOjptYWtlTG93ZXIsIGFuZCBhbHNvIHBhc3MgaW4gdGhlIGxvY2FsZSB0
byBlYWNoLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6dXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKTogQ2hhbmdlZCB0
aGlzIHNvIGl0IGRvZXNuJ3QgY2FsbAorICAgICAgICB1cHBlciBqdXN0IHRvIHJldHVybiBhbiBh
bHJlYWR5IGtub3duIHN0cmluZyBjb25zdGFudC4KKwogMjAxMy0xMC0wNCAgS3J6eXN6dG9mIFdv
bGFuc2tpICA8ay53b2xhbnNraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUg
Y29ycmVjdCBiZWhhdmlvdXIgZm9yIGRlbGV0aW5nIHJlZ2lvbmFsIGluZGljYXRvciBzeW1ib2xz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKaW5kZXggMmMzNjQ3NjI3NzRlNmY4NGJkYzY0NWFhN2VjZDY2YTQ2MzMx
ZWM4NS4uOWUwZWQ3OTFiN2QyMDkwZWQzODQ2Y2U2NjJlMGFhYzY0NWVkYjI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTEwLTA0ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlIGlzIG5vdCBs
YW5nLWRlcGVuZGVudCAoVHVya2lzaCBsYW5ndWFnZXMgOiB0cixheikKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzEyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
Ojpkb0NvbW1hbmQpOiBVc2UgU3RyaW5nSW1wbDo6dXBwZXIgaW5zdGVhZCBvZgorICAgICAgICBT
dHJpbmdJbXBsOjptYWtlVXBwZXIuCisKIDIwMTMtMTAtMDMgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uIGZy
b20gdGhlIFdLQnVuZGxlUGFnZVVJQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApp
bmRleCAxMWZhMTAzMzIwMGQ2MTA2MWZjYWRlYTljMjNmNWE4M2NjNzFmYjNkLi5lZTMxYjg3ZmE0
NGRlNjI2YjgyZmNiZTI3ZjBiMDdmYzAzNTM0YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5jcHAKQEAgLTU1Miw3ICs1NTIsNiBAQCB1cGNvbnZlcnQ6CiAKICAgICAvLyBEbyBhIHNsb3dl
ciBpbXBsZW1lbnRhdGlvbiBmb3IgY2FzZXMgdGhhdCBpbmNsdWRlIG5vbi1BU0NJSSBjaGFyYWN0
ZXJzLgogICAgIGJvb2wgZXJyb3I7Ci0gICAgbmV3SW1wbCA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bV9sZW5ndGgsIGRhdGExNik7CiAgICAgaW50MzJfdCByZWFsTGVuZ3RoID0gVW5pY29kZTo6dG9V
cHBlcihkYXRhMTYsIGxlbmd0aCwgc291cmNlMTYsIG1fbGVuZ3RoLCAmZXJyb3IpOwogICAgIGlm
ICghZXJyb3IgJiYgcmVhbExlbmd0aCA9PSBsZW5ndGgpCiAgICAgICAgIHJldHVybiBuZXdJbXBs
OwpAQCAtNTYzLDExICs1NjIsODAgQEAgdXBjb252ZXJ0OgogICAgIHJldHVybiBuZXdJbXBsLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpmaWxsKFVD
aGFyIGNoYXJhY3RlcikKK1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpsb3dlcihjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYgKCFtX2xlbmd0aCkK
KyNpZiAhVVNFKElDVV9VTklDT0RFKQorICAgIFVOVVNFRF9QQVJBTShsb2NhbGVJZGVudGlmaWVy
KTsKKyAgICByZXR1cm4gbG93ZXIoKTsKKyNlbHNlCisgICAgLy8gVXNlIHRoZSBtb3JlLW9wdGlt
aXplZCBjb2RlIHBhdGggbW9zdCBvZiB0aGUgdGltZS4KKyAgICAvLyBOb3RlIHRoZSBhc3N1bXB0
aW9uIGhlcmUgdGhhdCB0aGUgb25seSBsb2NhbGUtc3BlY2lmaWMgbG93ZXJjYXNpbmcgaXMKKyAg
ICAvLyBpbiB0aGUgInRyIiBhbmQgImF6IiBsb2NhbGVzLgorICAgIC8vIEZJWE1FOiBDb3VsZCBw
b3NzaWJseSBvcHRpbWl6ZSBmdXJ0aGVyIGJ5IGxvb2tpbmcgZm9yIHRoZSBzcGVjaWZpYyBzZXF1
ZW5jZXMKKyAgICAvLyB0aGF0IGhhdmUgbG9jYWxlLXNwZWNpZmljIGxvd2VyY2FzaW5nLiBUaGVy
ZSBhcmUgb25seSB0aHJlZSBvZiB0aGVtLgorICAgIGlmICghKGxvY2FsZUlkZW50aWZpZXIgPT0g
InRyIiB8fCBsb2NhbGVJZGVudGlmaWVyID09ICJheiIpKQorICAgICAgICByZXR1cm4gbG93ZXIo
KTsKKworICAgIGlmIChtX2xlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWF4KCkpKQorICAgICAgICBDUkFTSCgpOworICAgIGludCBsZW5ndGgg
PSBtX2xlbmd0aDsKKworICAgIC8vIEJlbG93LCB3ZSBwYXNzIGluIHRoZSBoYXJkY29kZWQgbG9j
YWxlICJ0ciIuIFBhc3NpbmcgdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuCisgICAgLy8gYWxs
b2NhdGluZyBtZW1vcnkganVzdCB0byB0dXJuIGxvY2FsZUlkZW50aWZpZXIgaW50byBhIEMgc3Ry
aW5nLCBhbmQgdGhlcmUgaXMgbm8KKyAgICAvLyBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHVwcGVy
Y2FzaW5nIGZvciAidHIiIGFuZCAiYXoiIGxvY2FsZXMuCisgICAgY29uc3QgVUNoYXIqIHNvdXJj
ZTE2ID0gY2hhcmFjdGVycygpOworICAgIFVDaGFyKiBkYXRhMTY7CisgICAgUmVmUHRyPFN0cmlu
Z0ltcGw+IG5ld1N0cmluZyA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoLCBkYXRhMTYpOwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGludCByZWFsTGVuZ3Ro
ID0gdV9zdHJUb0xvd2VyKGRhdGExNiwgbGVuZ3RoLCBzb3VyY2UxNiwgbGVuZ3RoLCAidHIiLCAm
c3RhdHVzKTsKKyAgICBpZiAoVV9TVUNDRVNTKHN0YXR1cykgJiYgcmVhbExlbmd0aCA9PSBsZW5n
dGgpCisgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CisgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OworICAgIG5ld1N0cmluZyA9IGNyZWF0ZVVuaW5pdGlhbGl6ZWQocmVhbExlbmd0aCwgZGF0YTE2
KTsKKyAgICB1X3N0clRvTG93ZXIoZGF0YTE2LCByZWFsTGVuZ3RoLCBzb3VyY2UxNiwgbGVuZ3Ro
LCAidHIiLCAmc3RhdHVzKTsKKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJl
dHVybiB0aGlzOworICAgIHJldHVybiBuZXdTdHJpbmcucmVsZWFzZSgpOworI2VuZGlmCit9CiAK
K1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjp1cHBlcihjb25zdCBBdG9taWNTdHJpbmcm
IGxvY2FsZUlkZW50aWZpZXIpCit7CisjaWYgIVVTRShJQ1VfVU5JQ09ERSkKKyAgICBVTlVTRURf
UEFSQU0obG9jYWxlSWRlbnRpZmllcik7CisgICAgcmV0dXJuIHVwcGVyKCk7CisjZWxzZQorICAg
IC8vIFVzZSB0aGUgbW9yZS1vcHRpbWl6ZWQgY29kZSBwYXRoIG1vc3Qgb2YgdGhlIHRpbWUuCisg
ICAgLy8gTm90ZSB0aGUgYXNzdW1wdGlvbiBoZXJlIHRoYXQgdGhlIG9ubHkgbG9jYWxlLXNwZWNp
ZmljIHVwcGVyY2FzaW5nIGlzIG9mIHRoZQorICAgIC8vIGxldHRlciAiaSIgaW4gdGhlICJ0ciIg
YW5kICJheiIgbG9jYWxlcy4KKyAgICBpZiAoIShsb2NhbGVJZGVudGlmaWVyID09ICJ0ciIgfHwg
bG9jYWxlSWRlbnRpZmllciA9PSAiYXoiKSB8fCBmaW5kKCdpJykgPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybiB1cHBlcigpOworCisgICAgaWYgKG1fbGVuZ3RoID4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkpCisgICAgICAgIENSQVNIKCk7
CisgICAgaW50IGxlbmd0aCA9IG1fbGVuZ3RoOworCisgICAgLy8gQmVsb3csIHdlIHBhc3MgaW4g
dGhlIGhhcmRjb2RlZCBsb2NhbGUgInRyIi4gUGFzc2luZyB0aGF0IGlzIG1vcmUgZWZmaWNpZW50
IHRoYW4KKyAgICAvLyBhbGxvY2F0aW5nIG1lbW9yeSBqdXN0IHRvIHR1cm4gbG9jYWxlSWRlbnRp
ZmllciBpbnRvIGEgQyBzdHJpbmcsIGFuZCB0aGVyZSBpcyBubworICAgIC8vIGRpZmZlcmVuY2Ug
YmV0d2VlbiB0aGUgdXBwZXJjYXNpbmcgZm9yICJ0ciIgYW5kICJheiIgbG9jYWxlcy4KKyAgICBj
b25zdCBVQ2hhciogc291cmNlMTYgPSBjaGFyYWN0ZXJzKCk7CisgICAgVUNoYXIqIGRhdGExNjsK
KyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gbmV3U3RyaW5nID0gY3JlYXRlVW5pbml0aWFsaXplZChs
ZW5ndGgsIGRhdGExNik7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgaW50IHJlYWxMZW5ndGggPSB1X3N0clRvVXBwZXIoZGF0YTE2LCBsZW5ndGgsIHNvdXJjZTE2
LCBsZW5ndGgsICJ0ciIsICZzdGF0dXMpOworICAgIGlmIChVX1NVQ0NFU1Moc3RhdHVzKSAmJiBy
ZWFsTGVuZ3RoID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKKyAgICBuZXdT
dHJpbmcgPSBjcmVhdGVVbmluaXRpYWxpemVkKHJlYWxMZW5ndGgsIGRhdGExNik7CisgICAgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOworICAgIHVfc3RyVG9VcHBlcihkYXRhMTYsIHJlYWxMZW5ndGgs
IHNvdXJjZTE2LCBsZW5ndGgsICJ0ciIsICZzdGF0dXMpOworICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgcmV0dXJuIG5ld1N0cmluZy5yZWxlYXNl
KCk7CisjZW5kaWYKK30KKworUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpmaWxs
KFVDaGFyIGNoYXJhY3RlcikKK3sKICAgICBpZiAoIShjaGFyYWN0ZXIgJiB+MHg3RikpIHsKICAg
ICAgICAgTENoYXIqIGRhdGE7CiAgICAgICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBuZXdJbXBsID0g
Y3JlYXRlVW5pbml0aWFsaXplZChtX2xlbmd0aCwgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCmluZGV4IDg3NjY2MTJhMmU5YWZlNmY0NjU2MTk2MWZlYjRhMGY2ZThiMDJmZGEuLjdlMTc2
YTRiOTA4OGQ1YWIxY2VhNzgxMmQ0Yjk4Zjg4ZGQ3ZWRiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCkBAIC02ODcsNiArNjg3LDggQEAgcHVibGljOgogCiAgICAgV1RGX0VYUE9SVF9TVFJJ
TkdfQVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoKTsKICAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiB1cHBlcigpOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBSZWZQdHI8U3RyaW5nSW1wbD4gbG93ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUmVmUHRyPFN0cmlu
Z0ltcGw+IHVwcGVyKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcik7CiAKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBmaWxsKFVDaGFy
KTsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBmaWxsKGNoYXIpIG9yIGNhbiB3ZSBqdXN0IGRv
IHRoZSByaWdodCB0aGluZyBpZiBVQ2hhciBpcyBBU0NJST8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAppbmRleCBkZGEwNTY3MmE0ZjNiMmFiYTRiNDE3N2JlYWU4M2I4ODZiMDIyNTBiLi41YmYz
M2NlZDE5NTJlNTZiZWNhYTI0YmYxOWM3MjNjOTY4ZTgzM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwCkBAIC0zMzMsNiArMzMzLDIwIEBAIFN0cmluZyBTdHJpbmc6OnVwcGVyKCkgY29u
c3QKICAgICByZXR1cm4gbV9pbXBsLT51cHBlcigpOwogfQogCitTdHJpbmcgU3RyaW5nOjpsb3dl
cihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2ltcGwpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9pbXBsLT5s
b3dlcihsb2NhbGVJZGVudGlmaWVyKTsKK30KKworU3RyaW5nIFN0cmluZzo6dXBwZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdAoreworICAgIGlmICghbV9pbXBs
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIG1faW1wbC0+dXBwZXIobG9j
YWxlSWRlbnRpZmllcik7Cit9CisKIFN0cmluZyBTdHJpbmc6OnN0cmlwV2hpdGVTcGFjZSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBkMDMx
ZjYyODZhOGQwYmM0ZmQ5YjA0MDFmNTA3ODI0NDlmNjIzMzhkLi5lMDdiNzY5YWIwZTMzMmIyODg0
OTIzMzI3ZjY1YjQzNmY2MjYzOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTEyMiw2
ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5n
IGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwqIGltcGwpIDog
bV9pbXBsKGltcGwpIHsgfQogICAgIFN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwp
IDogbV9pbXBsKGltcGwpIHsgfQorICAgIFN0cmluZyhSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbXBs
KSA6IG1faW1wbChpbXBsKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEg
Y29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmlu
ZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycyk7CkBAIC0zMTgsOCArMzE5LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgdm9pZCBtYWtlTG93ZXIoKSB7IGlm
IChtX2ltcGwpIG1faW1wbCA9IG1faW1wbC0+bG93ZXIoKTsgfQotICAgIHZvaWQgbWFrZVVwcGVy
KCkgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPnVwcGVyKCk7IH0KICAgICB2b2lkIGZp
bGwoVUNoYXIgYykgeyBpZiAobV9pbXBsKSBtX2ltcGwgPSBtX2ltcGwtPmZpbGwoYyk7IH0KIAog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSB2b2lkIHRydW5jYXRlKHVuc2lnbmVkIGxlbik7CkBA
IC0zMzQsNiArMzMzLDkgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJp
bmcgbG93ZXIoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHVwcGVy
KCkgY29uc3Q7CiAKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIGxvd2VyKGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIFN0cmluZyB1cHBlcihjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50aWZp
ZXIpIGNvbnN0OworCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzdHJpcFdoaXRl
U3BhY2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHN0cmlwV2hp
dGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMmVlZDc0Njk2ZjZkYWI1
MDI0MzM1NDU0ZDc1N2M4YmRhMWUyN2YwYi4uOWYyN2ExODJjNjdkNzU1YTFlZDgyMTUxNzkwOTEz
N2I5MDc3MTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNo
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9y
dC5jcHAKQEAgLTE0Miw4ICsxNDIsNyBAQCBOb2RlKiBET01QYXRjaFN1cHBvcnQ6OnBhdGNoTm9k
ZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgRXhjZXB0aW9uQ29kZQogICAgICAg
ICBvbGRMaXN0LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsIDApKTsKIAogICAgIC8vIENvbXBv
c2UgdGhlIG5ldyBsaXN0LgotICAgIFN0cmluZyBtYXJrdXBDb3B5ID0gbWFya3VwOwotICAgIG1h
cmt1cENvcHkubWFrZUxvd2VyKCk7CisgICAgU3RyaW5nIG1hcmt1cENvcHkgPSBtYXJrdXAubG93
ZXIoKTsKICAgICBWZWN0b3I8T3duUHRyPERpZ2VzdD4gPiBuZXdMaXN0OwogICAgIGZvciAoTm9k
ZSogY2hpbGQgPSBwYXJlbnROb2RlLT5maXJzdENoaWxkKCk7IGNoaWxkICE9IG5vZGU7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG5ld0xpc3QuYXBwZW5kKGNyZWF0ZURp
Z2VzdChjaGlsZCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDc5
ZmI4MGRjMTM1MzA1YWFhOGQyMGI1YzlkODBkNjBiZmMyODMxM2UuLmYzZjk4MmVmYjU1MzE5NDg3
OWZmNmFlMTI0ZjM2MjYyZjJjMjZkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKQEAgLTIwNjEsNyArMjA2MSw3IEBAIHN0YXRpYyBib29sIGZpbmREcm9wWm9uZShOb2RlKiB0
YXJnZXQsIENsaXBib2FyZCogY2xpcGJvYXJkKQogICAgICAgICBpZiAoZHJvcFpvbmVTdHIuaXNF
bXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBkcm9wWm9u
ZVN0ci5tYWtlTG93ZXIoKTsKKyAgICAgICAgZHJvcFpvbmVTdHIgPSBkcm9wWm9uZVN0ci5sb3dl
cigpOwogICAgICAgICAKICAgICAgICAgU3BhY2VTcGxpdFN0cmluZyBrZXl3b3Jkcyhkcm9wWm9u
ZVN0ciwgZmFsc2UpOwogICAgICAgICBpZiAoa2V5d29yZHMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFw
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1
enpTaGFwZXIuY3BwCmluZGV4IDllMGUwNWNiYjg5ZDIwZWNlZTMzZjI4ZGRmYTYzN2NmZjU3NzEw
OGQuLmQ0OTg1YzdhMjYxZDRmZDBlNjk1NWM3ZmY0ZmJiMWI2ODdkMjExMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJm
QnV6elNoYXBlci5jcHAKQEAgLTQ5NCw4ICs0OTQsNyBAQCBib29sIEhhcmZCdXp6U2hhcGVyOjpz
aGFwZUhhcmZCdXp6UnVucyhib29sIHNob3VsZFNldERpcmVjdGlvbikKICAgICAgICAgaGJfYnVm
ZmVyX2FkZF91dGYxNihoYXJmQnV6ekJ1ZmZlci5nZXQoKSwgJnByZUNvbnRleHQsIDEsIDEsIDAp
OwogCiAgICAgICAgIGlmIChtX2ZvbnQtPmlzU21hbGxDYXBzKCkgJiYgdV9pc2xvd2VyKG1fbm9y
bWFsaXplZEJ1ZmZlcltjdXJyZW50UnVuLT5zdGFydEluZGV4KCldKSkgewotICAgICAgICAgICAg
U3RyaW5nIHVwcGVyVGV4dCA9IFN0cmluZyhtX25vcm1hbGl6ZWRCdWZmZXIuZ2V0KCkgKyBjdXJy
ZW50UnVuLT5zdGFydEluZGV4KCksIGN1cnJlbnRSdW4tPm51bUNoYXJhY3RlcnMoKSk7Ci0gICAg
ICAgICAgICB1cHBlclRleHQubWFrZVVwcGVyKCk7CisgICAgICAgICAgICBTdHJpbmcgdXBwZXJU
ZXh0ID0gU3RyaW5nKG1fbm9ybWFsaXplZEJ1ZmZlci5nZXQoKSArIGN1cnJlbnRSdW4tPnN0YXJ0
SW5kZXgoKSwgY3VycmVudFJ1bi0+bnVtQ2hhcmFjdGVycygpKS51cHBlcigpOwogICAgICAgICAg
ICAgY3VycmVudEZvbnREYXRhID0gbV9mb250LT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIodXBwZXJU
ZXh0WzBdLCBmYWxzZSwgU21hbGxDYXBzVmFyaWFudCkuZm9udERhdGE7CiAgICAgICAgICAgICBo
Yl9idWZmZXJfYWRkX3V0ZjE2KGhhcmZCdXp6QnVmZmVyLmdldCgpLCByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQxNl90Kj4odXBwZXJUZXh0LmNoYXJhY3RlcnMoKSksIGN1cnJlbnRSdW4tPm51
bUNoYXJhY3RlcnMoKSwgMCwgY3VycmVudFJ1bi0+bnVtQ2hhcmFjdGVycygpKTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvcnNzL1JTUzEwUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvYmxhY2tiZXJyeS9yc3MvUlNTMTBQYXJzZXIuY3BwCmluZGV4IDUzOTIzMzAyZGM3YWFkM2E5
MmE5ZGFhMGNmYTliODczMjlkYmFhODUuLmZjNzdkZWI3NTFhYzM2MzAyMDM3YzFhMmY0MmMzY2Rk
NmY2ODRlMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxh
Y2tiZXJyeS9yc3MvUlNTMTBQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTMTBQYXJzZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBA
IGJvb2wgUlNTMTBQYXJzZXI6OnBhcnNlWG1sRG9jKHhtbERvY1B0ciBkb2MpCiAgICAgICAgICAg
ICBmb3IgKDsgY2hpbGRub2RlOyBjaGlsZG5vZGUgPSBjaGlsZG5vZGUtPm5leHQpIHsKICAgICAg
ICAgICAgICAgICBpZiAoY2hpbGRub2RlLT50eXBlID09IFhNTF9FTEVNRU5UX05PREUpIHsKICAg
ICAgICAgICAgICAgICAgICAgbmFtZSA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihjaGlsZG5vZGUtPm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgbmFtZS5tYWtlTG93
ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKTsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKG5hbWUgPT0gImNoYW5uZWwiKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBCTEFDS0JFUlJZX0FTU0VSVCghbV9yb290KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghbV9yb290KQpAQCAtOTgsNyArOTgsNyBAQCBSU1NJdGVtKiBSU1MxMFBhcnNlcjo6cGFy
c2VJdGVtKHhtbE5vZGUqIG5vZGUpCiAKICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5l
eHQpIHsKICAgICAgICAgU3RyaW5nIG5hbWUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
bm9kZS0+bmFtZSkpOwotICAgICAgICBuYW1lLm1ha2VMb3dlcigpOworICAgICAgICBuYW1lID0g
bmFtZS5sb3dlcigpOwogCiAgICAgICAgIHBhcnNlSXRlbUJhc2VBdHRyaWJ1dGUoaXRlbSwgbmFt
ZSwgbm9kZSk7CiAgICAgfQpAQCAtMTE0LDcgKzExNCw3IEBAIFJTU0ZlZWQqIFJTUzEwUGFyc2Vy
OjpwYXJzZUZlZWQoeG1sTm9kZSogbm9kZSkKIAogICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9k
ZS0+bmV4dCkgewogICAgICAgICBTdHJpbmcgbmFtZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihub2RlLT5uYW1lKSk7Ci0gICAgICAgIG5hbWUubWFrZUxvd2VyKCk7CisgICAgICAgIG5h
bWUgPSBuYW1lLmxvd2VyKCk7CiAKICAgICAgICAgcGFyc2VJdGVtQmFzZUF0dHJpYnV0ZShmZWVk
LCBuYW1lLCBub2RlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2JsYWNrYmVycnkvcnNzL1JTUzIwUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTMjBQYXJzZXIuY3BwCmluZGV4IDc3
OGU0ZGM5OGRkNThhZWY0YmY0MjU0MGVjMTc5ZTAyMTZkNjFjYTkuLjM2MWUzZjMzYWIzOGUyMjQ1
M2ZiMmQ3OTVkODUwNTQ0MWRkNmY1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTMjBQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3MvUlNTMjBQYXJzZXIuY3BwCkBA
IC00NywxMyArNDcsMTMgQEAgYm9vbCBSU1MyMFBhcnNlcjo6cGFyc2VYbWxEb2MoeG1sRG9jUHRy
IGRvYykKIAogICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dCkgewogICAgICAgICBT
dHJpbmcgbmFtZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihub2RlLT5uYW1lKSk7Ci0g
ICAgICAgIG5hbWUubWFrZUxvd2VyKCk7CisgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCk7CiAK
ICAgICAgICAgaWYgKG5hbWUgPT0gInJzcyIpIHsKICAgICAgICAgICAgIHhtbE5vZGUqIGNoYW5u
ZWwgPSBub2RlLT5jaGlsZHJlbjsKICAgICAgICAgICAgIGlmIChjaGFubmVsLT50eXBlID09IFhN
TF9FTEVNRU5UX05PREUpIHsKICAgICAgICAgICAgICAgICBuYW1lID0gcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oY2hhbm5lbC0+bmFtZSk7Ci0gICAgICAgICAgICAgICAgbmFtZS5tYWtl
TG93ZXIoKTsKKyAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpOwogICAgICAgICAg
ICAgICAgIGlmIChuYW1lID09ICJjaGFubmVsIikKICAgICAgICAgICAgICAgICAgICAgbV9yb290
ID0gcGFyc2VGZWVkKGNoYW5uZWwtPmNoaWxkcmVuKTsKICAgICAgICAgICAgIH0KQEAgLTkwLDcg
KzkwLDcgQEAgUlNTSXRlbSogUlNTMjBQYXJzZXI6OnBhcnNlSXRlbSh4bWxOb2RlKiBub2RlKQog
CiAgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0KSB7CiAgICAgICAgIFN0cmluZyBu
YW1lKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5vZGUtPm5hbWUpKTsKLSAgICAgICAg
bmFtZS5tYWtlTG93ZXIoKTsKKyAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKTsKIAogICAgICAg
ICBpZiAocGFyc2VJdGVtQmFzZUF0dHJpYnV0ZShpdGVtLCBuYW1lLCBub2RlKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFJTU0ZlZWQqIFJTUzIwUGFyc2VyOjpw
YXJzZUZlZWQoeG1sTm9kZSogbm9kZSkKIAogICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+
bmV4dCkgewogICAgICAgICBTdHJpbmcgbmFtZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihub2RlLT5uYW1lKSk7Ci0gICAgICAgIG5hbWUubWFrZUxvd2VyKCk7CisgICAgICAgIG5hbWUg
PSBuYW1lLmxvd2VyKCk7CiAKICAgICAgICAgaWYgKHBhcnNlSXRlbUJhc2VBdHRyaWJ1dGUoZmVl
ZCwgbmFtZSwgbm9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OCw3ICsxNDgsNyBA
QCBSU1NFbmNsb3N1cmUqIFJTUzIwUGFyc2VyOjpwYXJzZUVuY2xvc3VyZSh4bWxOb2RlKiBub2Rl
KQogCiAgICAgZm9yICh4bWxBdHRyKiBhdHRyID0gbm9kZS0+cHJvcGVydGllczsgYXR0cjsgYXR0
ciA9IGF0dHItPm5leHQpIHsKICAgICAgICAgU3RyaW5nIG5hbWUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4oYXR0ci0+bmFtZSkpOwotICAgICAgICBuYW1lLm1ha2VMb3dlcigpOworICAg
ICAgICBuYW1lID0gbmFtZS5sb3dlcigpOwogCiAgICAgICAgIGlmIChuYW1lID09ICJ1cmwiKQog
ICAgICAgICAgICAgZW5jbG9zdXJlLT5tX3VybCA9IHRleHRGcm9tWE1MQXR0cihhdHRyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9yc3Mv
UlNTQXRvbVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvcnNzL1JTU0F0b21QYXJzZXIuY3BwCmluZGV4IDI0MmM5MWE3ZmY0ZTYzNTEyZDZkNzdm
NTRhODQ2ZmNkOTNkNmE5ZDYuLmNkNjBkNDE4YWY1NWJmYjkzOGZkOWYzYTI2NGVmOTNjNmQ4MjIw
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9yc3MvUlNTQXRvbVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L3Jzcy9SU1NBdG9tUGFyc2VyLmNwcApAQCAtODAsNyArODAsNyBAQCBi
b29sIFJTU0F0b21QYXJzZXI6OnBhcnNlWG1sRG9jKHhtbERvY1B0ciBkb2MpCiAKICAgICBmb3Ig
KDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHQpIHsKICAgICAgICAgU3RyaW5nIG5hbWUocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4obm9kZS0+bmFtZSkpOwotICAgICAgICBuYW1lLm1ha2VM
b3dlcigpOworICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpOwogCiAgICAgICAgIGlmIChuYW1l
ID09ICJmZWVkIikgewogICAgICAgICAgICAgbV9yb290ID0gcGFyc2VGZWVkKG5vZGUtPmNoaWxk
cmVuKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBSU1NJdGVtKiBSU1NBdG9tUGFyc2VyOjpwYXJzZUl0
ZW0oeG1sTm9kZSogbm9kZSkKICAgICBTdHJpbmcgYmFzZTsKICAgICBmb3IgKHhtbEF0dHIqIGF0
dHIgPSBub2RlLT5wcm9wZXJ0aWVzOyBhdHRyOyBhdHRyID0gYXR0ci0+bmV4dCkgewogICAgICAg
ICBTdHJpbmcgbmFtZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihhdHRyLT5uYW1lKSk7
Ci0gICAgICAgIG5hbWUubWFrZUxvd2VyKCk7CisgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCk7
CiAgICAgICAgIGlmIChuYW1lID09ICJiYXNlIikKICAgICAgICAgICAgIGJhc2UgPSB0ZXh0RnJv
bVhNTEF0dHIoYXR0cik7CiAgICAgfQpAQCAtMTI5LDcgKzEyOSw3IEBAIFJTU0l0ZW0qIFJTU0F0
b21QYXJzZXI6OnBhcnNlSXRlbSh4bWxOb2RlKiBub2RlKQogICAgIG5vZGUgPSBub2RlLT5jaGls
ZHJlbjsKICAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHQpIHsKICAgICAgICAgU3Ry
aW5nIG5hbWUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obm9kZS0+bmFtZSkpOwotICAg
ICAgICBuYW1lLm1ha2VMb3dlcigpOworICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpOwogCiAg
ICAgICAgIGlmIChwYXJzZUl0ZW1CYXNlQXR0cmlidXRlKGl0ZW0sIG5hbWUsIG5vZGUsIGJhc2Up
KQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xNjcsNyArMTY3LDcgQEAgUlNTRmVlZCogUlNT
QXRvbVBhcnNlcjo6cGFyc2VGZWVkKHhtbE5vZGUqIG5vZGUpCiAKICAgICBmb3IgKDsgbm9kZTsg
bm9kZSA9IG5vZGUtPm5leHQpIHsKICAgICAgICAgU3RyaW5nIG5hbWUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4obm9kZS0+bmFtZSkpOwotICAgICAgICBuYW1lLm1ha2VMb3dlcigpOwor
ICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpOwogCiAgICAgICAgIGlmIChwYXJzZUl0ZW1CYXNl
QXR0cmlidXRlKGZlZWQsIG5hbWUsIG5vZGUsIGVtcHR5U3RyaW5nKCkpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xOTMsNyArMTkzLDcgQEAgUlNTQXRvbUxpbmsqIFJTU0F0b21QYXJzZXI6
OnBhcnNlTGluayh4bWxOb2RlKiBub2RlKQogCiAgICAgZm9yICh4bWxBdHRyKiBhdHRyID0gbm9k
ZS0+cHJvcGVydGllczsgYXR0cjsgYXR0ciA9IGF0dHItPm5leHQpIHsKICAgICAgICAgU3RyaW5n
IG5hbWUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oYXR0ci0+bmFtZSkpOwotICAgICAg
ICBuYW1lLm1ha2VMb3dlcigpOworICAgICAgICBuYW1lID0gbmFtZS5sb3dlcigpOwogCiAgICAg
ICAgIGlmIChuYW1lID09ICJocmVmIikKICAgICAgICAgICAgIGxpbmstPm1faHJlZiA9IHRleHRG
cm9tWE1MQXR0cihhdHRyKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBTdHJpbmcgUlNTQXRvbVBhcnNl
cjo6cGFyc2VDb250ZW50KGNvbnN0IFN0cmluZyYgYmFzZSwgeG1sTm9kZSogbm9kZSkKICAgICBT
dHJpbmcgc3JjOwogICAgIGZvciAoeG1sQXR0ciogYXR0ciA9IG5vZGUtPnByb3BlcnRpZXM7IGF0
dHI7IGF0dHIgPSBhdHRyLT5uZXh0KSB7CiAgICAgICAgIFN0cmluZyBuYW1lKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGF0dHItPm5hbWUpKTsKLSAgICAgICAgbmFtZS5tYWtlTG93ZXIo
KTsKKyAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKTsKIAogICAgICAgICBpZiAobmFtZSA9PSAi
dHlwZSIpCiAgICAgICAgICAgICB0eXBlID0gdGV4dEZyb21YTUxBdHRyKGF0dHIpOwpAQCAtMjk1
LDcgKzI5NSw3IEBAIFN0cmluZyBSU1NBdG9tUGFyc2VyOjpwYXJzZUF1dGhvcih4bWxOb2RlKiBu
b2RlKQogCiAgICAgZm9yIChub2RlID0gbm9kZS0+Y2hpbGRyZW47IG5vZGU7IG5vZGUgPSBub2Rl
LT5uZXh0KSB7CiAgICAgICAgIFN0cmluZyBuYW1lKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KG5vZGUtPm5hbWUpKTsKLSAgICAgICAgbmFtZS5tYWtlTG93ZXIoKTsKKyAgICAgICAgbmFt
ZSA9IG5hbWUubG93ZXIoKTsKIAogICAgICAgICBpZiAobmFtZSA9PSAibmFtZSIpCiAgICAgICAg
ICAgICB1c2VybmFtZSA9IHRleHRGcm9tWE1MTm9kZShub2RlKTsKQEAgLTMyMCw3ICszMjAsNyBA
QCBTdHJpbmcgUlNTQXRvbVBhcnNlcjo6cGFyc2VDYXRlZ29yeSh4bWxOb2RlKiBub2RlKQogCiAg
ICAgZm9yICh4bWxBdHRyKiBhdHRyID0gbm9kZS0+cHJvcGVydGllczsgYXR0cjsgYXR0ciA9IGF0
dHItPm5leHQpIHsKICAgICAgICAgU3RyaW5nIG5hbWUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oYXR0ci0+bmFtZSkpOwotICAgICAgICBuYW1lLm1ha2VMb3dlcigpOworICAgICAgICBu
YW1lID0gbmFtZS5sb3dlcigpOwogCiAgICAgICAgIC8vIElmIHRoZXJlJ3MgYSBsYWJlbCwgd2Ug
dXNlIGl0LCBpZiBub3QsIHVzZSB0ZXJtIGF0dHJpYnV0ZSwgYXMgbGFiZWwgaXMKICAgICAgICAg
Ly8gb3B0aW9uYWwsIGJ1dCB0ZXJtIGlzIG1hbmRhdG9yeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IGM0MWU0ODQwMjA4ODVjNzUyNGQ2
NWJmNmU5NWFiMGZmZDQzOGVmMzMuLjU0ZmM1ZmY1ZmM4MjBkNjk5MmY5YmI2M2QyN2QwOWYzYWNk
ZGRiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2Fs
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2lu
LmNwcApAQCAtMTA5LDggKzEwOSw3IEBAIHN0YXRpYyBMQ0lEIFdJTkFQSSBjb252ZXJ0TG9jYWxl
TmFtZVRvTENJRChMUENXU1RSIG5hbWUsIERXT1JEKQogICAgICAgICByZXR1cm4gTE9DQUxFX1VT
RVJfREVGQVVMVDsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5hbWVUb0xDSURNYXAsIG1hcCwg
KCkpOwogICAgIGVuc3VyZU5hbWVUb0xDSURNYXAobWFwKTsKLSAgICBTdHJpbmcgbG9jYWxlTmFt
ZSA9IFN0cmluZyhuYW1lKS5yZXBsYWNlKCdfJywgJy0nKTsKLSAgICBsb2NhbGVOYW1lLm1ha2VM
b3dlcigpOworICAgIFN0cmluZyBsb2NhbGVOYW1lID0gU3RyaW5nKG5hbWUpLnJlcGxhY2UoJ18n
LCAnLScpLmxvd2VyKCk7CiAgICAgZG8gewogICAgICAgICBOYW1lVG9MQ0lETWFwOjpjb25zdF9p
dGVyYXRvciBpdGVyYXRvciA9IG1hcC5maW5kKGxvY2FsZU5hbWUpOwogICAgICAgICBpZiAoaXRl
cmF0b3IgIT0gbWFwLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3Bw
CmluZGV4IGYzODI1ZmVjYmRkNmM4NzFjY2VhMWJmODg1OTMwNTliMjY2YWNlOTkuLjUyYjZkODhh
MzhiYzg0M2I3NmYwZTM5ZjE4OGYyMmZjMWNjODc3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dC5jcHAKQEAgLTEzMzEsMTAgKzEzMzEsMTAgQEAgdm9pZCBhcHBseVRleHRU
cmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBTdHJpbmcmIHRleHQsIFVDaGFyIHBy
ZXZpb3VzQ2gKICAgICAgICAgbWFrZUNhcGl0YWxpemVkKCZ0ZXh0LCBwcmV2aW91c0NoYXJhY3Rl
cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVVBQRVJDQVNFOgotICAgICAgICB0ZXh0Lm1h
a2VVcHBlcigpOworICAgICAgICB0ZXh0ID0gdGV4dC51cHBlcihzdHlsZS0+bG9jYWxlKCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIExPV0VSQ0FTRToKLSAgICAgICAgdGV4dC5tYWtlTG93
ZXIoKTsKKyAgICAgICAgdGV4dCA9IHRleHQubG93ZXIoc3R5bGUtPmxvY2FsZSgpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggNzJjNjQ0NjliNGIxODJiNWUxNTQ5Mjc0MDYxOTJkOGU4NGVhYWE4OC4uMWNlZTBlYWQ0YTVl
YWM1Zjc3MmRhYTJhODgzMDIzMTM0ODVjYjlmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC00NTIsMTIgKzQ1MiwxNCBAQCBib29sIFhNTEh0dHBSZXF1ZXN0Ojppc0Fs
bG93ZWRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogCiBTdHJpbmcgWE1MSHR0cFJl
cXVlc3Q6OnVwcGVyY2FzZUtub3duSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmIG1ldGhvZCkKIHsK
LSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiQ09QWSIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKG1ldGhvZCwgIkRFTEVURSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1ldGhvZCwgIkdF
VCIpCi0gICAgICAgIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1ldGhvZCwgIkhFQUQiKSB8fCBlcXVh
bElnbm9yaW5nQ2FzZShtZXRob2QsICJJTkRFWCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG1ldGhv
ZCwgIkxPQ0siKQotICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShtZXRob2QsICJNLVBPU1Qi
KSB8fCBlcXVhbElnbm9yaW5nQ2FzZShtZXRob2QsICJNS0NPTCIpIHx8IGVxdWFsSWdub3JpbmdD
YXNlKG1ldGhvZCwgIk1PVkUiKQotICAgICAgICB8fCBlcXVhbElnbm9yaW5nQ2FzZShtZXRob2Qs
ICJPUFRJT05TIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiUE9TVCIpIHx8IGVxdWFs
SWdub3JpbmdDYXNlKG1ldGhvZCwgIlBST1BGSU5EIikKLSAgICAgICAgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobWV0aG9kLCAiUFJPUFBBVENIIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAi
UFVUIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobWV0aG9kLCAiVU5MT0NLIikpIHsKLSAgICAgICAg
cmV0dXJuIG1ldGhvZC51cHBlcigpOworICAgIGNvbnN0IGNoYXIqIGNvbnN0IG1ldGhvZHNbXSA9
IHsgIkNPUFkiLCAiREVMRVRFIiwgIkdFVCIsICJIRUFEIiwgIklOREVYIiwgIkxPQ0siLCAiTS1Q
T1NUIiwgIk1LQ09MIiwgIk1PVkUiLCAiT1BUSU9OUyIsICJQT1NUIiwgIlBST1BGSU5EIiwgIlBS
T1BQQVRDSCIsICJQVVQiLCAiVU5MT0NLIiB9OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKG1ldGhvZHMpOyArK2kpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG1ldGhvZCwgbWV0aG9kc1tpXSkpIHsKKyAgICAgICAgICAgIC8vIERvbid0IGJv
dGhlciBhbGxvY2F0aW5nIGEgbmV3IHN0cmluZyBpZiBpdCdzIGFscmVhZHkgYWxsIHVwcGVyY2Fz
ZS4KKyAgICAgICAgICAgIGlmIChtZXRob2QgPT0gbWV0aG9kc1tpXSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWwobWV0aG9kc1tpXSk7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG1ldGhvZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCmluZGV4IDlmODlkOWNiODUzY2FiNTJhZmYwNTBiOTUzZWFjYjY4Nzc0ZGY1ZDUuLmMx
MDhhZDZlNGRjMGE0ZmIzYjM1NTM5MGZjODg5MTVhZWJlMDAxY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrLmNwcApAQCAtMzU4LDggKzM1OCw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpkb0NvbW1hbmQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogY29tCiAg
ICAgLy8gTWFrZSB0aGUgZmlyc3QgY2hhciBpbiB1cHBlciBjYXNlLgogICAgIFN0cmluZyBmaXJz
dENoYXIgPSBjb21tYW5kU3RyaW5nLmxlZnQoMSk7CiAgICAgY29tbWFuZFN0cmluZyA9IGNvbW1h
bmRTdHJpbmcucmlnaHQoY29tbWFuZFN0cmluZy5sZW5ndGgoKSAtIDEpOwotICAgIGZpcnN0Q2hh
ci5tYWtlVXBwZXIoKTsKLSAgICBjb21tYW5kU3RyaW5nLmluc2VydChmaXJzdENoYXIsIDApOwor
ICAgIGNvbW1hbmRTdHJpbmcuaW5zZXJ0KGZpcnN0Q2hhci51cHBlcigpLCAwKTsKIAogICAgIGVk
aXRvci5jb21tYW5kKGNvbW1hbmRTdHJpbmcpLmV4ZWN1dGUoKTsKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOWM3MWRi
ODFmMjM2OTI4OWE3OGVjNzIxNzY0NmU5NGU4ODQ3MjU4Li5iZGJlY2NjYjc3YmEwNzFlZDFjYTQ1
MzcxYWY3ZmJmZWZkOTcxMmZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTAtMDQgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIHRleHQtdHJhbnNmb3JtOiBs
b3dlcmNhc2UgaXMgbm90IGxhbmctZGVwZW5kZW50IChUdXJraXNoIGxhbmd1YWdlcyA6IHRyLGF6
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzMTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
dGV4dC90ZXh0LXRyYW5zZm9ybS10dXJraXNoLWFuZC1hemVyaS1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L3RleHQvdGV4dC10cmFuc2Zvcm0tdHVya2lzaC1hbmQtYXplcmku
aHRtbDogQWRkZWQuCisKIDIwMTMtMTAtMDQgIEtyenlzenRvZiBXb2xhbnNraSAgPGsud29sYW5z
a2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gRW5hYmxlIGNvcnJlY3QgYmVoYXZpb3Vy
IGZvciBkZWxldGluZyByZWdpb25hbCBpbmRpY2F0b3Igc3ltYm9scwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC90ZXh0L3RleHQtdHJhbnNmb3JtLXR1cmtpc2gtYW5kLWF6ZXJpLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGV4dC10cmFuc2Zvcm0tdHVya2lzaC1h
bmQtYXplcmktZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzI2M2I0NjA0YTQ1NDVmMTg2ODBi
MjgwN2JhOGM0ZDJkOGUxMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L3RleHQtdHJhbnNmb3JtLXR1cmtpc2gtYW5kLWF6ZXJpLWV4cGVjdGVkLmh0bWwKQEAgLTAs
MCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPjxtZXRhIGNoYXJzZXQ9
InV0Zi04Ij48L2hlYWQ+Cis8Ym9keT4KKzxwPlR1cmtpc2ggdXBwZXJjYXNpbmcgKGVhY2ggcGFp
ciBzaG91bGQgbWF0Y2gpOiDEsCDEsCwgSSBJLjwvcD4KKzxwPlR1cmtpc2ggbG93ZXJjYXNpbmcg
KGVhY2ggcGFpciBzaG91bGQgbWF0Y2gpOiBpIGksIGkgaSwgxLEgxLEuPC9wPgorPHA+QXplcmkg
dXBwZXJjYXNpbmcgKGVhY2ggcGFpciBzaG91bGQgbWF0Y2gpOiDEsCDEsCwgSSBJLjwvcD4KKzxw
PkF6ZXJpIGxvd2VyY2FzaW5nIChlYWNoIHBhaXIgc2hvdWxkIG1hdGNoKTogaSBpLCBpIGksIMSx
IMSxLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
dGV4dC90ZXh0LXRyYW5zZm9ybS10dXJraXNoLWFuZC1hemVyaS5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC90ZXh0L3RleHQtdHJhbnNmb3JtLXR1cmtpc2gtYW5kLWF6ZXJpLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZThjMjNmY2JjYmE2OTkzZGUxNDgwZmNjNjVlZjY5OGUyNTNkMDBiYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90ZXh0LXRyYW5zZm9ybS10dXJraXNoLWFuZC1h
emVyaS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD48bWV0YSBjaGFyc2V0PSJ1dGYtOCI+PC9oZWFkPgorPGJvZHk+Cis8cD5UdXJraXNoIHVwcGVy
Y2FzaW5nIChlYWNoIHBhaXIgc2hvdWxkIG1hdGNoKTogPHNwYW4gbGFuZz0idHIiIHN0eWxlPSJ0
ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlIj5pIMSwLCDEsSBJPC9zcGFuPi48L3A+Cis8cD5UdXJr
aXNoIGxvd2VyY2FzaW5nIChlYWNoIHBhaXIgc2hvdWxkIG1hdGNoKTogPHNwYW4gbGFuZz0idHIi
IHN0eWxlPSJ0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlIj7EsCBpLCBJzIcgaSwgSSDEsTwvc3Bh
bj4uPC9wPgorPHA+QXplcmkgdXBwZXJjYXNpbmcgKGVhY2ggcGFpciBzaG91bGQgbWF0Y2gpOiA8
c3BhbiBsYW5nPSJheiIgc3R5bGU9InRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UiPmkgxLAsIMSx
IEk8L3NwYW4+LjwvcD4KKzxwPkF6ZXJpIGxvd2VyY2FzaW5nIChlYWNoIHBhaXIgc2hvdWxkIG1h
dGNoKTogPHNwYW4gbGFuZz0iYXoiIHN0eWxlPSJ0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlIj7E
sCBpLCBJzIcgaSwgSSDEsTwvc3Bhbj4uPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="235808"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>