<?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>27247</bug_id>
          
          <creation_ts>2009-07-14 01:50:23 -0700</creation_ts>
          <short_desc>Master bug of datalist element and list attribute implementation</short_desc>
          <delta_ts>2022-09-20 13:07:45 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#attr-input-list</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>26915</dependson>
    
    <dependson>27756</dependson>
    
    <dependson>27794</dependson>
    
    <dependson>27800</dependson>
    
    <dependson>52214</dependson>
    
    <dependson>72006</dependson>
    
    <dependson>81196</dependson>
    
    <dependson>82871</dependson>
    
    <dependson>82874</dependson>
    
    <dependson>83117</dependson>
    
    <dependson>83742</dependson>
    
    <dependson>84343</dependson>
    
    <dependson>84344</dependson>
    
    <dependson>84346</dependson>
    
    <dependson>84351</dependson>
    
    <dependson>84353</dependson>
    
    <dependson>84356</dependson>
    
    <dependson>84359</dependson>
    
    <dependson>86821</dependson>
    
    <dependson>98934</dependson>
          <blocked>19264</blocked>
    
    <blocked>76198</blocked>
    
    <blocked>40829</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>ahmad.saleem792</cc>
    
    <cc>bronislav.klucka</cc>
    
    <cc>chi187</cc>
    
    <cc>claude.pache</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>daytonlowell</cc>
    
    <cc>d</cc>
    
    <cc>dwim79</cc>
    
    <cc>hyatt</cc>
    
    <cc>info</cc>
    
    <cc>iserg9</cc>
    
    <cc>javan</cc>
    
    <cc>jonlee</cc>
    
    <cc>mathias</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>peter</cc>
    
    <cc>p.jacquemart</cc>
    
    <cc>rcombs</cc>
    
    <cc>rik</cc>
    
    <cc>robertc</cc>
    
    <cc>RobS.webkit6</cc>
    
    <cc>seriouslyicy</cc>
    
    <cc>syoichi</cc>
    
    <cc>teun</cc>
    
    <cc>t.tom</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webmaster</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>131498</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-07-14 01:50:23 -0700</bug_when>
    <thetext>I&apos;ll make a patch to support for `list&apos; attribute.  The UI will be like http://docs.google.com/View?id=dch3zh37_0cf8kc8c4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135119</commentid>
    <comment_count>1</comment_count>
      <attachid>33600</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-07-27 21:23:50 -0700</bug_when>
    <thetext>Created attachment 33600
Screenshot produced by actual code

I have almost completed the code.
Because the patch is large, I&apos;ll split it into some bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135566</commentid>
    <comment_count>2</comment_count>
    <who name="Anthony Ricaud">rik</who>
    <bug_when>2009-07-29 05:18:08 -0700</bug_when>
    <thetext>It doesn&apos;t look very native. A NSComboBox on MacOS feels nicer : http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/nscombobox_Class/Reference/Reference.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135740</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-07-29 17:12:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; It doesn&apos;t look very native. A NSComboBox on MacOS feels nicer :
&gt; http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/nscombobox_Class/Reference/Reference.html

Do you think NSComboBox is nicer for &lt;input type=search&gt; or &lt;input type=number&gt; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135800</commentid>
    <comment_count>4</comment_count>
      <attachid>33765</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-07-30 03:04:19 -0700</bug_when>
    <thetext>Created attachment 33765
Reference patch

This is a patch without ChangeLog and tests, for reference.
I&apos;ll submit a complete one after all dependent patches are landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137168</commentid>
    <comment_count>5</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-04 15:59:35 -0700</bug_when>
    <thetext>dhyatt was working on &lt;datalist&gt; support, he should be CCed on all bugs about it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141328</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-08-18 17:14:54 -0700</bug_when>
    <thetext>Does anyone have an idea of better UI for list attribute support?
If not, I&apos;ll update the patches and request to review them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183389</commentid>
    <comment_count>7</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2010-01-21 16:52:44 -0800</bug_when>
    <thetext>FWIW, Opera displays this the same as autocomplete suggestions.  In other words, there&apos;s a dropdown that automatically appears when the user focuses the field and starts typing, and he can use the arrow keys or mouse to select an item from it.  This is nice if you&apos;re trying to use &lt;datalist&gt; to implement search suggestions -- a combobox UI would be unusable for that use-case.

Related WHATWG thread: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-January/024794.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183394</commentid>
    <comment_count>8</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-01-21 16:58:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
I don&apos;t think the UI of Opera is the best. It&apos;s hard for users to know that a field has choices provided by the page author.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183400</commentid>
    <comment_count>9</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2010-01-21 17:02:51 -0800</bug_when>
    <thetext>That&apos;s what&apos;s wanted for search suggestions -- they should look like browser suggestions.  However, it&apos;s not wanted for comboboxes.  It&apos;s not clear to me which way is &quot;right&quot;.  I&apos;ve suggested to the WHATWG that perhaps a separate JS-only API should be specced for search suggestions, leaving &lt;datalist&gt; more clearly for comboboxes, but I expect it will be a while before I get a response on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183769</commentid>
    <comment_count>10</comment_count>
    <who name="Aryeh Gregor">ayg</who>
    <bug_when>2010-01-22 13:26:07 -0800</bug_when>
    <thetext>Maciej suggested that for type=&quot;text&quot;, it should use a native combobox widget, while for type=&quot;search&quot; it should look like search suggestions:

http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-January/024799.html

Does that make sense to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184177</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-01-24 23:18:19 -0800</bug_when>
    <thetext>Hmm, the idea of type-specific appearance makes sense.

So, we&apos;ll make the followings for &lt;datalist&gt; and list attribute?

No special UI (text field) ==&gt; Native combo-box
Type=search ==&gt; like search-suggestions
Type=range ==&gt; Markers
Type=color ==&gt; In the color chooser dialog?
Type=number ==&gt; Additional menu button (my original proposal)
date/time types ==&gt; ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400186</commentid>
    <comment_count>12</comment_count>
    <who name="Ridley Combs">rcombs</who>
    <bug_when>2011-05-07 19:56:26 -0700</bug_when>
    <thetext>Agreed. Reference Safari&apos;s Google Search box for type=search.

(In reply to comment #11)
&gt; Hmm, the idea of type-specific appearance makes sense.
&gt; 
&gt; So, we&apos;ll make the followings for &lt;datalist&gt; and list attribute?
&gt; 
&gt; No special UI (text field) ==&gt; Native combo-box
&gt; Type=search ==&gt; like search-suggestions
&gt; Type=range ==&gt; Markers
&gt; Type=color ==&gt; In the color chooser dialog?
&gt; Type=number ==&gt; Additional menu button (my original proposal)
&gt; date/time types ==&gt; ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471382</commentid>
    <comment_count>13</comment_count>
    <who name="Dongwoo Joshua Im">dwim79</who>
    <bug_when>2011-09-21 23:45:03 -0700</bug_when>
    <thetext>Is this patch still going on? It looks almost done, but why it stops here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472469</commentid>
    <comment_count>14</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2011-09-23 13:36:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/10069956&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472534</commentid>
    <comment_count>15</comment_count>
    <who name="Bronislav Klucka">bronislav.klucka</who>
    <bug_when>2011-09-23 15:07:19 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &lt;rdar://problem/10069956&gt;

Hi, I&apos;m trying to stay informed... what does such element/URN/scheme means? How can I look at such content?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472538</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-23 15:14:40 -0700</bug_when>
    <thetext>Those URLs are for Apple’s internal bug tracking system, Radar. For the most part, they are not useful to anyone who does not work for Apple except to communicate with people who do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940754</commentid>
    <comment_count>17</comment_count>
    <who name="Tobias Tom">t.tom</who>
    <bug_when>2013-10-17 06:19:30 -0700</bug_when>
    <thetext>I assume this issue is still blocked by some stuff in radar?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940839</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-17 10:57:27 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; I assume this issue is still blocked by some stuff in radar?

I don’t think so. Not even sure what that question means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>987278</commentid>
    <comment_count>19</comment_count>
    <who name="Teun">teun</who>
    <bug_when>2014-03-05 08:56:39 -0800</bug_when>
    <thetext>Please make this very useful feature happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245626</commentid>
    <comment_count>20</comment_count>
    <who name="Domenic Denicola">d</who>
    <bug_when>2016-10-28 09:30:46 -0700</bug_when>
    <thetext>The spec has been updated with some concrete suggestions on display and string matching that might be helpful for those implementing this: https://html.spec.whatwg.org/multipage/forms.html#attr-input-list</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453090</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-08-23 09:50:39 -0700</bug_when>
    <thetext>*** Bug 188857 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581075</commentid>
    <comment_count>22</comment_count>
    <who name="Javan Makhmali">javan</who>
    <bug_when>2019-10-17 11:43:19 -0700</bug_when>
    <thetext>Related: I just reported bug 203116, &quot;Native text substitutions interfere with HTML &lt;datalist&gt; options resulting in crash&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581098</commentid>
    <comment_count>23</comment_count>
    <who name="Javan Makhmali">javan</who>
    <bug_when>2019-10-17 12:32:53 -0700</bug_when>
    <thetext>I would like to see bug 201768, comment 2 added to this list as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899916</commentid>
    <comment_count>24</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-09-20 13:07:45 -0700</bug_when>
    <thetext>All dependent bugs are closed. Marking as &quot;RESOLVED CONFIGURATION CHANGED&quot;. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>33600</attachid>
            <date>2009-07-27 21:23:50 -0700</date>
            <delta_ts>2009-07-27 21:23:50 -0700</delta_ts>
            <desc>Screenshot produced by actual code</desc>
            <filename>ピクチャ 3.png</filename>
            <type>image/png</type>
            <size>12048</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">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
/3CM9GE8xhuVAAAAAElFTkSuQmCC
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33765</attachid>
            <date>2009-07-30 03:04:19 -0700</date>
            <delta_ts>2012-04-19 07:33:40 -0700</delta_ts>
            <desc>Reference patch</desc>
            <filename>list-button.diff</filename>
            <type>text/plain</type>
            <size>26138</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL2h0bWwuY3NzIGIvV2ViQ29yZS9jc3MvaHRtbC5jc3MK
aW5kZXggZTRlZGVjOC4uZjYxZjgzYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvaHRtbC5jc3MK
KysrIGIvV2ViQ29yZS9jc3MvaHRtbC5jc3MKQEAgLTM1Myw2ICszNTMsNyBAQCBpbnB1dFt0eXBl
PSJzZWFyY2giXTo6LXdlYmtpdC1zZWFyY2gtcmVzdWx0cy1idXR0b24gewogaW5wdXQ6Oi13ZWJr
aXQtaW5wdXQtbGlzdC1idXR0b24gewogICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdC1idXR0
b247CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIG1hcmdpbi1sZWZ0OiA4cHg7CiB9
CiAKIHRleHRhcmVhIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMTk1NmJlNC4uM2FmOTZkZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAg
LTc5Miw3ICs3OTIsNyBAQCBib29sIEVsZW1lbnQ6OnBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQo
Y29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyUwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCktPmdldFVuY2FjaGVkUHNldWRv
U3R5bGUocHNldWRvSWQsIG5ld1N0eWxlLCBuZXdTdHlsZSk7CiAKLSAgICAgICAgaWYgKCpuZXdQ
c2V1ZG9TdHlsZSAhPSAqcHNldWRvU3R5bGVDYWNoZVtpXSkgeworICAgICAgICBpZiAobmV3UHNl
dWRvU3R5bGUgJiYgKm5ld1BzZXVkb1N0eWxlICE9ICpwc2V1ZG9TdHlsZUNhY2hlW2ldKSB7CiAg
ICAgICAgICAgICBpZiAocHNldWRvSWQgPCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkKICAgICAg
ICAgICAgICAgICBuZXdTdHlsZS0+c2V0SGFzUHNldWRvU3R5bGUocHNldWRvSWQpOwogICAgICAg
ICAgICAgbmV3U3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0eWxlKG5ld1BzZXVkb1N0eWxlKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDE5YTIxNjcuLjA1YjhhOTAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtNTk4LDkgKzU5OCwxMSBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hE
ZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpbnQgdyA9IHdpZHRoKCk7Ci0gICAgaW50IGggPSBoZWln
aHQoKTsKKyAgICBwYWludEJveERlY29yYXRpb25zV2l0aFNpemUocGFpbnRJbmZvLCB0eCwgdHks
IHdpZHRoKCksIGhlaWdodCgpKTsKK30KIAordm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94RGVjb3Jh
dGlvbnNXaXRoU2l6ZShQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHksIGludCB3
LCBpbnQgaCkKK3sKICAgICAvLyBib3JkZXItZml0IGNhbiBhZGp1c3Qgd2hlcmUgd2UgcGFpbnQg
b3VyIGJvcmRlciBhbmQgYmFja2dyb3VuZC4gIElmIHNldCwgd2Ugc251Z2x5IGZpdCBvdXIgbGlu
ZSBib3ggZGVzY2VuZGFudHMuICAoVGhlIGlDaGF0CiAgICAgLy8gYmFsbG9vbiBsYXlvdXQgaXMg
YW4gZXhhbXBsZSBvZiB0aGlzKS4KICAgICBib3JkZXJGaXRBZGp1c3QodHgsIHcpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAppbmRleCA5NWMwNjM3Li45YTBmYWNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApA
QCAtMjkwLDcgKzI5MCw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIo
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBpbnQgdHgs
IGludCB0eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgaW50IHR4LCBpbnQgdHksIGludCB3
aWR0aCwgaW50IGhlaWdodCwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
KTsKLQorICAgIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9uc1dpdGhTaXplKFBhaW50SW5mbyYsIGlu
dCwgaW50LCBpbnQsIGludCk7CiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMoY29uc3QgUGFpbnRJ
bmZvJiwgaW50IHR4LCBpbnQgdHksIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcAppbmRleCBkMGUyNmU1Li4xZWM3YmI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKQEAgLTI3LDkgKzI3LDEyIEBA
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSGl0
VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
SFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgpAQCAtNTUsNiAr
NTgsNyBAQCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZShOb2RlKiBub2RlKQogICAgICwgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3Io
ZmFsc2UpCiAgICAgLCBtX3NlYXJjaEV2ZW50VGltZXIodGhpcywgJlJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6c2VhcmNoRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9zZWFyY2hQb3B1cCgw
KQorICAgICwgbV9saXN0UG9wdXBDbGllbnQoMCkKIHsKIH0KIApAQCAtNjcsNiArNzEsMTUgQEAg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KCkKICAKICAgICBpZiAobV9pbm5lckJsb2NrKQogICAgICAgICBtX2lubmVyQmxvY2stPmRldGFj
aCgpOworICAgIGlmIChtX2xpc3RCdXR0b24pCisgICAgICAgIG1fbGlzdEJ1dHRvbi0+ZGV0YWNo
KCk7Cit9CisKK0ludFJlY3QgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjb250cm9sQ2xp
cFJlY3QoaW50IHR4LCBpbnQgdHkpIGNvbnN0Cit7CisgICAgSW50UmVjdCByZWN0ID0gYm9yZGVy
Qm94UmVjdCgpOworICAgIHJlY3QubW92ZSh0eCwgdHkpOworICAgIHJldHVybiByZWN0OwogfQog
CiBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6cGxhY2Vob2xkZXJTaG91bGRCZVZp
c2libGUoKSBjb25zdApAQCAtMjA2LDYgKzIxOSwxNiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9s
U2luZ2xlTGluZTo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQog
ICAgIH0KIH0KIAordm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnBhaW50Qm94RGVj
b3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQoreworICAgIHBh
aW50Qm94RGVjb3JhdGlvbnNXaXRoU2l6ZShwYWludEluZm8sIHR4LCB0eSwgd2lkdGgoKSAtIGRl
Y29yYXRpb25XaWR0aFJpZ2h0KCksIGhlaWdodCgpKTsKK30KKwordm9pZCBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6OmFkZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhp
Y3NDb250ZXh0LCBpbnQgdHgsIGludCB0eSkKK3sKKyAgICBncmFwaGljc0NvbnRleHQtPmFkZEZv
Y3VzUmluZ1JlY3QoSW50UmVjdCh0eCwgdHksIHdpZHRoKCkgLSBkZWNvcmF0aW9uV2lkdGhSaWdo
dCgpLCBoZWlnaHQoKSkpOworfQorCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
bGF5b3V0KCkKIHsKICAgICBpbnQgb2xkSGVpZ2h0ID0gaGVpZ2h0KCk7CkBAIC0yMzksNiArMjYy
LDggQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCgpCiAKICAgICBp
ZiAobV9pbm5lckJsb2NrKSB7CiAgICAgICAgIGludCBpbm5lckJsb2NrV2lkdGggPSB3aWR0aCgp
IC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdSaWdodCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVy
UmlnaHQoKTsKKyAgICAgICAgaWYgKFJlbmRlckJveCogbGlzdFJlbmRlcmVyID0gbV9saXN0QnV0
dG9uID8gbV9saXN0QnV0dG9uLT5yZW5kZXJCb3goKSA6IDApCisgICAgICAgICAgICBpbm5lckJs
b2NrV2lkdGggLT0gbGlzdFJlbmRlcmVyLT5tYXJnaW5MZWZ0KCkgKyBsaXN0UmVuZGVyZXItPndp
ZHRoKCkgKyBsaXN0UmVuZGVyZXItPm1hcmdpblJpZ2h0KCk7CiAgICAgICAgIGlmIChpbm5lckJs
b2NrV2lkdGggIT0gaW5uZXJCbG9ja1JlbmRlcmVyLT53aWR0aCgpKQogICAgICAgICAgICAgcmVs
YXlvdXRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgIGlubmVyQmxvY2tSZW5kZXJlci0+c3R5bGUo
KS0+c2V0V2lkdGgoTGVuZ3RoKGlubmVyQmxvY2tXaWR0aCwgRml4ZWQpKTsKQEAgLTI1MSw2ICsy
NzYsMTMgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCgpCiAgICAg
Y3VycmVudEhlaWdodCA9IGNoaWxkQmxvY2stPmhlaWdodCgpOwogICAgIGlmIChjdXJyZW50SGVp
Z2h0IDwgaGVpZ2h0KCkpCiAgICAgICAgIGNoaWxkQmxvY2stPnNldExvY2F0aW9uKGNoaWxkQmxv
Y2stPngoKSwgKGhlaWdodCgpIC0gY3VycmVudEhlaWdodCkgLyAyKTsKKworICAgIC8vIEFsaWdu
IHRoZSBsaXN0IGJ1dHRvbiB0byB0aGUgYm90dG9tIG9mIHRoZSBJTlBVVCBlbGVtZW50LgorICAg
IGlmIChSZW5kZXJCb3gqIGxpc3RSZW5kZXJlciA9IG1fbGlzdEJ1dHRvbiA/IG1fbGlzdEJ1dHRv
bi0+cmVuZGVyQm94KCkgOiAwKSB7CisgICAgICAgIGlmIChsaXN0UmVuZGVyZXItPmhlaWdodCgp
ID4gaGVpZ2h0KCkpCisgICAgICAgICAgICBsaXN0UmVuZGVyZXItPnNldEhlaWdodChoZWlnaHQo
KSk7CisgICAgICAgIGxpc3RSZW5kZXJlci0+c2V0TG9jYXRpb24obGlzdFJlbmRlcmVyLT54KCks
IGhlaWdodCgpIC0gbGlzdFJlbmRlcmVyLT5oZWlnaHQoKSk7CisgICAgfQogfQogCiBib29sIFJl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgaW50IHhQb3MsIGludCB5UG9zLCBp
bnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQpAQCAtMjcwLDggKzMw
MiwxMSBAQCBib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bm9kZUF0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdAogICAgIGlmIChyZXN1bHQuaW5uZXJOb2Rl
KCktPmlzRGVzY2VuZGFudE9mKGlubmVyVGV4dEVsZW1lbnQoKSkgfHwgcmVzdWx0LmlubmVyTm9k
ZSgpID09IG5vZGUoKSkKICAgICAgICAgaGl0SW5uZXJUZXh0RWxlbWVudChyZXN1bHQsIHhQb3Ms
IHlQb3MsIHR4LCB0eSk7CiAKLSAgICAvLyBJZiB3ZSdyZSBub3QgYSBzZWFyY2ggZmllbGQsIG9y
IHdlIGFscmVhZHkgZm91bmQgdGhlIHJlc3VsdHMgb3IgY2FuY2VsIGJ1dHRvbnMsIHdlJ3JlIGRv
bmUuCi0gICAgaWYgKCFtX2lubmVyQmxvY2sgfHwgcmVzdWx0LmlubmVyTm9kZSgpID09IG1fcmVz
dWx0c0J1dHRvbiB8fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9jYW5jZWxCdXR0b24pCisgICAg
Ly8gSWYgdGhpcyBoYXMgbm8gZGVjb3JhdGlvbnMsIHdlJ3JlIGRvbmUuCisgICAgaWYgKCFtX2lu
bmVyQmxvY2sgJiYgIW1fbGlzdEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgLy8g
SWYgd2UgYWxyZWFkeSBmb3VuZCBhIGRlY29yYXRpb24gYnV0dG9uLCB3ZSdyZSBkb25lLgorICAg
IGlmIChyZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9yZXN1bHRzQnV0dG9uIHx8IHJlc3VsdC5pbm5l
ck5vZGUoKSA9PSBtX2NhbmNlbEJ1dHRvbiB8fCByZXN1bHQuaW5uZXJOb2RlKCkgPT0gbV9saXN0
QnV0dG9uKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIE5vZGUqIGlubmVyTm9kZSA9IDA7
CkBAIC0yODcsNyArMzIyLDcgQEAgYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXQKIAogICAgIGlmICgh
aW5uZXJOb2RlKSB7CiAgICAgICAgIGludCB0ZXh0UmlnaHQgPSB0ZXh0TGVmdCArIGlubmVyVGV4
dFJlbmRlcmVyLT53aWR0aCgpOwotICAgICAgICBpZiAobV9jYW5jZWxCdXR0b24gJiYgbV9jYW5j
ZWxCdXR0b24tPnJlbmRlcmVyKCkgJiYgeFBvcyA+IHRleHRSaWdodCkKKyAgICAgICAgaWYgKG1f
Y2FuY2VsQnV0dG9uICYmIG1fY2FuY2VsQnV0dG9uLT5yZW5kZXJlcigpICYmIHhQb3MgPiB0ZXh0
UmlnaHQgJiYgeFBvcyA8IHdpZHRoKCkgLSBkZWNvcmF0aW9uV2lkdGhSaWdodCgpKQogICAgICAg
ICAgICAgaW5uZXJOb2RlID0gbV9jYW5jZWxCdXR0b24uZ2V0KCk7CiAgICAgfQogCkBAIC0zMjAs
MTAgKzM1NSwxMyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Zm9yd2FyZEV2
ZW50KEV2ZW50KiBldmVudCkKICAgICB9CiAKICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBp
bm5lclRleHRSZW5kZXJlci0+YWJzb2x1dGVUb0xvY2FsKHN0YXRpY19jYXN0PE1vdXNlRXZlbnQq
PihldmVudCktPmFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UsIHRydWUpOworICAgIGludCB0ZXh0
UmlnaHQgPSBpbm5lclRleHRSZW5kZXJlci0+Ym9yZGVyQm94UmVjdCgpLnJpZ2h0KCk7CiAgICAg
aWYgKG1fcmVzdWx0c0J1dHRvbiAmJiBsb2NhbFBvaW50LngoKSA8IGlubmVyVGV4dFJlbmRlcmVy
LT5ib3JkZXJCb3hSZWN0KCkueCgpKQogICAgICAgICBtX3Jlc3VsdHNCdXR0b24tPmRlZmF1bHRF
dmVudEhhbmRsZXIoZXZlbnQpOwotICAgIGVsc2UgaWYgKG1fY2FuY2VsQnV0dG9uICYmIGxvY2Fs
UG9pbnQueCgpID4gaW5uZXJUZXh0UmVuZGVyZXItPmJvcmRlckJveFJlY3QoKS5yaWdodCgpKQor
ICAgIGVsc2UgaWYgKG1fY2FuY2VsQnV0dG9uICYmIGxvY2FsUG9pbnQueCgpID4gdGV4dFJpZ2h0
ICYmIGxvY2FsUG9pbnQueCgpIDwgdGV4dFJpZ2h0ICsgbV9jYW5jZWxCdXR0b24tPnJlbmRlckJv
eCgpLT53aWR0aCgpKQogICAgICAgICBtX2NhbmNlbEJ1dHRvbi0+ZGVmYXVsdEV2ZW50SGFuZGxl
cihldmVudCk7CisgICAgZWxzZSBpZiAobV9saXN0QnV0dG9uICYmIGxvY2FsUG9pbnQueCgpID4g
dGV4dFJpZ2h0KQorICAgICAgICBtX2xpc3RCdXR0b24tPmRlZmF1bHRFdmVudEhhbmRsZXIoZXZl
bnQpOwogICAgIGVsc2UKICAgICAgICAgUmVuZGVyVGV4dENvbnRyb2w6OmZvcndhcmRFdmVudChl
dmVudCk7CiB9CkBAIC0zODcsNiArNDI1LDE2IEBAIGludCBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OnRleHRCbG9ja1dpZHRoKCkgY29uc3QKICAgICAgICAgd2lkdGggLT0gY2FuY2VsUmVu
ZGVyZXItPndpZHRoKCkgKyBjYW5jZWxSZW5kZXJlci0+bWFyZ2luTGVmdCgpICsgY2FuY2VsUmVu
ZGVyZXItPm1hcmdpblJpZ2h0KCk7CiAgICAgfQogCisgICAgcmV0dXJuIHdpZHRoIC0gZGVjb3Jh
dGlvbldpZHRoUmlnaHQoKTsKK30KKworaW50IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
ZGVjb3JhdGlvbldpZHRoUmlnaHQoKSBjb25zdAoreworICAgIGludCB3aWR0aCA9IDA7CisgICAg
aWYgKFJlbmRlckJveCogbGlzdFJlbmRlcmVyID0gbV9saXN0QnV0dG9uID8gbV9saXN0QnV0dG9u
LT5yZW5kZXJCb3goKSA6IDApIHsKKyAgICAgICAgbGlzdFJlbmRlcmVyLT5jYWxjV2lkdGgoKTsK
KyAgICAgICAgd2lkdGggKz0gbGlzdFJlbmRlcmVyLT53aWR0aCgpICsgbGlzdFJlbmRlcmVyLT5t
YXJnaW5MZWZ0KCkgKyBsaXN0UmVuZGVyZXItPm1hcmdpblJpZ2h0KCk7CisgICAgfQogICAgIHJl
dHVybiB3aWR0aDsKIH0KIApAQCAtNDAxLDYgKzQ0OSw3IEBAIGludCBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0
CiAgICAgLy8gRm9yIHRleHQgaW5wdXRzLCBJRSBhZGRzIHNvbWUgZXh0cmEgd2lkdGguCiAgICAg
cmVzdWx0ICs9IHN0eWxlKCktPmZvbnQoKS5wcmltYXJ5Rm9udCgpLT5tYXhDaGFyV2lkdGgoKSAt
IGNoYXJXaWR0aDsKIAorICAgIC8vIFdlIGRvbid0IGtub3cgdGhlIGZpbmFsIHNpemVzIG9mIGJ1
dHRvbnMgaW4gdGhpcyBzdGFnZS4gIFNvIHVzZSBtaW5QcmVmV2lkdGgoKS4KICAgICBpZiAoUmVu
ZGVyQm94KiByZXN1bHRzUmVuZGVyZXIgPSBtX3Jlc3VsdHNCdXR0b24gPyBtX3Jlc3VsdHNCdXR0
b24tPnJlbmRlckJveCgpIDogMCkKICAgICAgICAgcmVzdWx0ICs9IHJlc3VsdHNSZW5kZXJlci0+
Ym9yZGVyTGVmdCgpICsgcmVzdWx0c1JlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsKICAgICAgICAg
ICAgICAgICAgIHJlc3VsdHNSZW5kZXJlci0+cGFkZGluZ0xlZnQoKSArIHJlc3VsdHNSZW5kZXJl
ci0+cGFkZGluZ1JpZ2h0KCk7CkBAIC00MDksOSArNDU4LDIwIEBAIGludCBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmU6OnByZWZlcnJlZENvbnRlbnRXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNv
bnN0CiAgICAgICAgIHJlc3VsdCArPSBjYW5jZWxSZW5kZXJlci0+Ym9yZGVyTGVmdCgpICsgY2Fu
Y2VsUmVuZGVyZXItPmJvcmRlclJpZ2h0KCkgKwogICAgICAgICAgICAgICAgICAgY2FuY2VsUmVu
ZGVyZXItPnBhZGRpbmdMZWZ0KCkgKyBjYW5jZWxSZW5kZXJlci0+cGFkZGluZ1JpZ2h0KCk7CiAK
KyAgICBpZiAoUmVuZGVyQm94KiBsaXN0UmVuZGVyZXIgPSBtX2xpc3RCdXR0b24gPyBtX2xpc3RC
dXR0b24tPnJlbmRlckJveCgpIDogMCkKKyAgICAgICAgcmVzdWx0ICs9IGxpc3RSZW5kZXJlci0+
bWluUHJlZldpZHRoKCk7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitpbnQgUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lOjpwcmVmZXJyZWREZWNvcmF0aW9uV2lkdGhSaWdodCgpIGNvbnN0
Cit7CisgICAgaW50IHdpZHRoID0gMDsKKyAgICBpZiAoUmVuZGVyQm94KiBsaXN0UmVuZGVyZXIg
PSBtX2xpc3RCdXR0b24gPyBtX2xpc3RCdXR0b24tPnJlbmRlckJveCgpIDogMCkKKyAgICAgICAg
d2lkdGggKz0gbGlzdFJlbmRlcmVyLT5taW5QcmVmV2lkdGgoKTsKKyAgICByZXR1cm4gd2lkdGg7
Cit9CisKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjphZGp1c3RDb250cm9sSGVp
Z2h0QmFzZWRPbkxpbmVIZWlnaHQoaW50IGxpbmVIZWlnaHQpCiB7CiAgICAgaWYgKFJlbmRlckJv
eCogcmVzdWx0c1JlbmRlcmVyID0gbV9yZXN1bHRzQnV0dG9uID8gbV9yZXN1bHRzQnV0dG9uLT5y
ZW5kZXJCb3goKSA6IDApIHsKQEAgLTQzOSwzMSArNDk5LDQwIEBAIHZvaWQgUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQoKQogewogICAgIGlmICghaW5w
dXRFbGVtZW50KCktPmlzU2VhcmNoRmllbGQoKSkgewogICAgICAgICBSZW5kZXJUZXh0Q29udHJv
bDo6Y3JlYXRlU3VidHJlZUlmTmVlZGVkKG1faW5uZXJCbG9jay5nZXQoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1faW5uZXJCbG9jaykgewotICAgICAgICAvLyBDcmVh
dGUgdGhlIGlubmVyIGJsb2NrIGVsZW1lbnQKLSAgICAgICAgbV9pbm5lckJsb2NrID0gbmV3IFRl
eHRDb250cm9sSW5uZXJCbG9ja0VsZW1lbnQoZG9jdW1lbnQoKSwgbm9kZSgpKTsKLSAgICAgICAg
bV9pbm5lckJsb2NrLT5hdHRhY2hJbm5lckVsZW1lbnQobm9kZSgpLCBjcmVhdGVJbm5lckJsb2Nr
U3R5bGUoc3R5bGUoKSksIHJlbmRlckFyZW5hKCkpOwotICAgIH0KKyAgICB9IGVsc2UgeworICAg
ICAgICBpZiAoIW1faW5uZXJCbG9jaykgeworICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbm5l
ciBibG9jayBlbGVtZW50CisgICAgICAgICAgICBtX2lubmVyQmxvY2sgPSBuZXcgVGV4dENvbnRy
b2xJbm5lckJsb2NrRWxlbWVudChkb2N1bWVudCgpLCBub2RlKCkpOworICAgICAgICAgICAgbV9p
bm5lckJsb2NrLT5hdHRhY2hJbm5lckVsZW1lbnQobm9kZSgpLCBjcmVhdGVJbm5lckJsb2NrU3R5
bGUoc3R5bGUoKSksIHJlbmRlckFyZW5hKCkpOworICAgICAgICB9CiAKLSAgICBpZiAoIW1fcmVz
dWx0c0J1dHRvbikgewotICAgICAgICAvLyBDcmVhdGUgdGhlIHNlYXJjaCByZXN1bHRzIGJ1dHRv
biBlbGVtZW50Ci0gICAgICAgIG1fcmVzdWx0c0J1dHRvbiA9IG5ldyBTZWFyY2hGaWVsZFJlc3Vs
dHNCdXR0b25FbGVtZW50KGRvY3VtZW50KCkpOwotICAgICAgICBtX3Jlc3VsdHNCdXR0b24tPmF0
dGFjaElubmVyRWxlbWVudChtX2lubmVyQmxvY2suZ2V0KCksIGNyZWF0ZVJlc3VsdHNCdXR0b25T
dHlsZShtX2lubmVyQmxvY2stPnJlbmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsK
LSAgICB9CisgICAgICAgIGlmICghbV9yZXN1bHRzQnV0dG9uKSB7CisgICAgICAgICAgICAvLyBD
cmVhdGUgdGhlIHNlYXJjaCByZXN1bHRzIGJ1dHRvbiBlbGVtZW50CisgICAgICAgICAgICBtX3Jl
c3VsdHNCdXR0b24gPSBuZXcgU2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudChkb2N1bWVu
dCgpKTsKKyAgICAgICAgICAgIG1fcmVzdWx0c0J1dHRvbi0+YXR0YWNoSW5uZXJFbGVtZW50KG1f
aW5uZXJCbG9jay5nZXQoKSwgY3JlYXRlUmVzdWx0c0J1dHRvblN0eWxlKG1faW5uZXJCbG9jay0+
cmVuZGVyZXIoKS0+c3R5bGUoKSksIHJlbmRlckFyZW5hKCkpOworICAgICAgICB9CiAKLSAgICAv
LyBDcmVhdGUgaW5uZXJUZXh0IGVsZW1lbnQgYmVmb3JlIGFkZGluZyB0aGUgY2FuY2VsIGJ1dHRv
bgotICAgIFJlbmRlclRleHRDb250cm9sOjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQobV9pbm5lckJs
b2NrLmdldCgpKTsKKyAgICAgICAgLy8gQ3JlYXRlIGlubmVyVGV4dCBlbGVtZW50IGJlZm9yZSBh
ZGRpbmcgdGhlIGNhbmNlbCBidXR0b24KKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2w6OmNyZWF0
ZVN1YnRyZWVJZk5lZWRlZChtX2lubmVyQmxvY2suZ2V0KCkpOwogCi0gICAgaWYgKCFtX2NhbmNl
bEJ1dHRvbikgewotICAgICAgICAvLyBDcmVhdGUgdGhlIGNhbmNlbCBidXR0b24gZWxlbWVudAot
ICAgICAgICBtX2NhbmNlbEJ1dHRvbiA9IG5ldyBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1l
bnQoZG9jdW1lbnQoKSk7Ci0gICAgICAgIG1fY2FuY2VsQnV0dG9uLT5hdHRhY2hJbm5lckVsZW1l
bnQobV9pbm5lckJsb2NrLmdldCgpLCBjcmVhdGVDYW5jZWxCdXR0b25TdHlsZShtX2lubmVyQmxv
Y2stPnJlbmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgaWYgKCFt
X2NhbmNlbEJ1dHRvbikgeworICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBjYW5jZWwgYnV0dG9u
IGVsZW1lbnQKKyAgICAgICAgICAgIG1fY2FuY2VsQnV0dG9uID0gbmV3IFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uRWxlbWVudChkb2N1bWVudCgpKTsKKyAgICAgICAgICAgIG1fY2FuY2VsQnV0dG9u
LT5hdHRhY2hJbm5lckVsZW1lbnQobV9pbm5lckJsb2NrLmdldCgpLCBjcmVhdGVDYW5jZWxCdXR0
b25TdHlsZShtX2lubmVyQmxvY2stPnJlbmRlcmVyKCktPnN0eWxlKCkpLCByZW5kZXJBcmVuYSgp
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoaGFzTGlzdEJ1dHRvbigpICYmICFtX2xpc3RC
dXR0b24pIHsKKyAgICAgICAgbV9saXN0QnV0dG9uID0gbmV3IElucHV0TGlzdEJ1dHRvbkVsZW1l
bnQoZG9jdW1lbnQoKSwgbm9kZSgpKTsKKyAgICAgICAgbV9saXN0QnV0dG9uLT5hdHRhY2hJbm5l
ckVsZW1lbnQobm9kZSgpLCBjcmVhdGVMaXN0QnV0dG9uU3R5bGUoKSwgcmVuZGVyQXJlbmEoKSk7
CiAgICAgfQogfQogCitib29sIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6aGFzTGlzdEJ1
dHRvbigpIGNvbnN0Cit7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsaXN0VmFsdWUgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKS0+Z2V0QXR0cmlidXRlKGxpc3RBdHRy
KTsKKyAgICByZXR1cm4gIWxpc3RWYWx1ZS5pc051bGwoKSAmJiAhbGlzdFZhbHVlLmlzRW1wdHko
KTsKK30KKwogdm9pZCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnVwZGF0ZUZyb21FbGVt
ZW50KCkKIHsKICAgICBjcmVhdGVTdWJ0cmVlSWZOZWVkZWQoKTsKQEAgLTUxNCw3ICs1ODMsNyBA
QCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNy
ZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0CiAgICAgaWYgKHRleHRCbG9ja1N0eWxlLT5mb250KCku
bGluZVNwYWNpbmcoKSA+IGxpbmVIZWlnaHQodHJ1ZSwgdHJ1ZSkpCiAgICAgICAgIHRleHRCbG9j
a1N0eWxlLT5zZXRMaW5lSGVpZ2h0KExlbmd0aCgtMTAwLjBmLCBQZXJjZW50KSk7CiAKLSAgICB0
ZXh0QmxvY2tTdHlsZS0+c2V0RGlzcGxheShtX2lubmVyQmxvY2sgPyBJTkxJTkVfQkxPQ0sgOiBC
TE9DSyk7CisgICAgdGV4dEJsb2NrU3R5bGUtPnNldERpc3BsYXkoKG1faW5uZXJCbG9jayB8fCBo
YXNMaXN0QnV0dG9uKCkpID8gSU5MSU5FX0JMT0NLIDogQkxPQ0spOwogCiAgICAgLy8gV2UncmUg
YWRkaW5nIG9uZSBleHRyYSBwaXhlbCBvZiBwYWRkaW5nIHRvIG1hdGNoIFdpbklFLgogICAgIHRl
eHRCbG9ja1N0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgoMSwgRml4ZWQpKTsKQEAgLTUzNyw3
ICs2MDYsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmU6OmNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdAogICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gaW5uZXJCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOwogICAgIGlubmVyQmxv
Y2tTdHlsZS0+aW5oZXJpdEZyb20oc3RhcnRTdHlsZSk7CiAKLSAgICBpbm5lckJsb2NrU3R5bGUt
PnNldERpc3BsYXkoQkxPQ0spOworICAgIGlubmVyQmxvY2tTdHlsZS0+c2V0RGlzcGxheShJTkxJ
TkVfQkxPQ0spOwogICAgIGlubmVyQmxvY2tTdHlsZS0+c2V0RGlyZWN0aW9uKExUUik7CiAKICAg
ICAvLyBXZSBkb24ndCB3YW50IHRoZSBzaGFkb3cgZG9tIHRvIGJlIGVkaXRhYmxlLCBzbyB3ZSBz
ZXQgdGhpcyBibG9jayB0byByZWFkLW9ubHkgaW4gY2FzZSB0aGUgaW5wdXQgaXRzZWxmIGlzIGVk
aXRhYmxlLgpAQCAtNTg2LDYgKzY1NSwxNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUNhbmNlbEJ1dHRvblN0eWxlKGNvbgogICAg
IHJldHVybiBjYW5jZWxCbG9ja1N0eWxlLnJlbGVhc2UoKTsKIH0KIAorUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjcmVhdGVMaXN0QnV0dG9uU3R5
bGUoKSBjb25zdAoreworICAgIEFTU0VSVChub2RlKCktPmlzSFRNTEVsZW1lbnQoKSk7CisKKyAg
ICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJ1dHRvblN0eWxlID0gZ2V0Q2FjaGVkUHNldWRvU3R5bGUo
SU5QVVRfTElTVF9CVVRUT04pOworICAgIGlmICghYnV0dG9uU3R5bGUpCisgICAgICAgIGJ1dHRv
blN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAgIGJ1dHRvblN0eWxlLT5pbmhlcml0
RnJvbShzdHlsZSgpKTsKKyAgICByZXR1cm4gYnV0dG9uU3R5bGUucmVsZWFzZSgpOworfQorCiB2
b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6dXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJp
bGl0eSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhbmNlbEJ1dHRvbi0+cmVuZGVyZXIoKSkKQEAg
LTg0NSw0ICs5MjUsMTM1IEBAIElucHV0RWxlbWVudCogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjppbnB1dEVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiB0b0lucHV0RWxlbWVudChzdGF0
aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7CiB9CiAKK2NsYXNzIExpc3RQb3B1cENsaWVudCA6
IHB1YmxpYyBSZWZDb3VudGVkPExpc3RQb3B1cENsaWVudD4sIHByaXZhdGUgUG9wdXBNZW51Q2xp
ZW50IHsKK3ByaXZhdGU6CisgICAgUmVmUHRyPFBvcHVwTWVudT4gbV9wb3B1cDsKKyAgICBSZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUqIG1fcmVuZGVyZXI7CisgICAgYm9vbCBtX3BvcHVwSXNW
aXNpYmxlOworICAgIFZlY3RvcjxTdHJpbmc+IG1fdmFsdWVzOworICAgIFZlY3RvcjxTdHJpbmc+
IG1fbGFiZWxzOworcHVibGljOgorICAgIExpc3RQb3B1cENsaWVudChSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUqIHJlbmRlcmVyKQorICAgICAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCisg
ICAgICAgICwgbV9wb3B1cElzVmlzaWJsZShmYWxzZSkKKyAgICB7CisgICAgICAgIHJlc2V0RGF0
YSgpOworICAgICAgICBtX3BvcHVwID0gUG9wdXBNZW51OjpjcmVhdGUodGhpcyk7CisgICAgfQor
CisgICAgdm9pZCByZXNldERhdGEoKQorICAgIHsKKyAgICAgICAgbV92YWx1ZXMuY2xlYXIoKTsK
KyAgICAgICAgbV9sYWJlbHMuY2xlYXIoKTsKKyAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBs
aXN0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1fcmVuZGVyZXItPm5vZGUoKSkt
Pmxpc3QoKTsKKyAgICAgICAgaWYgKCFsaXN0KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBzdGF0aWNfY2FzdDxIVE1MRGF0YUxp
c3RFbGVtZW50Kj4obGlzdC5nZXQoKSktPm9wdGlvbnMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgb3B0aW9ucyAmJiBpIDwgb3B0aW9ucy0+bGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICAgICAgSFRNTE9wdGlvbkVsZW1lbnQqIG9wdGlvbiA9IHN0YXRpY19jYXN0PEhUTUxPcHRpb25F
bGVtZW50Kj4ob3B0aW9ucy0+aXRlbShpKSk7CisgICAgICAgICAgICBpZiAob3B0aW9uLT5kaXNh
YmxlZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBTdHJpbmcg
dmFsdWUgPSBvcHRpb24tPnZhbHVlKCk7CisgICAgICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgLy8gRklYTUU6IENoZWNr
IHZhbGlkaXR5IG9mICJ2YWx1ZSIgd2l0aCB0aGUgbV9yZW5kZXJlci0+bm9kZSgpJ3MgY3VycmVu
dCBjb25zdHJhaW50cy4KKyAgICAgICAgICAgIG1fdmFsdWVzLmFwcGVuZCh2YWx1ZSk7CisKKyAg
ICAgICAgICAgIFN0cmluZyBsYWJlbCA9IG9wdGlvbi0+bGFiZWwoKTsKKyAgICAgICAgICAgIGlm
IChsYWJlbC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbGFiZWwgPSBvcHRpb24tPnRleHQo
KTsKKyAgICAgICAgICAgIGlmIChsYWJlbC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbGFi
ZWwgPSB2YWx1ZTsKKyAgICAgICAgICAgIG1fbGFiZWxzLmFwcGVuZChsYWJlbCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIH5MaXN0UG9wdXBDbGllbnQoKSB7IG1fcG9wdXAtPmRp
c2Nvbm5lY3RDbGllbnQoKTsgfQorICAgIGJvb2wgdmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cG9wdXBJc1Zpc2libGU7IH0KKworICAgIHZvaWQgc2hvd1BvcHVwKCkKKyAgICB7CisgICAgICAg
IG1fcG9wdXBJc1Zpc2libGUgPSB0cnVlOworICAgICAgICBtX3BvcHVwLT5zaG93KG1fcmVuZGVy
ZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KHRydWUpLCBtX3JlbmRlcmVyLT5kb2N1bWVudCgp
LT52aWV3KCksIC0xKTsKKyAgICB9CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tIFBvcHVwTWVu
dUNsaWVudCBtZXRob2RzCisKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwKCkKKyAgICB7Cisg
ICAgICAgIG1fcG9wdXBJc1Zpc2libGUgPSBmYWxzZTsKKyAgICAgICAgbV9wb3B1cC0+aGlkZSgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkKHVuc2ln
bmVkIGxpc3RJbmRleCwgYm9vbCkKKyAgICB7CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG1fcmVuZGVyZXItPm5vZGUoKSk7
CisgICAgICAgIGlucHV0LT5zZXRWYWx1ZShtX3ZhbHVlc1tsaXN0SW5kZXhdKTsKKyAgICAgICAg
aW5wdXQtPnNlbGVjdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1UZXh0KHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QgeyByZXR1cm4gbV9sYWJlbHNbbGlzdEluZGV4XTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpdGVtSXNFbmFibGVkKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUodW5zaWduZWQpIGNv
bnN0IHsgcmV0dXJuIG1lbnVTdHlsZSgpOyB9CisKKyAgICB2aXJ0dWFsIFBvcHVwTWVudVN0eWxl
IG1lbnVTdHlsZSgpIGNvbnN0CisgICAgeworICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBt
X3JlbmRlcmVyLT5zdHlsZSgpOworICAgICAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUt
PmNvbG9yKCksIHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKSwgc3R5bGUtPmZvbnQoKSwgc3R5bGUt
PnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZS0+dGV4dEluZGVudCgpLCBzdHlsZS0+ZGly
ZWN0aW9uKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgaW50IGNsaWVudEluc2V0TGVmdCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCBjbGllbnRJbnNldFJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gMDsgfTsKKyAgICB2aXJ0dWFsIGludCBjbGllbnRQYWRkaW5nTGVmdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVuZGVyZXItPnBhZGRpbmdMZWZ0KCk7IH0KKyAgICB2aXJ0dWFsIGlu
dCBjbGllbnRQYWRkaW5nUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLT5wYWRkaW5n
UmlnaHQoKTsgfQorICAgIHZpcnR1YWwgaW50IGxpc3RTaXplKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZXMuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0IHsg
cmV0dXJuIC0xOyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc1NlcGFyYXRvcih1bnNpZ25lZCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzTGFiZWwodW5z
aWduZWQpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGl0ZW1Jc1Nl
bGVjdGVkKHVuc2lnbmVkKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRQb3BPdmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgdmFsdWVTaG91bGRDaGFuZ2VPbkhvdFRyYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW0odW5zaWduZWQgbGlzdEluZGV4KQor
ICAgIHsKKyAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4obV9yZW5kZXJlci0+bm9kZSgpKTsKKyAgICAgICAgaW5wdXQtPnNldFZh
bHVlKG1fdmFsdWVzW2xpc3RJbmRleF0pOworICAgIH0KKworICAgIHZpcnR1YWwgRm9udFNlbGVj
dG9yKiBmb250U2VsZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLT5kb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9yKCktPmZvbnRTZWxlY3RvcigpOyB9CisgICAgdmlydHVhbCBIb3N0V2lu
ZG93KiBob3N0V2luZG93KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1lbnQoKS0+
dmlldygpLT5ob3N0V2luZG93KCk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTY3JvbGxi
YXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJDbGllbnQqIGNsaWVudCwgU2Nyb2xsYmFyT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQor
ICAgIHsKKyAgICAgICAgUmVmUHRyPFNjcm9sbGJhcj4gd2lkZ2V0OworICAgICAgICBpZiAobV9y
ZW5kZXJlci0+c3R5bGUoKS0+aGFzUHNldWRvU3R5bGUoU0NST0xMQkFSKSkKKyAgICAgICAgICAg
IHdpZGdldCA9IFJlbmRlclNjcm9sbGJhcjo6Y3JlYXRlQ3VzdG9tU2Nyb2xsYmFyKGNsaWVudCwg
b3JpZW50YXRpb24sIG1fcmVuZGVyZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB3aWRl
dCA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xsYmFyKGNsaWVudCwgb3JpZW50YXRpb24s
IGNvbnRyb2xTaXplKTsKKyAgICAgICAgcmV0dXJuIHdpZGdldC5yZWxlYXNlKCk7CisgICAgfQor
fTsKKworYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6Omxpc3RQb3B1cElzVmlzaWJs
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdFBvcHVwQ2xpZW50ICYmIG1fbGlzdFBvcHVw
Q2xpZW50LT52aXNpYmxlKCk7Cit9CisKK3ZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
OjpzaG93TGlzdFBvcHVwKCkKK3sKKyAgICBpZiAoIW1fbGlzdFBvcHVwQ2xpZW50KQorICAgICAg
ICBtX2xpc3RQb3B1cENsaWVudCA9IG5ldyBMaXN0UG9wdXBDbGllbnQodGhpcyk7CisgICAgZWxz
ZQorICAgICAgICBtX2xpc3RQb3B1cENsaWVudC0+cmVzZXREYXRhKCk7CisgICAgbV9saXN0UG9w
dXBDbGllbnQtPnNob3dQb3B1cCgpOworfQorCit2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6aGlkZUxpc3RQb3B1cCgpCit7CisgICAgaWYgKG1fbGlzdFBvcHVwQ2xpZW50KQorICAg
ICAgICBtX2xpc3RQb3B1cENsaWVudC0+aGlkZVBvcHVwKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggZWUxNjNiMS4u
NTNmMjBhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xT
aW5nbGVMaW5lLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmgKQEAgLTI3LDcgKzI3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgSFRNTElucHV0RWxlbWVudDsKIGNsYXNzIElucHV0
RWxlbWVudDsKK2NsYXNzIElucHV0TGlzdEJ1dHRvbkVsZW1lbnQ7CitjbGFzcyBMaXN0UG9wdXBD
bGllbnQ7CiBjbGFzcyBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ7CiBjbGFzcyBTZWFy
Y2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50OwogY2xhc3MgU2VhcmNoUG9wdXBNZW51OwpAQCAt
MzgsNiArNDIsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKE5v
ZGUqKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoKTsKIAorICAg
IHZpcnR1YWwgYm9vbCBoYXNDb250cm9sQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdEJ1dHRv
bjsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBjb250cm9sQ2xpcFJlY3QoaW50IHR4LCBpbnQgdHkp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1RleHRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIGJvb2wgcGxhY2Vob2xkZXJJc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBt
X3BsYWNlaG9sZGVyVmlzaWJsZTsgfQpAQCAtNTEsOCArNTcsMTQgQEAgcHVibGljOgogICAgIHZv
aWQgc2hvd1BvcHVwKCk7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cCgpOyAvLyBQb3B1cE1l
bnVDbGllbnQgbWV0aG9kCiAKKyAgICBib29sIGxpc3RQb3B1cElzVmlzaWJsZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2hvd0xpc3RQb3B1cCgpOworICAgIHZvaWQgaGlkZUxpc3RQb3B1cCgpOworCiAg
ICAgdmlydHVhbCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRC
b3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBpbnQsIGludCk7CisgICAgdmlydHVhbCB2b2lkIGFk
ZEZvY3VzUmluZ1JlY3RzKEdyYXBoaWNzQ29udGV4dCosIGludCwgaW50KTsKICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0
eSwgSGl0VGVzdEFjdGlvbik7CkBAIC04NSw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJCbG9ja1N0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBzdGFydFN0eWxlKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjcmVhdGVS
ZXN1bHRzQnV0dG9uU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUNhbmNlbEJ1dHRvblN0eWxlKGNvbnN0
IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBjcmVhdGVMaXN0QnV0dG9uU3R5bGUoKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRlQ2Fu
Y2VsQnV0dG9uVmlzaWJpbGl0eSgpIGNvbnN0OwogICAgIEVWaXNpYmlsaXR5IHZpc2liaWxpdHlG
b3JDYW5jZWxCdXR0b24oKSBjb25zdDsKQEAgLTkzLDYgKzEwNiwxMiBAQCBwcml2YXRlOgogICAg
IHZvaWQgc3RhcnRTZWFyY2hFdmVudFRpbWVyKCk7CiAgICAgdm9pZCBzZWFyY2hFdmVudFRpbWVy
RmlyZWQoVGltZXI8UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lPiopOwogCisgICAgLy8gRGVj
b3JhdGlvbiB3aWR0aCBvdXRzaWRlIG9mIHRoZSB0ZXh0IGZpZWxkLgorcHVibGljOgorICAgIGlu
dCBkZWNvcmF0aW9uV2lkdGhSaWdodCgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBpbnQgcHJlZmVy
cmVkRGVjb3JhdGlvbldpZHRoUmlnaHQoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBQb3B1
cE1lbnVDbGllbnQgbWV0aG9kcwogICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWQodW5zaWdu
ZWQgbGlzdEluZGV4LCBib29sIGZpcmVFdmVudHMgPSB0cnVlKTsKQEAgLTExNywxOSArMTM2LDI5
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlU2Ny
b2xsYmFyKFNjcm9sbGJhckNsaWVudCosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJD
b250cm9sU2l6ZSk7CiAKICAgICBJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCgpIGNvbnN0Owor
ICAgIGJvb2wgaGFzTGlzdEJ1dHRvbigpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9w
bGFjZWhvbGRlclZpc2libGU7CiAgICAgYm9vbCBtX3NlYXJjaFBvcHVwSXNWaXNpYmxlOwogICAg
IGJvb2wgbV9zaG91bGREcmF3Q2Fwc0xvY2tJbmRpY2F0b3I7CiAKKyAgICAvLyBUaGUgcGFyZW50
IG9mIG1faW5uZXJUZXh0LCBtX3Jlc3VsdHNCdXR0b24sIGFuZCBtX2NhbmNlbEJ1dHRvbi4KKyAg
ICAvLyBUaGlzIGlzIDAgaWYgbmVpdGhlciBtX3Jlc3VsdHNCdXR0b24gbm9yIG1fY2FuY2VsQnV0
dG9uIGlzIG5lZWRlZC4KICAgICBSZWZQdHI8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IG1faW5u
ZXJCbG9jazsKKyAgICAvLyBBIGJ1dHRvbiBmb3IgdHlwZT1zZWFyY2guICBDYW4gYmUgMC4KICAg
ICBSZWZQdHI8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gbV9yZXN1bHRzQnV0dG9u
OworICAgIC8vIEEgYnV0dG9uIGZvciB0eXBlPXNlYXJjaC4gIENhbiBiZSAwLgogICAgIFJlZlB0
cjxTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ+IG1fY2FuY2VsQnV0dG9uOwogCiAgICAg
VGltZXI8UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lPiBtX3NlYXJjaEV2ZW50VGltZXI7CiAg
ICAgUmVmUHRyPFNlYXJjaFBvcHVwTWVudT4gbV9zZWFyY2hQb3B1cDsKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX3JlY2VudFNlYXJjaGVzOworCisgICAgLy8gQSBidXR0b24gZm9yIHRoZSBsaXN0IGF0
dHJpYnV0ZS4gIFRoaXMgaXMgYSBjaGlsZCBvZiBIVE1MSW5wdXRFbGVtZW50LgorICAgIFJlZlB0
cjxJbnB1dExpc3RCdXR0b25FbGVtZW50PiBtX2xpc3RCdXR0b247CisgICAgLy8gQSBtZW51IHNo
b3duIGJ5IGNsaWNraW5nIHRoZSBsaXN0IGJ1dHRvbi4KKyAgICBSZWZQdHI8TGlzdFBvcHVwQ2xp
ZW50PiBtX2xpc3RQb3B1cENsaWVudDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0gYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IGVmZDI4ZDkuLjk0ODgzYmYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtMTY3NCw2ICsxNjc0LDcg
QEAgYm9vbCBSZW5kZXJUaGVtZUNocm9taXVtTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QKICAgICBmbG9hdCB6b29tTGV2ZWwgPSBvLT5zdHls
ZSgpLT5lZmZlY3RpdmVab29tKCk7CiAKICAgICBOU1JlY3QgYm91bmRzID0gW3NlYXJjaCBjYW5j
ZWxCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChJbnRSZWN0VG9OU1JlY3QoaW5wdXQtPnJlbmRl
cmVyKCktPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KCkpKV07CisgICAgYm91bmRzLm9yaWdpbi54
IC09IHN0YXRpY19jYXN0PFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSo+KGlucHV0LT5yZW5k
ZXJlcigpKS0+ZGVjb3JhdGlvbldpZHRoUmlnaHQoKTsKICAgICAKICAgICBJbnRSZWN0IHVuem9v
bWVkUmVjdChOU1JlY3RUb0ludFJlY3QoYm91bmRzKSk7CiAgICAgaWYgKHpvb21MZXZlbCAhPSAx
LjBmKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDQ0ZmI2MTIuLjM3Nzlm
MjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAj
aW1wb3J0ICJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIgogI2ltcG9ydCAiUmVuZGVyTWVkaWEuaCIK
ICNpbXBvcnQgIlJlbmRlclNsaWRlci5oIgorI2ltcG9ydCAiUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmgiCiAjaW1wb3J0ICJSZW5kZXJWaWV3LmgiCiAjaW1wb3J0ICJTaGFyZWRCdWZmZXIu
aCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAgLTEyODcsNiArMTI4OCw3
IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oUmVu
ZGVyT2JqZWN0KiBvLCBjb25zdCBSZW5kZXJPCiAgICAgZmxvYXQgem9vbUxldmVsID0gby0+c3R5
bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwogCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gW3Nl
YXJjaCBjYW5jZWxCdXR0b25SZWN0Rm9yQm91bmRzOk5TUmVjdChpbnB1dC0+cmVuZGVyQm94KCkt
PmJvcmRlckJveFJlY3QoKSldOworICAgIGxvY2FsQm91bmRzLnNldFgobG9jYWxCb3VuZHMueCgp
IC0gc3RhdGljX2Nhc3Q8UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKj4oaW5wdXQtPnJlbmRl
cmVyKCkpLT5kZWNvcmF0aW9uV2lkdGhSaWdodCgpKTsKICAgICBsb2NhbEJvdW5kcyA9IGNvbnZl
cnRUb1BhaW50aW5nUmVjdChpbnB1dC0+cmVuZGVyZXIoKSwgbywgbG9jYWxCb3VuZHMsIHIpOwog
CiAgICAgRmxvYXRSZWN0IHVuem9vbWVkUmVjdChsb2NhbEJvdW5kcyk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCAzODBkOTlhLi40MGEw
MjY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAKQEAgLTIzNyw0ICsyMzcsMjcgQEAgdm9pZCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2dCkKICAgICAgICAgSFRNTERpdkVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZ0KTsKIH0KIAorSW5wdXRMaXN0QnV0dG9uRWxlbWVu
dDo6SW5wdXRMaXN0QnV0dG9uRWxlbWVudChEb2N1bWVudCogZG9jLCBOb2RlKiBzaGFkb3dQYXJl
bnQpCisgICAgOiBUZXh0Q29udHJvbElubmVyRWxlbWVudChkb2MsIHNoYWRvd1BhcmVudCkKK3sK
K30KKwordm9pZCBJbnB1dExpc3RCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50KiBldnQpCit7CisgICAgaWYgKGV2dC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRv
d25FdmVudCAmJiBldnQtPmlzTW91c2VFdmVudCgpICYmCisgICAgICAgIHN0YXRpY19jYXN0PE1v
dXNlRXZlbnQqPihldnQpLT5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB7CisgICAgICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KHNoYWRv
d1BhcmVudE5vZGUoKSk7CisgICAgICAgIGlucHV0LT5mb2N1cygpOworICAgICAgICBpbnB1dC0+
c2VsZWN0KCk7CisgICAgICAgIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSogcmVuZGVyZXIg
PSBzdGF0aWNfY2FzdDxSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUqPihpbnB1dC0+cmVuZGVy
ZXIoKSk7CisgICAgICAgIGlmIChyZW5kZXJlci0+bGlzdFBvcHVwSXNWaXNpYmxlKCkpCisgICAg
ICAgICAgICByZW5kZXJlci0+aGlkZUxpc3RQb3B1cCgpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICByZW5kZXJlci0+c2hvd0xpc3RQb3B1cCgpOworICAgICAgICBldnQtPnNldERlZmF1bHRI
YW5kbGVkKCk7CisgICAgfQorICAgIGlmICghZXZ0LT5kZWZhdWx0SGFuZGxlZCgpKQorICAgICAg
ICBIVE1MRGl2RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldnQpOworfQorCiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oCmluZGV4IDQ1YmE1Mzgu
LmI4ZTU3YTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJF
bGVtZW50cy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5oCkBAIC03NSw2ICs3NSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYXB0dXJpbmc7CiB9
OwogCitjbGFzcyBJbnB1dExpc3RCdXR0b25FbGVtZW50IDogcHVibGljIFRleHRDb250cm9sSW5u
ZXJFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBJbnB1dExpc3RCdXR0b25FbGVtZW50KERvY3VtZW50
KiwgTm9kZSopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7
Cit9OworCiB9IC8vbmFtZXNwYWNlCiAKICNlbmRpZgo=
</data>
<flag name="review"
          id="17970"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>