<?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>73616</bug_id>
          
          <creation_ts>2011-12-01 20:30:36 -0800</creation_ts>
          <short_desc>Asynchronous path and synchronous path of SpellChecker should share the code to mark misspellings</short_desc>
          <delta_ts>2011-12-11 20:41:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73628</dependson>
    
    <dependson>73889</dependson>
    
    <dependson>74033</dependson>
    
    <dependson>74035</dependson>
          <blocked>56368</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>morrita</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513437</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-01 20:30:36 -0800</bug_when>
    <thetext>Currently the unified spellchecker and un-unified spellchecker do not share the code to mark misspellings.
They should be merged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515787</commentid>
    <comment_count>1</comment_count>
      <attachid>118019</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-06 03:43:27 -0800</bug_when>
    <thetext>Created attachment 118019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516571</commentid>
    <comment_count>2</comment_count>
      <attachid>118196</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-07 02:59:56 -0800</bug_when>
    <thetext>Created attachment 118196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516575</commentid>
    <comment_count>3</comment_count>
      <attachid>118196</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-07 03:30:47 -0800</bug_when>
    <thetext>Comment on attachment 118196
Patch

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

Could you split the patch into some trivial part (like renaming, exporting an internal class, etc.) and possibly-observable change like make marking code shared?

&gt; Source/WebCore/ChangeLog:6
&gt; +        Need a short description and bug URL (OOPS!)

You don&apos;t need this.

&gt; Source/WebCore/editing/SpellChecker.h:80
&gt; +    class InternalSpellCheckRequest;

This doesn&apos;t need to be a nested class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518126</commentid>
    <comment_count>4</comment_count>
      <attachid>118534</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-08 22:44:48 -0800</bug_when>
    <thetext>Created attachment 118534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518127</commentid>
    <comment_count>5</comment_count>
      <attachid>118534</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 22:48:47 -0800</bug_when>
    <thetext>Comment on attachment 118534
Patch

Attachment 118534 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10780559</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518168</commentid>
    <comment_count>6</comment_count>
      <attachid>118534</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-09 01:00:38 -0800</bug_when>
    <thetext>Comment on attachment 118534
Patch

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

&gt; Source/WebCore/editing/SpellChecker.cpp:175
&gt; +    m_frame-&gt;editor()-&gt;markAndReplaceFor(m_processingRequest-&gt;mask(), results, m_processingRequest-&gt;checkingRange(), m_processingRequest-&gt;paragraphRange());

Could you pass SpellCheckRequest directly markAndReplaceFor() , instead of passing independent parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518207</commentid>
    <comment_count>7</comment_count>
      <attachid>118558</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-09 04:16:04 -0800</bug_when>
    <thetext>Created attachment 118558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518954</commentid>
    <comment_count>8</comment_count>
      <attachid>118558</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-11 17:51:50 -0800</bug_when>
    <thetext>Comment on attachment 118558
Patch

Looks OK. Thanks for doing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518956</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-12-11 17:53:02 -0800</bug_when>
    <thetext>Once this landed, could you write a test for Bug 56368?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518969</commentid>
    <comment_count>10</comment_count>
      <attachid>118558</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-11 19:12:22 -0800</bug_when>
    <thetext>Comment on attachment 118558
Patch

Clearing flags on attachment: 118558

Committed r102553: &lt;http://trac.webkit.org/changeset/102553&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518970</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-11 19:12:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518988</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-11 20:41:59 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Once this landed, could you write a test for Bug 56368?

Yes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118019</attachid>
            <date>2011-12-06 03:43:27 -0800</date>
            <delta_ts>2011-12-07 02:59:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73616-20111206204326.patch</filename>
            <type>text/plain</type>
            <size>28056</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRhMjI1MzAxYjAzMTRj
MGE5MTliM2RiOGMwMTAwMDAzOGFhMDkxNS4uZjM0NDhmOWNjODQ3MDFhNWFkZjUzMDgxNzk3OTdk
NzYxYTdiNTNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDExLTEyLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgQXN5bmNocm9ub3Vz
IHBhdGggYW5kIHN5bmNocm9ub3VzIHBhdGggb2YgU3BlbGxDaGVja2VyIHNob3VsZCBzaGFyZSB0
aGUgY29kZSB0byBtYXJrIG1pc3NwZWxsaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjE2CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2Ny
aXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIEFz
eW5jaHJvbm91cyBTcGVsbENoZWNrZXIgYW5kIHN5bmNocm9ub3VzIFNwZWxsQ2hlY2tlciBzaGFy
ZSB0aGUgY29kZSB0byBtYXJrIG1pc3NwZWxsaW5ncy4KKyAgICAgICAgQXN5bmNocm9ub3VzIFNw
ZWxsQ2hlY2tlciBtYXkgYmUgY2FsbGVkIHNldmVyYWwgdGltZXMgaW4gb25lIHRpbWUsIGl0IGNo
ZWNrcyB0aGUgc3BlbGxpbmdzIG9mIHdob2xlIHNlbnRlbmNlcworICAgICAgICBhdCBvbmNlIHRv
IG1hcmsgbWlzc3BlbGxpbmdzIHdvcmRzLCB0aG91Z2ggc3luY2hyb25vdXMgc3BlbGxjaGVja2Vy
IGNoZWNrcyBhIGZldyBwaHJhc2VzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZ3MgdGVzdHMu
CisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgorICAgICAgICAgIENhbGxzIGEgbmV3
IGludGVyZmFjZSBvZiBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvci4KKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyk6CisgICAgICAgICAgQ2FsbHMgdGhlIG1lcmdlZCBwYXRoIGV2ZW4gaWYgc3luY2hyb25vdXMg
c3BlbGxjaGVja2VyIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbmRS
ZXBsYWNlRm9yKToKKyAgICAgICAgICBNYXJrcyBhbmQgcmVwbGFjZXMgbWlzc3BlbGxpbmcgd29y
ZHMuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OkludGVybmFsU3Bl
bGxDaGVja1JlcXVlc3Q6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3QpOgorICAgICAgICAgIElu
dHJvZHVjZXMgaW50ZXJuYWwgcmVxdWVzdCBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpJbnRlcm5hbFNwZWxsQ2hlY2tSZXF1ZXN0OjpjaGVj
a2luZ1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6SW50ZXJuYWxTcGVs
bENoZWNrUmVxdWVzdDo6cGFyYWdyYXBoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxD
aGVja2VyOjpJbnRlcm5hbFNwZWxsQ2hlY2tSZXF1ZXN0Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlcjo6SW50ZXJuYWxTcGVsbENoZWNrUmVxdWVzdDo6bWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q6OnJv
b3RFZGl0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6
OlNwZWxsQ2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
Ojp+U3BlbGxDaGVja1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpj
cmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENo
ZWNraW5nRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6aW52b2tlUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmVucXVldWVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2spOgorICAgICAgICAgIENhbGxz
IHRoZSBtZXJnZWQgcGF0aCB0byBtYXJrIG1pc3NwZWxsaW5nIHdvcmRzIGluc3RlYWQgb2YgdGhl
IGV4aXN0aW5ncyBwYXRoLgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6Y2hlY2tpbmdSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6cGFyYWdyYXBoUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
bGxDaGVja1JlcXVlc3Q6Om1hc2spOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVl
c3Q6OnJvb3RFZGl0YWJsZUVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4
dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgICBBIG5ldyBpbnRlcmZhY2UgdG8gdGFrZSBh
IHBhcmFncmFwaCByYW5nZSBpcyBpbnRyb2R1Y2VkLgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmg6CisKIDIwMTEtMTItMDYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDIw
NDMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZmQ3ODI2YTZmMWQ2MWZhODRlODQx
MTFhMGNiNDljNzZkOTE1YzA3NS4uYmIzYjIyODIwY2U0NjFjZmUzMGNmZjQ1YTU3NmQzZGYzZDRj
OTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDE2LDggKzQxNiw4IEBAIHZv
aWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQsCiAgICAgaWYgKCFub2RlVG9DaGVjaykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihyZXNvbHZlVGV4
dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5n
VHlwZUdyYW1tYXIpLAotICAgICAgICBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCks
IGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25Jbk5vZGUobm9k
ZVRvQ2hlY2spKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvQ2hlY2sgPSBSYW5nZTo6Y3Jl
YXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2sp
LCBsYXN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spKTsKKyAgICBtX3NwZWxsQ2hlY2tlci0+
cmVxdWVzdENoZWNraW5nRm9yKFNwZWxsQ2hlY2tlcjo6Y3JlYXRlUmVxdWVzdChyZXNvbHZlVGV4
dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5n
VHlwZUdyYW1tYXIpLCByYW5nZVRvQ2hlY2ssIHJhbmdlVG9DaGVjaykpOwogfQogCiB2b2lkIEVk
aXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBz
ZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UpCkBAIC0yMDA5LDM0ICsyMDA5LDI5
IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2Vz
KFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDCiAgICAgaWYgKCFpc1NwZWxsQ2hlY2tpbmdFbmFi
bGVkRm9yKGVkaXRhYmxlTm9kZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRleHRDaGVja2lu
Z1BhcmFncmFwaCBzcGVsbGluZ1BhcmFncmFwaChzcGVsbGluZ1JhbmdlKTsKLSAgICBUZXh0Q2hl
Y2tpbmdQYXJhZ3JhcGggZ3JhbW1hclBhcmFncmFwaChzaG91bGRNYXJrR3JhbW1hciA/IGdyYW1t
YXJSYW5nZSA6IDApOwotCi0gICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyID8gKHNwZWxsaW5nUGFy
YWdyYXBoLmlzUmFuZ2VFbXB0eSgpICYmIGdyYW1tYXJQYXJhZ3JhcGguaXNFbXB0eSgpKSA6IHNw
ZWxsaW5nUGFyYWdyYXBoLmlzRW1wdHkoKSkKKyAgICBSYW5nZSogcmFuZ2VUb0NoZWNrID0gc2hv
dWxkTWFya0dyYW1tYXIgPyBncmFtbWFyUmFuZ2UgOiBzcGVsbGluZ1JhbmdlOworICAgIFRleHRD
aGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGhUb0NoZWNrKHJhbmdlVG9DaGVjayk7CisgICAgaWYg
KHBhcmFncmFwaFRvQ2hlY2suaXNSYW5nZUVtcHR5KCkgfHwgcGFyYWdyYXBoVG9DaGVjay5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgYXN5bmNocm9ub3VzID0gbV9mcmFt
ZSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPmFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgIXNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWw7
CiAgICAgaWYgKGFzeW5jaHJvbm91cykgewotICAgICAgICBpZiAoc2hvdWxkTWFya0dyYW1tYXIp
Ci0gICAgICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJlc29sdmVU
ZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgZ3JhbW1hclBhcmFncmFw
aC5wYXJhZ3JhcGhSYW5nZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9zcGVsbENo
ZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4
dENoZWNraW5nT3B0aW9ucyksIHNwZWxsaW5nUGFyYWdyYXBoLnBhcmFncmFwaFJhbmdlKCkpOwor
ICAgICAgICAvLyBJbiBhc3luY2hyb25vdXMgbW9kZSwgd2UgaW50ZW50aW9uYWxseSBjaGVjayBw
YXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KKyAgICAgICAgUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhS
YW5nZSA9IHBhcmFncmFwaFRvQ2hlY2sucGFyYWdyYXBoUmFuZ2UoKTsKKyAgICAgICAgbV9zcGVs
bENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihTcGVsbENoZWNrZXI6OmNyZWF0ZVJlcXVlc3Qo
cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCBwYXJhZ3Jh
cGhSYW5nZSwgcGFyYWdyYXBoUmFuZ2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0gICAgaWYgKHNob3VsZE1hcmtH
cmFtbWFyKQotICAgICAgICBjaGVja1RleHRPZlBhcmFncmFwaCh0ZXh0Q2hlY2tlcigpLCBncmFt
bWFyUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExlbmd0
aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKLSAg
ICBlbHNlCi0gICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKHRleHRDaGVja2VyKCksIHNwZWxs
aW5nUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHNwZWxsaW5nUGFyYWdyYXBoLnRleHRMZW5n
dGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29s
dmVUZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRpb25zKSwgcmVzdWx0cyk7Ci0K
LSAgICBtYXJrQW5kUmVwbGFjZUZvcih0ZXh0Q2hlY2tpbmdPcHRpb25zLCByZXN1bHRzLCBzcGVs
bGluZ1BhcmFncmFwaCwgZ3JhbW1hclBhcmFncmFwaCk7CisgICAgY2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgodGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50ZXh0Q2hhcmFjdGVycygpLCBwYXJh
Z3JhcGhUb0NoZWNrLnRleHRMZW5ndGgoKSwKKyAgICAgICAgcmVzb2x2ZVRleHRDaGVja2luZ1R5
cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsKKyAgICBtYXJrQW5kUmVwbGFj
ZUZvcih0ZXh0Q2hlY2tpbmdPcHRpb25zLCByZXN1bHRzLCByYW5nZVRvQ2hlY2ssIHBhcmFncmFw
aFRvQ2hlY2sucGFyYWdyYXBoUmFuZ2UoKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjptYXJrQW5kUmVw
bGFjZUZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBjb25zdCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cywgY29uc3QgVGV4dENoZWNraW5nUGFy
YWdyYXBoJiBzcGVsbGluZ1BhcmFncmFwaCwgY29uc3QgVGV4dENoZWNraW5nUGFyYWdyYXBoJiBn
cmFtbWFyUGFyYWdyYXBoKQordm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFRleHRDaGVj
a2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzLCBQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1JhbmdlLCBQYXNz
UmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSkKIHsKKyAgICBjb25zdCBUZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGggcGFyYWdyYXBoKGNoZWNraW5nUmFuZ2UsIHBhcmFncmFwaFJhbmdlKTsKKwogICAg
IGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZzsKICAgICBib29sIHNob3VsZE1hcmtHcmFtbWFyID0gdGV4dENoZWNr
aW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwogICAgIGJvb2wgc2hvdWxkUGVy
Zm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVS
ZXBsYWNlbWVudDsKQEAgLTIwNTQsMTEgKzIwNDksMTEgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRS
ZXBsYWNlRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIGNvbnN0
IFYKICAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb25UeXBlKCkgPT0g
VmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb24pIHsKICAgICAgICAgICAgIC8vIEF0dGVt
cHQgdG8gc2F2ZSB0aGUgY2FyZXQgcG9zaXRpb24gc28gd2UgY2FuIHJlc3RvcmUgaXQgbGF0ZXIg
aWYgbmVlZGVkCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJldFBvc2l0aW9uID0gbV9mcmFtZS0+
c2VsZWN0aW9uKCktPmVuZCgpOwotICAgICAgICAgICAgc2VsZWN0aW9uT2Zmc2V0ID0gc3BlbGxp
bmdQYXJhZ3JhcGgub2Zmc2V0VG8oY2FyZXRQb3NpdGlvbiwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgPSBwYXJhZ3JhcGgub2Zmc2V0VG8oY2FyZXRQ
b3NpdGlvbiwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgICAgICByZXN0b3JlU2VsZWN0
aW9uQWZ0ZXJDaGFuZ2UgPSB0cnVlOwotICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+
IDAgJiYgKHNlbGVjdGlvbk9mZnNldCA+IHNwZWxsaW5nUGFyYWdyYXBoLnRleHRMZW5ndGgoKSB8
fCBzcGVsbGluZ1BhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpID09IG5l
d2xpbmVDaGFyYWN0ZXIpKQorICAgICAgICAgICAgaWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYg
KHNlbGVjdGlvbk9mZnNldCA+IHBhcmFncmFwaC50ZXh0TGVuZ3RoKCkgfHwgcGFyYWdyYXBoLnRl
eHRDaGFyQXQoc2VsZWN0aW9uT2Zmc2V0IC0gMSkgPT0gbmV3bGluZUNoYXJhY3RlcikpCiAgICAg
ICAgICAgICAgICAgYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdyYXBoQm91bmRhcmllcyA9IHRydWU7
Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQg
PD0gc3BlbGxpbmdQYXJhZ3JhcGgudGV4dExlbmd0aCgpICYmIGlzQW1iaWd1b3VzQm91bmRhcnlD
aGFyYWN0ZXIoc3BlbGxpbmdQYXJhZ3JhcGgudGV4dENoYXJBdChzZWxlY3Rpb25PZmZzZXQgLSAx
KSkpCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4gMCAmJiBzZWxlY3Rpb25PZmZz
ZXQgPD0gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSAmJiBpc0FtYmlndW91c0JvdW5kYXJ5Q2hhcmFj
dGVyKHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9mZnNldCAtIDEpKSkKICAgICAgICAg
ICAgICAgICBhbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IHNlbGVjdGlvbk9mZnNldCAtIDE7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMDcwLDcgKzIwNjUsNyBAQCB2b2lkIEVkaXRvcjo6bWFya0Fu
ZFJlcGxhY2VGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucywgY29u
c3QgVgogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50ID0gMDsKIAogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGludCBzcGVs
bGluZ1JhbmdlRW5kT2Zmc2V0ID0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdFbmQoKSArIG9m
ZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0
ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBvZmZzZXREdWVUb1JlcGxhY2VtZW50OwogICAg
ICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCA9ICZyZXN1bHRzW2ldOwogICAg
ICAgICBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1bHQtPmxvY2F0aW9uICsgb2Zmc2V0RHVlVG9S
ZXBsYWNlbWVudDsKICAgICAgICAgaW50IHJlc3VsdExlbmd0aCA9IHJlc3VsdC0+bGVuZ3RoOwpA
QCAtMjA4MSwyMyArMjA3NiwyMyBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoVGV4
dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucywgY29uc3QgVgogICAgICAgICAv
LyAyLiBSZXN1bHQgZmFsbHMgd2l0aGluIHNwZWxsaW5nUmFuZ2UuCiAgICAgICAgIC8vIDMuIFRo
ZSB3b3JkIGluIHF1ZXN0aW9uIGRvZXNuJ3QgZW5kIGF0IGFuIGFtYmlndW91cyBib3VuZGFyeS4g
Rm9yIGluc3RhbmNlLCB3ZSB3b3VsZCBub3QgbWFyawogICAgICAgICAvLyAgICAid291bGRuJyIg
YXMgbWlzc3BlbGxlZCByaWdodCBhZnRlciBhcG9zdHJvcGhlIGlzIHR5cGVkLgotICAgICAgICBp
ZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmcgJiYgcmVzdWx0TG9jYXRpb24gPj0gc3BlbGxpbmdQYXJhZ3JhcGguY2hlY2tpbmdT
dGFydCgpICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VF
bmRPZmZzZXQgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CisgICAgICAgIGlm
IChzaG91bGRNYXJrU3BlbGxpbmcgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZyAmJiByZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpICYm
IHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQg
JiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7CiAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+PSAwKTsKLSAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZSA9IHNwZWxsaW5nUGFyYWdyYXBoLnN1YnJhbmdl
KHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAgUmVmUHRyPFJhbmdl
PiBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCBy
ZXN1bHRMZW5ndGgpOwogICAgICAgICAgICAgaWYgKCFtX3NwZWxsaW5nQ29ycmVjdG9yLT5pc1Nw
ZWxsaW5nTWFya2VyQWxsb3dlZChtaXNzcGVsbGluZ1JhbmdlKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkt
PmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCks
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkTWFy
a0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyICYmIGdy
YW1tYXJQYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0
TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYgKHNob3VsZE1hcmtHcmFtbWFyICYmIHJlc3Vs
dC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAmJiBwYXJhZ3JhcGguY2hlY2tpbmdS
YW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgewogICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9jYXRpb24gPj0gMCk7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0LT5kZXRhaWxzLnNpemUoKTsgaisr
KSB7CiAgICAgICAgICAgICAgICAgY29uc3QgR3JhbW1hckRldGFpbCogZGV0YWlsID0gJnJlc3Vs
dC0+ZGV0YWlsc1tqXTsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGV0YWlsLT5sZW5ndGggPiAw
ICYmIGRldGFpbC0+bG9jYXRpb24gPj0gMCk7Ci0gICAgICAgICAgICAgICAgaWYgKGdyYW1tYXJQ
YXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiArIGRldGFpbC0+bG9j
YXRpb24sIGRldGFpbC0+bGVuZ3RoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFu
Z2U+IGJhZEdyYW1tYXJSYW5nZSA9IGdyYW1tYXJQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9j
YXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxlbmd0aCk7CisgICAgICAgICAgICAg
ICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJzKHJlc3VsdExvY2F0aW9uICsgZGV0
YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExv
Y2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpOwogICAgICAgICAgICAg
ICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1h
cmtlcnMoKS0+YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6
OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0TG9jYXRpb24gKyByZXN1bHRM
ZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiByZXN1bHRMb2NhdGlvbiArIHJlc3Vs
dExlbmd0aCA+PSBzcGVsbGluZ1BhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkKKyAgICAgICAgfSBl
bHNlIGlmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA8PSBzcGVsbGluZ1JhbmdlRW5k
T2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoID49IHBhcmFncmFwaC5jaGVj
a2luZ1N0YXJ0KCkKICAgICAgICAgICAgICAgICAgICAgJiYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0
Q2hlY2tpbmdUeXBlTGluawogICAgICAgICAgICAgICAgICAgICB8fCByZXN1bHQtPnR5cGUgPT0g
VGV4dENoZWNraW5nVHlwZVF1b3RlCiAgICAgICAgICAgICAgICAgICAgIHx8IHJlc3VsdC0+dHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaApAQCAtMjExNiw3ICsyMTExLDcgQEAgdm9pZCBFZGl0
b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09w
dGlvbnMsIGNvbnN0IFYKICAgICAgICAgICAgIC8vIDIuIFRoZSByZXN1bHQgZG9lc24ndCBlbmQg
YXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAgICAgLy8gICAgKEZJWE1FOiB0aGlz
IGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQgYW5kIHRleHQgY2hlY2tpbmcgY2Fu
IGRvIHRoaXMgZm9yIHVzCiAgICAgICAgICAgICBib29sIGRvUmVwbGFjZW1lbnQgPSByZXBsYWNl
bWVudExlbmd0aCA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5OwotICAgICAg
ICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvUmVwbGFjZSA9IHNwZWxsaW5nUGFyYWdyYXBoLnN1
YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAgICAgICAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5zdWJyYW5nZShyZXN1bHRMb2NhdGlv
biwgcmVzdWx0TGVuZ3RoKTsKICAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
VG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLmdldCgpLCBET1dOU1RSRUFNKTsKIAogICAgICAgICAg
ICAgLy8gYWRkaW5nIGxpbmtzIHNob3VsZCBiZSBkb25lIG9ubHkgaW1tZWRpYXRlbHkgYWZ0ZXIg
dGhleSBhcmUgdHlwZWQKQEAgLTIxNzQsMTMgKzIxNjksMTMgQEAgdm9pZCBFZGl0b3I6Om1hcmtB
bmRSZXBsYWNlRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIGNv
bnN0IFYKIAogICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1hcmtlciBzbyB0aGF0IGNvcnJlY3Rp
b25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBiZSByZS1jb3JyZWN0ZWQuCiAgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlv
bikKLSAgICAgICAgICAgICAgICAgICAgbV9zcGVsbGluZ0NvcnJlY3Rvci0+bWFya0NvcnJlY3Rp
b24oc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50
TGVuZ3RoKSwgcmVwbGFjZWRTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICBtX3NwZWxsaW5n
Q29ycmVjdG9yLT5tYXJrQ29ycmVjdGlvbihwYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0TG9jYXRp
b24sIHJlcGxhY2VtZW50TGVuZ3RoKSwgcmVwbGFjZWRTdHJpbmcpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHNlbGVjdGlvbkNoYW5nZWQpIHsKLSAgICAgICAg
VGV4dENoZWNraW5nUGFyYWdyYXBoIGV4dGVuZGVkUGFyYWdyYXBoKHNwZWxsaW5nUGFyYWdyYXBo
KTsKKyAgICAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIGV4dGVuZGVkUGFyYWdyYXBoKHBhcmFn
cmFwaCk7CiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGNhcmV0IHBvc2l0aW9uIGlmIHdlIGhhdmUg
bWFkZSBhbnkgcmVwbGFjZW1lbnRzCiAgICAgICAgIGV4dGVuZGVkUGFyYWdyYXBoLmV4cGFuZFJh
bmdlVG9OZXh0RW5kKCk7CiAgICAgICAgIGlmIChyZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2Ug
JiYgc2VsZWN0aW9uT2Zmc2V0ID49IDAgJiYgc2VsZWN0aW9uT2Zmc2V0IDw9IGV4dGVuZGVkUGFy
YWdyYXBoLnJhbmdlTGVuZ3RoKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGRjNTM5
ZGRkNDE4NzBiODg3OWRkZTRhYWY2M2YyYTExYWVjZDZhNWQuLjVhZWY4YTkwMDNiNzc4MjYyNzNk
ODkxYTcxMjUzNjk1MjA5MDZkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNjMsNyAr
NjMsNyBAQCBjbGFzcyBTcGVsbENoZWNrZXI7CiBjbGFzcyBUZXh0OwogY2xhc3MgVGV4dENoZWNr
ZXJDbGllbnQ7CiBjbGFzcyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg7Ci1jbGFzcyBUZXh0Q2hlY2tp
bmdSZXN1bHQ7CitzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OwogY2xhc3MgVGV4dEV2ZW50Owog
CiBzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxpbmUgewpAQCAtMjIyLDYgKzIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJl
ZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3Jh
bW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwg
Ym9vbCBtYXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlv
bik7CisgICAgdm9pZCBtYXJrQW5kUmVwbGFjZUZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29u
c3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mLCBQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2lu
Z1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSk7CiAKICNpZiBVU0UoQVVU
T01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CkBAIC00
MDUsNyArNDA2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKFBhc3RlYm9hcmQqKTsKICAgICB2b2lkIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09w
ZXJhdGlvbigpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIHZvaWQgbWFya0FuZFJlcGxhY2VGb3IoVGV4dENoZWNr
aW5nVHlwZU1hc2ssIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiwgY29uc3QgVGV4
dENoZWNraW5nUGFyYWdyYXBoJiBzcGVsbGluZ1BhcmFncmFwaCwgY29uc3QgVGV4dENoZWNraW5n
UGFyYWdyYXBoJiBncmFtbWFyUGFyYWdyYXBoKTsKICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBy
ZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlwZU1hc2spOwogCiAgICAg
dm9pZCBzZWxlY3RDb21wb3NpdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNr
ZXIuY3BwCmluZGV4IDhmZjU3NDIxNzQyMjZiNGYyMjA3OWJhMzEwNzk1MzRlMWI2YTE0ZjQuLmY4
Yjk2OTA4YjFlOTQyOTgxMGQxMjNjZWE2NTBjNjZkMTRkZWM4NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTQ1LDMxICs0NSw0MiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFNwZWxsQ2hlY2tlcjo6U3BlbGxDaGVja1JlcXVlc3QgOiBwdWJs
aWMgUmVmQ291bnRlZDxTcGVsbENoZWNrZXI6OlNwZWxsQ2hlY2tSZXF1ZXN0PiB7CitjbGFzcyBT
cGVsbENoZWNrZXI6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRl
ZDxTcGVsbENoZWNrZXI6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q+IHsKIHB1YmxpYzoKLSAg
ICBTcGVsbENoZWNrUmVxdWVzdChpbnQgc2VxdWVuY2UsIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
LCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2spCisgICAgSW50
ZXJuYWxTcGVsbENoZWNrUmVxdWVzdChpbnQgc2VxdWVuY2UsIFBhc3NSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IHJlcXVlc3QpCiAgICAgICAgIDogbV9zZXF1ZW5jZShzZXF1ZW5jZSkKLSAgICAg
ICAgLCBtX3JhbmdlKHJhbmdlKQotICAgICAgICAsIG1fdGV4dCh0ZXh0KQotICAgICAgICAsIG1f
bWFzayhtYXNrKQotICAgICAgICAsIG1fcm9vdEVkaXRhYmxlRWxlbWVudChtX3JhbmdlLT5zdGFy
dENvbnRhaW5lcigpLT5yb290RWRpdGFibGVFbGVtZW50KCkpCisgICAgICAgICwgbV9yZXF1ZXN0
KHJlcXVlc3QpCiAgICAgeworICAgICAgICBBU1NFUlQobV9yZXF1ZXN0KTsKICAgICB9CiAKICAg
ICBpbnQgc2VxdWVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcXVlbmNlOyB9Ci0gICAgUmFuZ2Uq
IHJhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZS5nZXQoKTsgfQotICAgIGNvbnN0IFN0cmlu
ZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQotICAgIFRleHRDaGVja2luZ1R5cGVN
YXNrIG1hc2soKSBjb25zdCB7IHJldHVybiBtX21hc2s7IH0KLSAgICBFbGVtZW50KiByb290RWRp
dGFibGVFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50OyB9Cisg
ICAgUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdDsgfQorCisgICAgUGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSgpIGNv
bnN0IHsgcmV0dXJuIHJlcXVlc3QoKS0+Y2hlY2tpbmdSYW5nZSgpOyB9CisgICAgUGFzc1JlZlB0
cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2UoKSBjb25zdCB7IHJldHVybiByZXF1ZXN0KCktPnBhcmFn
cmFwaFJhbmdlKCk7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBy
ZXF1ZXN0KCktPnRleHQoKTsgfQorICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2soKSBjb25z
dCB7IHJldHVybiByZXF1ZXN0KCktPm1hc2soKTsgfQorICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJs
ZUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiByZXF1ZXN0KCktPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KTsgfQogCiBwcml2YXRlOgogICAgIGludCBtX3NlcXVlbmNlOwotICAgIFJlZlB0cjxSYW5nZT4g
bV9yYW5nZTsKLSAgICBTdHJpbmcgbV90ZXh0OwotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIG1f
bWFzazsKLSAgICBFbGVtZW50KiBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQ7CisgICAgUmVmUHRyPFNw
ZWxsQ2hlY2tSZXF1ZXN0PiBtX3JlcXVlc3Q7CiB9OwogCitTcGVsbENoZWNrUmVxdWVzdDo6U3Bl
bGxDaGVja1JlcXVlc3QoUGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSwgUGFzc1JlZlB0
cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dENoZWNraW5n
VHlwZU1hc2sgbWFzaykKKyAgICA6IG1fY2hlY2tpbmdSYW5nZShjaGVja2luZ1JhbmdlKQorICAg
ICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5nZSkKKyAgICAsIG1fdGV4dCh0ZXh0KQor
ICAgICwgbV9tYXNrKG1hc2spCisgICAgLCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2lu
Z1JhbmdlLT5zdGFydENvbnRhaW5lcigpLT5yb290RWRpdGFibGVFbGVtZW50KCkpCit7Cit9CisK
K1NwZWxsQ2hlY2tSZXF1ZXN0Ojp+U3BlbGxDaGVja1JlcXVlc3QoKQoreworfQorCiBTcGVsbENo
ZWNrZXI6OlNwZWxsQ2hlY2tlcihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQog
ICAgICwgbV9sYXN0UmVxdWVzdGVkU2VxdWVuY2UoMCkKQEAgLTg5LDE1ICsxMDAsMTcgQEAgVGV4
dENoZWNrZXJDbGllbnQqIFNwZWxsQ2hlY2tlcjo6Y2xpZW50KCkgY29uc3QKICAgICByZXR1cm4g
cGFnZS0+ZWRpdG9yQ2xpZW50KCktPnRleHRDaGVja2VyKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3Bl
bGxDaGVja2VyOjpTcGVsbENoZWNrUmVxdWVzdD4gU3BlbGxDaGVja2VyOjpjcmVhdGVSZXF1ZXN0
KFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlKQorLy8g
c3RhdGljCitQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrZXI6OmNyZWF0
ZVJlcXVlc3QoVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucywgUGFzc1Jl
ZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSwgUGFzc1JlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFu
Z2UpCiB7Ci0gICAgQVNTRVJUKGNhbkNoZWNrQXN5bmNocm9ub3VzbHkocmFuZ2UuZ2V0KCkpKTsK
KyAgICBBU1NFUlQoY2hlY2tpbmdSYW5nZSk7CisgICAgQVNTRVJUKHBhcmFncmFwaFJhbmdlKTsK
IAotICAgIFN0cmluZyB0ZXh0ID0gcmFuZ2UtPnRleHQoKTsKKyAgICBTdHJpbmcgdGV4dCA9IGNo
ZWNraW5nUmFuZ2UtPnRleHQoKTsKICAgICBpZiAoIXRleHQubGVuZ3RoKCkpCiAgICAgICAgIHJl
dHVybiBQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PigpOwogCi0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTcGVsbENoZWNrUmVxdWVzdCgrK21fbGFzdFJlcXVlc3RlZFNlcXVlbmNlLCByYW5n
ZSwgdGV4dCwgbWFzaykpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlbGxDaGVja1JlcXVl
c3QoY2hlY2tpbmdSYW5nZSwgcGFyYWdyYXBoUmFuZ2UsIHRleHQsIHRleHRDaGVja2luZ09wdGlv
bnMpKTsKIH0KIAogdm9pZCBTcGVsbENoZWNrZXI6OnRpbWVyRmlyZWRUb1Byb2Nlc3NRdWV1ZWRS
ZXF1ZXN0KFRpbWVyPFNwZWxsQ2hlY2tlcj4qKQpAQCAtMTI0LDI0ICsxMzcsMjUgQEAgYm9vbCBT
cGVsbENoZWNrZXI6OmlzQ2hlY2thYmxlKFJhbmdlKiByYW5nZSkgY29uc3QKICAgICByZXR1cm4g
cmFuZ2UgJiYgcmFuZ2UtPmZpcnN0Tm9kZSgpICYmIHJhbmdlLT5maXJzdE5vZGUoKS0+cmVuZGVy
ZXIoKTsKIH0KIAotdm9pZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0ZvcihUZXh0Q2hl
Y2tpbmdUeXBlTWFzayBtYXNrLCBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSkKK3ZvaWQgU3BlbGxD
aGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3IoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4g
cmVxdWVzdCkKIHsKLSAgICBpZiAoIWNhbkNoZWNrQXN5bmNocm9ub3VzbHkocmFuZ2UuZ2V0KCkp
KQorICAgIGlmICghY2FuQ2hlY2tBc3luY2hyb25vdXNseShyZXF1ZXN0LT5wYXJhZ3JhcGhSYW5n
ZSgpLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFNwZWxsQ2hlY2tSZXF1
ZXN0PiByZXF1ZXN0KGNyZWF0ZVJlcXVlc3QobWFzaywgcmFuZ2UpKTsKLSAgICBpZiAoIXJlcXVl
c3QpCisgICAgUmVmUHRyPEludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q+IGludGVybmFsUmVxdWVz
dChhZG9wdFJlZihuZXcgSW50ZXJuYWxTcGVsbENoZWNrUmVxdWVzdCgrK21fbGFzdFJlcXVlc3Rl
ZFNlcXVlbmNlLCByZXF1ZXN0KSkpOworCisgICAgaWYgKCFpbnRlcm5hbFJlcXVlc3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5pc0Fj
dGl2ZSgpIHx8IG1fcHJvY2Vzc2luZ1JlcXVlc3QpIHsKLSAgICAgICAgZW5xdWV1ZVJlcXVlc3Qo
cmVxdWVzdC5yZWxlYXNlKCkpOworICAgICAgICBlbnF1ZXVlUmVxdWVzdChpbnRlcm5hbFJlcXVl
c3QucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludm9rZVJlcXVl
c3QocmVxdWVzdC5yZWxlYXNlKCkpOworICAgIGludm9rZVJlcXVlc3QoaW50ZXJuYWxSZXF1ZXN0
LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2VyOjppbnZva2VSZXF1ZXN0KFBhc3NS
ZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QpCit2b2lkIFNwZWxsQ2hlY2tlcjo6aW52
b2tlUmVxdWVzdChQYXNzUmVmUHRyPEludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3Qp
CiB7CiAgICAgQVNTRVJUKCFtX3Byb2Nlc3NpbmdSZXF1ZXN0KTsKIApAQCAtMTQ5LDcgKzE2Myw3
IEBAIHZvaWQgU3BlbGxDaGVja2VyOjppbnZva2VSZXF1ZXN0KFBhc3NSZWZQdHI8U3BlbGxDaGVj
a1JlcXVlc3Q+IHJlcXVlc3QpCiAgICAgY2xpZW50KCktPnJlcXVlc3RDaGVja2luZ09mU3RyaW5n
KHRoaXMsIG1fcHJvY2Vzc2luZ1JlcXVlc3QtPnNlcXVlbmNlKCksIG1fcHJvY2Vzc2luZ1JlcXVl
c3QtPm1hc2soKSwgbV9wcm9jZXNzaW5nUmVxdWVzdC0+dGV4dCgpKTsKIH0KIAotdm9pZCBTcGVs
bENoZWNrZXI6OmVucXVldWVSZXF1ZXN0KFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJl
cXVlc3QpCit2b2lkIFNwZWxsQ2hlY2tlcjo6ZW5xdWV1ZVJlcXVlc3QoUGFzc1JlZlB0cjxJbnRl
cm5hbFNwZWxsQ2hlY2tSZXF1ZXN0PiByZXF1ZXN0KQogewogICAgIEFTU0VSVChyZXF1ZXN0KTsK
IApAQCAtMTY0LDM3ICsxNzgsNiBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZW5xdWV1ZVJlcXVlc3Qo
UGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gcmVxdWVzdCkKICAgICBtX3JlcXVlc3RRdWV1
ZS5hcHBlbmQocmVxdWVzdCk7CiB9CiAKLXN0YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3Np
dGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3RhbmNlKQotewotICAgIGludCByZW1haW5p
bmcgPSBkaXN0YW5jZTsKLSAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAg
aWYgKGl0ZXJhdG9yLm5vZGUoKS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7Ci0gICAgICAgICAg
ICBpbnQgbGVuZ3RoID0gbGFzdE9mZnNldEZvckVkaXRpbmcoaXRlcmF0b3Iubm9kZSgpKTsKLSAg
ICAgICAgICAgIGludCBsYXN0ID0gbGVuZ3RoIC0gaXRlcmF0b3Iub2Zmc2V0SW5MZWFmTm9kZSgp
OwotICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8IGxhc3QpIHsKLSAgICAgICAgICAgICAgICBp
dGVyYXRvci5zZXRPZmZzZXRJbkxlYWZOb2RlKGl0ZXJhdG9yLm9mZnNldEluTGVhZk5vZGUoKSAr
IHJlbWFpbmluZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHJlbWFpbmluZyAtPSBsYXN0OwotICAgICAgICAgICAgaXRlcmF0b3Iu
c2V0T2Zmc2V0SW5MZWFmTm9kZShpdGVyYXRvci5vZmZzZXRJbkxlYWZOb2RlKCkgKyBsYXN0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yLmluY3JlbWVudCgpOwotICAgIH0KLQotICAg
IHJldHVybiBmYWxzZTsgICAgCi19Ci0KLXN0YXRpYyBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlw
ZSB0b01hcmtlclR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQotewotICAgIGlmICh0eXBlID09
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZykKLSAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2Vy
OjpTcGVsbGluZzsKLSAgICBBU1NFUlQodHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcik7
Ci0gICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpHcmFtbWFyOwotfQotCi0vLyBDdXJyZW5udGx5
IGlnbm9yaW5nIFRleHRDaGVja2luZ1Jlc3VsdDo6ZGV0YWlscyBidXQgc2hvdWxkIGJlIGhhbmRs
ZWQuIFNlZSBCdWcgNTYzNjguCiB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVl
bmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsKICAgICBB
U1NFUlQobV9wcm9jZXNzaW5nUmVxdWVzdCk7CkBAIC0yMDUsMzkgKzE4OCwxMSBAQCB2b2lkIFNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IHN0YXJ0
T2Zmc2V0ID0gMDsKLSAgICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0ID0gbV9wcm9jZXNzaW5nUmVx
dWVzdC0+cmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVzdWx0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlICE9
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRzW2ldLnR5cGUgIT0gVGV4dENoZWNr
aW5nVHlwZUdyYW1tYXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBUbyBh
dm9pZCBtb3ZpbmcgdGhlIHBvc2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJl
c3VsdHMgYXJlIHNvcnRlZCB3aXRoCi0gICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVz
IHJldHVybmVkIGJ5IFtOU1NwZWxsQ2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgot
ICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbik7Ci0gICAg
ICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uIC0gc3Rh
cnRPZmZzZXQpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFBvc2l0aW9uSXRlcmF0b3Ig
ZW5kID0gc3RhcnQ7Ci0gICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKGVuZCwgcmVzdWx0c1tp
XS5sZW5ndGgpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLy8gVXNlcnMgb3IgSmF2
YVNjcmlwdCBhcHBsaWNhdGlvbnMgbWF5IGNoYW5nZSB0ZXh0IHdoaWxlIGEgc3BlbGwtY2hlY2tl
ciBjaGVja3MgaXRzCi0gICAgICAgIC8vIHNwZWxsaW5ncyBpbiB0aGUgYmFja2dyb3VuZC4gVG8g
YXZvaWQgYWRkaW5nIG1hcmtlcnMgdG8gdGhlIHdvcmRzIG1vZGlmaWVkIGJ5IHVzZXJzIG9yCi0g
ICAgICAgIC8vIEphdmFTY3JpcHQgYXBwbGljYXRpb25zLCByZXRyaWV2ZSB0aGUgd29yZHMgaW4g
dGhlIHNwZWNpZmllZCByZWdpb24gYW5kIGNvbXBhcmUgdGhlbSB3aXRoCi0gICAgICAgIC8vIHRo
ZSBvcmlnaW5hbCBvbmVzLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZShtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5yYW5nZSgpLT5vd25lckRvY3VtZW50KCksIHN0YXJ0
LCBlbmQpOwotICAgICAgICAvLyBGSVhNRTogVXNlIHRleHRDb250ZW50KCkgY29tcGF0aWJsZSBz
dHJpbmcgY29udmVyc2lvbi4KLSAgICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcmFuZ2UtPnRl
eHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9IG1fcHJvY2Vzc2luZ1JlcXVlc3QtPnRleHQo
KS5zdWJzdHJpbmcocmVzdWx0c1tpXS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5sZW5ndGgpOwotICAg
ICAgICBpZiAoZGVzdGluYXRpb24gPT0gc291cmNlKQotICAgICAgICAgICAgbV9wcm9jZXNzaW5n
UmVxdWVzdC0+cmFuZ2UoKS0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihy
YW5nZS5nZXQoKSwgdG9NYXJrZXJUeXBlKHJlc3VsdHNbaV0udHlwZSkpOwotCi0gICAgICAgIHN0
YXJ0T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbjsKLSAgICB9CisgICAgbV9mcmFtZS0+ZWRp
dG9yKCktPm1hcmtBbmRSZXBsYWNlRm9yKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPm1hc2soKSwgcmVz
dWx0cywgbV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCBtX3Byb2Nlc3NpbmdS
ZXF1ZXN0LT5wYXJhZ3JhcGhSYW5nZSgpKTsKIAogICAgIG1fcHJvY2Vzc2luZ1JlcXVlc3QuY2xl
YXIoKTsKICAgICBpZiAoIW1fcmVxdWVzdFF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgbV90aW1l
clRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3Quc3RhcnRPbmVTaG90KDApOwogfQogCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCmluZGV4IDcw
MmYzNjlkNTY1N2FlYmM0NTliNTExM2Y2ZTIxNmE1ZGMyOGYxZmYuLmVmMzE1ODJhMzdkOWFjNzU2
Mzg0ODliMzMxZmFjMzJlOWI0MTQxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BlbGxDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNr
ZXIuaApAQCAtMjcsMjAgKzI3LDQxIEBACiAjZGVmaW5lIFNwZWxsQ2hlY2tlcl9oCiAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4
dENoZWNraW5nLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
Tm9kZTsKIGNsYXNzIFRleHRDaGVja2VyQ2xpZW50Owogc3RydWN0IFRleHRDaGVja2luZ1Jlc3Vs
dDsKLWNsYXNzIFJhbmdlOworCitjbGFzcyBTcGVsbENoZWNrUmVxdWVzdCA6IHB1YmxpYyBSZWZD
b3VudGVkPFNwZWxsQ2hlY2tSZXF1ZXN0PiB7CitwdWJsaWM6CisgICAgU3BlbGxDaGVja1JlcXVl
c3QoUGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSwgUGFzc1JlZlB0cjxSYW5nZT4gcGFy
YWdyYXBoUmFuZ2UsIGNvbnN0IFN0cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrKTsKKyAgICB+
U3BlbGxDaGVja1JlcXVlc3QoKTsKKworICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNoZWNraW5nUmFu
Z2UoKSBjb25zdCB7IHJldHVybiBtX2NoZWNraW5nUmFuZ2U7IH0KKyAgICBQYXNzUmVmUHRyPFJh
bmdlPiBwYXJhZ3JhcGhSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYWdyYXBoUmFuZ2U7IH0K
KyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBU
ZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrOyB9CisgICAg
RWxlbWVudCogcm9vdEVkaXRhYmxlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVkaXRh
YmxlRWxlbWVudDsgfQorCitwcml2YXRlOgorICAgIFJlZlB0cjxSYW5nZT4gbV9jaGVja2luZ1Jh
bmdlOworICAgIFJlZlB0cjxSYW5nZT4gbV9wYXJhZ3JhcGhSYW5nZTsKKyAgICBTdHJpbmcgbV90
ZXh0OworICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIG1fbWFzazsKKyAgICBFbGVtZW50KiBtX3Jv
b3RFZGl0YWJsZUVsZW1lbnQ7Cit9OwogCiBjbGFzcyBTcGVsbENoZWNrZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFNwZWxsQ2hlY2tlcik7CkBAIC01MCwyNiArNzEsMjcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc0FzeW5jaHJvbm91c0VuYWJsZWQoKSBjb25zdDsKICAgICBib29sIGlz
Q2hlY2thYmxlKFJhbmdlKikgY29uc3Q7Ci0gICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4
dENoZWNraW5nVHlwZU1hc2ssIFBhc3NSZWZQdHI8UmFuZ2U+KTsKKworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KFRleHRDaGVja2luZ1R5cGVN
YXNrLCBQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBw
YXJhZ3JhcGhSYW5nZSk7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoUGFzc1JlZlB0cjxT
cGVsbENoZWNrUmVxdWVzdD4pOwogICAgIHZvaWQgZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25z
dCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOwogCiBwcml2YXRlOgotICAgIGNsYXNzIFNw
ZWxsQ2hlY2tSZXF1ZXN0OwotICAgIHR5cGVkZWYgRGVxdWU8UmVmUHRyPFNwZWxsQ2hlY2tSZXF1
ZXN0PiA+IFJlcXVlc3RRdWV1ZTsKKyAgICBjbGFzcyBJbnRlcm5hbFNwZWxsQ2hlY2tSZXF1ZXN0
OworICAgIHR5cGVkZWYgRGVxdWU8UmVmUHRyPEludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q+ID4g
UmVxdWVzdFF1ZXVlOwogCiAgICAgYm9vbCBjYW5DaGVja0FzeW5jaHJvbm91c2x5KFJhbmdlKikg
Y29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gY3JlYXRlUmVxdWVzdChU
ZXh0Q2hlY2tpbmdUeXBlTWFzaywgUGFzc1JlZlB0cjxSYW5nZT4pOwogICAgIFRleHRDaGVja2Vy
Q2xpZW50KiBjbGllbnQoKSBjb25zdDsKICAgICB2b2lkIHRpbWVyRmlyZWRUb1Byb2Nlc3NRdWV1
ZWRSZXF1ZXN0KFRpbWVyPFNwZWxsQ2hlY2tlcj4qKTsKLSAgICB2b2lkIGludm9rZVJlcXVlc3Qo
UGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4pOwotICAgIHZvaWQgZW5xdWV1ZVJlcXVlc3Qo
UGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4pOworICAgIHZvaWQgaW52b2tlUmVxdWVzdChQ
YXNzUmVmUHRyPEludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q+KTsKKyAgICB2b2lkIGVucXVldWVS
ZXF1ZXN0KFBhc3NSZWZQdHI8SW50ZXJuYWxTcGVsbENoZWNrUmVxdWVzdD4pOwogCiAgICAgRnJh
bWUqIG1fZnJhbWU7CiAgICAgaW50IG1fbGFzdFJlcXVlc3RlZFNlcXVlbmNlOwogCiAgICAgVGlt
ZXI8U3BlbGxDaGVja2VyPiBtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdDsKIAotICAgIFJl
ZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gbV9wcm9jZXNzaW5nUmVxdWVzdDsKKyAgICBSZWZQdHI8
SW50ZXJuYWxTcGVsbENoZWNrUmVxdWVzdD4gbV9wcm9jZXNzaW5nUmVxdWVzdDsKICAgICBSZXF1
ZXN0UXVldWUgbV9yZXF1ZXN0UXVldWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggZTI1NGYyNGU2OWYyZTUwYTk3Nzk0ZmU5MDRm
Y2UyOGExNDNjNWM4Ny4uYjI1YjQxNmQyOTI3N2UyMjY2ZTAyOTZmZDRkNTlhMmE2NDk5NDVjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAt
MTE2LDYgKzExNiwxNSBAQCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFn
cmFwaChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1JhbmdlKQogewogfQogCitUZXh0Q2hlY2tp
bmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChQYXNzUmVmUHRyPFJhbmdlPiBjaGVj
a2luZ1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSkKKyAgICA6IG1fY2hl
Y2tpbmdSYW5nZShjaGVja2luZ1JhbmdlKQorICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3Jh
cGhSYW5nZSkKKyAgICAsIG1fY2hlY2tpbmdTdGFydCgtMSkKKyAgICAsIG1fY2hlY2tpbmdFbmQo
LTEpCisgICAgLCBtX2NoZWNraW5nTGVuZ3RoKC0xKQoreworfQorCiBUZXh0Q2hlY2tpbmdQYXJh
Z3JhcGg6On5UZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKaW5kZXggMDFjODRjZmIyYmQzNmNlYTU2ZDdjYjRi
ZmUwOTkyMWM0MzJmNmJhYy4uNDdhNjFiMzYwOTkzYmJhYzkwOTQxOWNlOWFjMDgwNGYwYjhjZGU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC0z
MSw2ICszMSw3IEBAIGNsYXNzIFBvc2l0aW9uOwogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBo
IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUGFzc1JlZlB0
cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoKFBhc3NS
ZWZQdHI8UmFuZ2U+IGNoZWNraW5nUmFuZ2UsIFBhc3NSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJh
bmdlKTsKICAgICB+VGV4dENoZWNraW5nUGFyYWdyYXBoKCk7CiAKICAgICBpbnQgcmFuZ2VMZW5n
dGgoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118196</attachid>
            <date>2011-12-07 02:59:56 -0800</date>
            <delta_ts>2011-12-08 22:46:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73616-20111207195954.patch</filename>
            <type>text/plain</type>
            <size>27864</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMjI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGIwNzRkNGViMzc0YzJj
MGQ1NjlmNWE5NTc4ODYxYzI4M2RiMDg2OC4uYjBhN2FmODI0ZTM2MGU4ZTU3NjE5MzUyMjEyMTYx
ZmViM2YyM2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDExLTEyLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgQXN5bmNocm9ub3Vz
IHBhdGggYW5kIHN5bmNocm9ub3VzIHBhdGggb2YgU3BlbGxDaGVja2VyIHNob3VsZCBzaGFyZSB0
aGUgY29kZSB0byBtYXJrIG1pc3NwZWxsaW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczNjE2CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2Ny
aXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIEFz
eW5jaHJvbm91cyBTcGVsbENoZWNrZXIgYW5kIHN5bmNocm9ub3VzIFNwZWxsQ2hlY2tlciBzaGFy
ZSB0aGUgY29kZSB0byBtYXJrIG1pc3NwZWxsaW5ncy4KKyAgICAgICAgQXN5bmNocm9ub3VzIFNw
ZWxsQ2hlY2tlciBtYXkgYmUgY2FsbGVkIHNldmVyYWwgdGltZXMgaW4gb25lIHRpbWUsIGl0IGNo
ZWNrcyB0aGUgc3BlbGxpbmdzIG9mIHdob2xlIHNlbnRlbmNlcworICAgICAgICBhdCBvbmNlIHRv
IG1hcmsgbWlzc3BlbGxpbmdzIHdvcmRzLCB0aG91Z2ggc3luY2hyb25vdXMgc3BlbGxjaGVja2Vy
IGNoZWNrcyBhIGZldyBwaHJhc2VzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZ3MgdGVzdHMu
CisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgorICAgICAgICAgIENhbGxzIGEgbmV3
IGludGVyZmFjZSBvZiBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0Zvci4KKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdl
cyk6CisgICAgICAgICAgQ2FsbHMgdGhlIG1lcmdlZCBwYXRoIGV2ZW4gaWYgc3luY2hyb25vdXMg
c3BlbGxjaGVja2VyIGlzIHVzZWQuCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbmRS
ZXBsYWNlRm9yKToKKyAgICAgICAgICBNYXJrcyBhbmQgcmVwbGFjZXMgbWlzc3BlbGxpbmcgd29y
ZHMuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OkludGVybmFsU3Bl
bGxDaGVja1JlcXVlc3Q6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3QpOgorICAgICAgICAgIElu
dHJvZHVjZXMgaW50ZXJuYWwgcmVxdWVzdCBzdHJ1Y3R1cmUuCisgICAgICAgIChXZWJDb3JlOjpT
cGVsbENoZWNrZXI6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q6OnJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpJbnRlcm5hbFNwZWxsQ2hlY2tSZXF1ZXN0OjpjaGVj
a2luZ1JhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6SW50ZXJuYWxTcGVs
bENoZWNrUmVxdWVzdDo6cGFyYWdyYXBoUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxD
aGVja2VyOjpJbnRlcm5hbFNwZWxsQ2hlY2tSZXF1ZXN0Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNwZWxsQ2hlY2tlcjo6SW50ZXJuYWxTcGVsbENoZWNrUmVxdWVzdDo6bWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OkludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q6OnJv
b3RFZGl0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6
OlNwZWxsQ2hlY2tSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tSZXF1ZXN0
Ojp+U3BlbGxDaGVja1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpj
cmVhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENo
ZWNraW5nRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6aW52b2tlUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmVucXVldWVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2spOgorICAgICAgICAgIENhbGxz
IHRoZSBtZXJnZWQgcGF0aCB0byBtYXJrIG1pc3NwZWxsaW5nIHdvcmRzIGluc3RlYWQgb2YgdGhl
IGV4aXN0aW5ncyBwYXRoLgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6Y2hlY2tpbmdSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTcGVsbENoZWNrUmVxdWVzdDo6cGFyYWdyYXBoUmFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlbGxDaGVja1JlcXVlc3Q6OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U3Bl
bGxDaGVja1JlcXVlc3Q6Om1hc2spOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja1JlcXVl
c3Q6OnJvb3RFZGl0YWJsZUVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ1BhcmFncmFwaDo6VGV4
dENoZWNraW5nUGFyYWdyYXBoKToKKyAgICAgICAgICBBIG5ldyBpbnRlcmZhY2UgdG8gdGFrZSBh
IHBhcmFncmFwaCByYW5nZSBpcyBpbnRyb2R1Y2VkLgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmg6CisKIDIwMTEtMTItMDcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVHlwaW5nQ29tbWFuZCBkdXBsaWNhdGVzIGNvZGUgdG8gb2J0YWlu
IHRoZSBsYXN0IHR5cGluZyBjb21tYW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
M2IxMGEwZDQ2OTNlMmQ2YTI2MzgxODA0ZWU5MzFhN2ZmMDE4NmJmZi4uZDVkMzZhZmI2ZWJkMWM5
MjIwNTI2NDljZTMxZDUwOTlmNjdjNjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApA
QCAtNDE2LDggKzQxNiw4IEBAIHZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdt
ZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQsCiAgICAgaWYgKCFub2Rl
VG9DaGVjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RD
aGVja2luZ0ZvcihyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLAotICAgICAgICBSYW5nZTo6Y3JlYXRl
KG1fZnJhbWUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spLCBs
YXN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spKSk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5n
ZVRvQ2hlY2sgPSBSYW5nZTo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIGZpcnN0UG9zaXRp
b25Jbk5vZGUobm9kZVRvQ2hlY2spLCBsYXN0UG9zaXRpb25Jbk5vZGUobm9kZVRvQ2hlY2spKTsK
KyAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKFNwZWxsQ2hlY2tlcjo6Y3Jl
YXRlUmVxdWVzdChyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCByYW5nZVRvQ2hlY2ssIHJhbmdlVG9D
aGVjaykpOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2Up
CkBAIC0yMDEwLDM0ICsyMDEwLDI5IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDCiAgICAgaWYg
KCFpc1NwZWxsQ2hlY2tpbmdFbmFibGVkRm9yKGVkaXRhYmxlTm9kZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBzcGVsbGluZ1BhcmFncmFwaChzcGVsbGlu
Z1JhbmdlKTsKLSAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggZ3JhbW1hclBhcmFncmFwaChzaG91
bGRNYXJrR3JhbW1hciA/IGdyYW1tYXJSYW5nZSA6IDApOwotCi0gICAgaWYgKHNob3VsZE1hcmtH
cmFtbWFyID8gKHNwZWxsaW5nUGFyYWdyYXBoLmlzUmFuZ2VFbXB0eSgpICYmIGdyYW1tYXJQYXJh
Z3JhcGguaXNFbXB0eSgpKSA6IHNwZWxsaW5nUGFyYWdyYXBoLmlzRW1wdHkoKSkKKyAgICBSYW5n
ZSogcmFuZ2VUb0NoZWNrID0gc2hvdWxkTWFya0dyYW1tYXIgPyBncmFtbWFyUmFuZ2UgOiBzcGVs
bGluZ1JhbmdlOworICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGhUb0NoZWNrKHJh
bmdlVG9DaGVjayk7CisgICAgaWYgKHBhcmFncmFwaFRvQ2hlY2suaXNSYW5nZUVtcHR5KCkgfHwg
cGFyYWdyYXBoVG9DaGVjay5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wg
YXN5bmNocm9ub3VzID0gbV9mcmFtZSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUt
PnNldHRpbmdzKCktPmFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgIXNob3Vs
ZFNob3dDb3JyZWN0aW9uUGFuZWw7CiAgICAgaWYgKGFzeW5jaHJvbm91cykgewotICAgICAgICBp
ZiAoc2hvdWxkTWFya0dyYW1tYXIpCi0gICAgICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVz
dENoZWNraW5nRm9yKHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdPcHRp
b25zKSwgZ3JhbW1hclBhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihyZXNvbHZlVGV4
dENoZWNraW5nVHlwZU1hc2sodGV4dENoZWNraW5nT3B0aW9ucyksIHNwZWxsaW5nUGFyYWdyYXBo
LnBhcmFncmFwaFJhbmdlKCkpOworICAgICAgICAvLyBJbiBhc3luY2hyb25vdXMgbW9kZSwgd2Ug
aW50ZW50aW9uYWxseSBjaGVjayBwYXJhZ3JhcGgtd2lkZSBzZW50ZW5jZS4KKyAgICAgICAgUmVm
UHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSA9IHBhcmFncmFwaFRvQ2hlY2sucGFyYWdyYXBoUmFu
Z2UoKTsKKyAgICAgICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihTcGVsbENo
ZWNrZXI6OmNyZWF0ZVJlcXVlc3QocmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVj
a2luZ09wdGlvbnMpLCBwYXJhZ3JhcGhSYW5nZSwgcGFyYWdyYXBoUmFuZ2UpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
Ci0gICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQotICAgICAgICBjaGVja1RleHRPZlBhcmFncmFw
aCh0ZXh0Q2hlY2tlcigpLCBncmFtbWFyUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIGdyYW1t
YXJQYXJhZ3JhcGgudGV4dExlbmd0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09w
dGlvbnMpLCByZXN1bHRzKTsKLSAgICBlbHNlCi0gICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBo
KHRleHRDaGVja2VyKCksIHNwZWxsaW5nUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHNwZWxs
aW5nUGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmVUZXh0Q2hlY2tpbmdUeXBlTWFzayh0ZXh0Q2hlY2tpbmdP
cHRpb25zKSwgcmVzdWx0cyk7Ci0KLSAgICBtYXJrQW5kUmVwbGFjZUZvcih0ZXh0Q2hlY2tpbmdP
cHRpb25zLCByZXN1bHRzLCBzcGVsbGluZ1BhcmFncmFwaCwgZ3JhbW1hclBhcmFncmFwaCk7Cisg
ICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4dENoZWNrZXIoKSwgcGFyYWdyYXBoVG9DaGVjay50
ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGhUb0NoZWNrLnRleHRMZW5ndGgoKSwKKyAgICAgICAg
cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRz
KTsKKyAgICBtYXJrQW5kUmVwbGFjZUZvcih0ZXh0Q2hlY2tpbmdPcHRpb25zLCByZXN1bHRzLCBy
YW5nZVRvQ2hlY2ssIHBhcmFncmFwaFRvQ2hlY2sucGFyYWdyYXBoUmFuZ2UoKSk7CiB9CiAKLXZv
aWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hl
Y2tpbmdPcHRpb25zLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cywg
Y29uc3QgVGV4dENoZWNraW5nUGFyYWdyYXBoJiBzcGVsbGluZ1BhcmFncmFwaCwgY29uc3QgVGV4
dENoZWNraW5nUGFyYWdyYXBoJiBncmFtbWFyUGFyYWdyYXBoKQordm9pZCBFZGl0b3I6Om1hcmtB
bmRSZXBsYWNlRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIGNv
bnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzLCBQYXNzUmVmUHRyPFJhbmdl
PiBjaGVja2luZ1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSkKIHsKKyAg
ICBjb25zdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKGNoZWNraW5nUmFuZ2UsIHBh
cmFncmFwaFJhbmdlKTsKKwogICAgIGJvb2wgc2hvdWxkTWFya1NwZWxsaW5nID0gdGV4dENoZWNr
aW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZzsKICAgICBib29sIHNob3VsZE1h
cmtHcmFtbWFyID0gdGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
OwogICAgIGJvb2wgc2hvdWxkUGVyZm9ybVJlcGxhY2VtZW50ID0gdGV4dENoZWNraW5nT3B0aW9u
cyAmIFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKQEAgLTIwNTUsMTEgKzIwNTAsMTEgQEAg
dm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRD
aGVja2luZ09wdGlvbnMsIGNvbnN0IFYKICAgICAgICAgaWYgKG1fZnJhbWUtPnNlbGVjdGlvbigp
LT5zZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJsZVNlbGVjdGlvbjo6Q2FyZXRTZWxlY3Rpb24pIHsK
ICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gc2F2ZSB0aGUgY2FyZXQgcG9zaXRpb24gc28gd2Ug
Y2FuIHJlc3RvcmUgaXQgbGF0ZXIgaWYgbmVlZGVkCiAgICAgICAgICAgICBQb3NpdGlvbiBjYXJl
dFBvc2l0aW9uID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPmVuZCgpOwotICAgICAgICAgICAgc2Vs
ZWN0aW9uT2Zmc2V0ID0gc3BlbGxpbmdQYXJhZ3JhcGgub2Zmc2V0VG8oY2FyZXRQb3NpdGlvbiwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBzZWxlY3Rpb25PZmZzZXQgPSBwYXJh
Z3JhcGgub2Zmc2V0VG8oY2FyZXRQb3NpdGlvbiwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
ICAgICAgICByZXN0b3JlU2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgPSB0cnVlOwotICAgICAgICAgICAg
aWYgKHNlbGVjdGlvbk9mZnNldCA+IDAgJiYgKHNlbGVjdGlvbk9mZnNldCA+IHNwZWxsaW5nUGFy
YWdyYXBoLnRleHRMZW5ndGgoKSB8fCBzcGVsbGluZ1BhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVj
dGlvbk9mZnNldCAtIDEpID09IG5ld2xpbmVDaGFyYWN0ZXIpKQorICAgICAgICAgICAgaWYgKHNl
bGVjdGlvbk9mZnNldCA+IDAgJiYgKHNlbGVjdGlvbk9mZnNldCA+IHBhcmFncmFwaC50ZXh0TGVu
Z3RoKCkgfHwgcGFyYWdyYXBoLnRleHRDaGFyQXQoc2VsZWN0aW9uT2Zmc2V0IC0gMSkgPT0gbmV3
bGluZUNoYXJhY3RlcikpCiAgICAgICAgICAgICAgICAgYWRqdXN0U2VsZWN0aW9uRm9yUGFyYWdy
YXBoQm91bmRhcmllcyA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0ID4g
MCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gc3BlbGxpbmdQYXJhZ3JhcGgudGV4dExlbmd0aCgpICYm
IGlzQW1iaWd1b3VzQm91bmRhcnlDaGFyYWN0ZXIoc3BlbGxpbmdQYXJhZ3JhcGgudGV4dENoYXJB
dChzZWxlY3Rpb25PZmZzZXQgLSAxKSkpCisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uT2Zmc2V0
ID4gMCAmJiBzZWxlY3Rpb25PZmZzZXQgPD0gcGFyYWdyYXBoLnRleHRMZW5ndGgoKSAmJiBpc0Ft
YmlndW91c0JvdW5kYXJ5Q2hhcmFjdGVyKHBhcmFncmFwaC50ZXh0Q2hhckF0KHNlbGVjdGlvbk9m
ZnNldCAtIDEpKSkKICAgICAgICAgICAgICAgICBhbWJpZ3VvdXNCb3VuZGFyeU9mZnNldCA9IHNl
bGVjdGlvbk9mZnNldCAtIDE7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMDcxLDcgKzIwNjYsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4
dENoZWNraW5nT3B0aW9ucywgY29uc3QgVgogICAgIGludCBvZmZzZXREdWVUb1JlcGxhY2VtZW50
ID0gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgIGludCBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gc3BlbGxpbmdQYXJhZ3Jh
cGguY2hlY2tpbmdFbmQoKSArIG9mZnNldER1ZVRvUmVwbGFjZW1lbnQ7CisgICAgICAgIGludCBz
cGVsbGluZ1JhbmdlRW5kT2Zmc2V0ID0gcGFyYWdyYXBoLmNoZWNraW5nRW5kKCkgKyBvZmZzZXRE
dWVUb1JlcGxhY2VtZW50OwogICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3Vs
dCA9ICZyZXN1bHRzW2ldOwogICAgICAgICBpbnQgcmVzdWx0TG9jYXRpb24gPSByZXN1bHQtPmxv
Y2F0aW9uICsgb2Zmc2V0RHVlVG9SZXBsYWNlbWVudDsKICAgICAgICAgaW50IHJlc3VsdExlbmd0
aCA9IHJlc3VsdC0+bGVuZ3RoOwpAQCAtMjA4MiwyMyArMjA3NywyMyBAQCB2b2lkIEVkaXRvcjo6
bWFya0FuZFJlcGxhY2VGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9u
cywgY29uc3QgVgogICAgICAgICAvLyAyLiBSZXN1bHQgZmFsbHMgd2l0aGluIHNwZWxsaW5nUmFu
Z2UuCiAgICAgICAgIC8vIDMuIFRoZSB3b3JkIGluIHF1ZXN0aW9uIGRvZXNuJ3QgZW5kIGF0IGFu
IGFtYmlndW91cyBib3VuZGFyeS4gRm9yIGluc3RhbmNlLCB3ZSB3b3VsZCBub3QgbWFyawogICAg
ICAgICAvLyAgICAid291bGRuJyIgYXMgbWlzc3BlbGxlZCByaWdodCBhZnRlciBhcG9zdHJvcGhl
IGlzIHR5cGVkLgotICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxsaW5nICYmIHJlc3VsdC0+dHlw
ZSA9PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0TG9jYXRpb24gPj0gc3BlbGxp
bmdQYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVu
Z3RoIDw9IHNwZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0Jv
dW5kYXJ5KSB7CisgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYgcmVzdWx0LT50eXBl
ID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyAmJiByZXN1bHRMb2NhdGlvbiA+PSBwYXJhZ3Jh
cGguY2hlY2tpbmdTdGFydCgpICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVuZ3RoIDw9IHNw
ZWxsaW5nUmFuZ2VFbmRPZmZzZXQgJiYgIXJlc3VsdEVuZHNBdEFtYmlndW91c0JvdW5kYXJ5KSB7
CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0TGVuZ3RoID4gMCAmJiByZXN1bHRMb2NhdGlvbiA+
PSAwKTsKLSAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZSA9IHNwZWxs
aW5nUGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOworICAg
ICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlID0gcGFyYWdyYXBoLnN1YnJh
bmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgpOwogICAgICAgICAgICAgaWYgKCFtX3Nw
ZWxsaW5nQ29ycmVjdG9yLT5pc1NwZWxsaW5nTWFya2VyQWxsb3dlZChtaXNzcGVsbGluZ1Jhbmdl
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIG1pc3NwZWxsaW5nUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKG1p
c3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoc2hvdWxkTWFya0dyYW1tYXIgJiYgcmVzdWx0LT50eXBlID09IFRleHRDaGVj
a2luZ1R5cGVHcmFtbWFyICYmIGdyYW1tYXJQYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhy
ZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKSkgeworICAgICAgICB9IGVsc2UgaWYgKHNob3Vs
ZE1hcmtHcmFtbWFyICYmIHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAm
JiBwYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVu
Z3RoKSkgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdExlbmd0aCA+IDAgJiYgcmVzdWx0TG9j
YXRpb24gPj0gMCk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcmVzdWx0
LT5kZXRhaWxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgR3JhbW1hckRl
dGFpbCogZGV0YWlsID0gJnJlc3VsdC0+ZGV0YWlsc1tqXTsKICAgICAgICAgICAgICAgICBBU1NF
UlQoZGV0YWlsLT5sZW5ndGggPiAwICYmIGRldGFpbC0+bG9jYXRpb24gPj0gMCk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGdyYW1tYXJQYXJhZ3JhcGguY2hlY2tpbmdSYW5nZUNvdmVycyhyZXN1bHRM
b2NhdGlvbiArIGRldGFpbC0+bG9jYXRpb24sIGRldGFpbC0+bGVuZ3RoKSkgewotICAgICAgICAg
ICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhZEdyYW1tYXJSYW5nZSA9IGdyYW1tYXJQYXJhZ3Jh
cGguc3VicmFuZ2UocmVzdWx0TG9jYXRpb24gKyBkZXRhaWwtPmxvY2F0aW9uLCBkZXRhaWwtPmxl
bmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaC5jaGVja2luZ1JhbmdlQ292ZXJz
KHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5sZW5ndGgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gYmFkR3JhbW1hclJhbmdlID0gcGFyYWdy
YXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uICsgZGV0YWlsLT5sb2NhdGlvbiwgZGV0YWlsLT5s
ZW5ndGgpOwogICAgICAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIsIGRldGFpbC0+dXNlckRlc2NyaXB0aW9uKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAocmVz
dWx0TG9jYXRpb24gKyByZXN1bHRMZW5ndGggPD0gc3BlbGxpbmdSYW5nZUVuZE9mZnNldCAmJiBy
ZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0aCA+PSBzcGVsbGluZ1BhcmFncmFwaC5jaGVja2lu
Z1N0YXJ0KCkKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRMb2NhdGlvbiArIHJlc3VsdExlbmd0
aCA8PSBzcGVsbGluZ1JhbmdlRW5kT2Zmc2V0ICYmIHJlc3VsdExvY2F0aW9uICsgcmVzdWx0TGVu
Z3RoID49IHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCkKICAgICAgICAgICAgICAgICAgICAgJiYg
KHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlTGluawogICAgICAgICAgICAgICAgICAg
ICB8fCByZXN1bHQtPnR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVF1b3RlCiAgICAgICAgICAgICAg
ICAgICAgIHx8IHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlRGFzaApAQCAtMjExNyw3
ICsyMTEyLDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFRleHRDaGVja2luZ1R5
cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIGNvbnN0IFYKICAgICAgICAgICAgIC8vIDIuIFRo
ZSByZXN1bHQgZG9lc24ndCBlbmQgYXQgYW4gYW1iaWd1b3VzIGJvdW5kYXJ5LgogICAgICAgICAg
ICAgLy8gICAgKEZJWE1FOiB0aGlzIGlzIHJlcXVpcmVkIHVudGlsIDY4NTMwMjcgaXMgZml4ZWQg
YW5kIHRleHQgY2hlY2tpbmcgY2FuIGRvIHRoaXMgZm9yIHVzCiAgICAgICAgICAgICBib29sIGRv
UmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudExlbmd0aCA+IDAgJiYgIXJlc3VsdEVuZHNBdEFtYmln
dW91c0JvdW5kYXJ5OwotICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvUmVwbGFjZSA9
IHNwZWxsaW5nUGFyYWdyYXBoLnN1YnJhbmdlKHJlc3VsdExvY2F0aW9uLCByZXN1bHRMZW5ndGgp
OworICAgICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZVRvUmVwbGFjZSA9IHBhcmFncmFwaC5z
dWJyYW5nZShyZXN1bHRMb2NhdGlvbiwgcmVzdWx0TGVuZ3RoKTsKICAgICAgICAgICAgIFZpc2li
bGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLmdldCgpLCBET1dO
U1RSRUFNKTsKIAogICAgICAgICAgICAgLy8gYWRkaW5nIGxpbmtzIHNob3VsZCBiZSBkb25lIG9u
bHkgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhleSBhcmUgdHlwZWQKQEAgLTIxNzUsMTMgKzIxNzAsMTMg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIHRl
eHRDaGVja2luZ09wdGlvbnMsIGNvbnN0IFYKIAogICAgICAgICAgICAgICAgIC8vIEFkZCBhIG1h
cmtlciBzbyB0aGF0IGNvcnJlY3Rpb25zIGNhbiBlYXNpbHkgYmUgdW5kb25lIGFuZCB3b24ndCBi
ZSByZS1jb3JyZWN0ZWQuCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0
Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbikKLSAgICAgICAgICAgICAgICAgICAgbV9zcGVsbGluZ0Nv
cnJlY3Rvci0+bWFya0NvcnJlY3Rpb24oc3BlbGxpbmdQYXJhZ3JhcGguc3VicmFuZ2UocmVzdWx0
TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKSwgcmVwbGFjZWRTdHJpbmcpOworICAgICAgICAg
ICAgICAgICAgICBtX3NwZWxsaW5nQ29ycmVjdG9yLT5tYXJrQ29ycmVjdGlvbihwYXJhZ3JhcGgu
c3VicmFuZ2UocmVzdWx0TG9jYXRpb24sIHJlcGxhY2VtZW50TGVuZ3RoKSwgcmVwbGFjZWRTdHJp
bmcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHNlbGVjdGlv
bkNoYW5nZWQpIHsKLSAgICAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIGV4dGVuZGVkUGFyYWdy
YXBoKHNwZWxsaW5nUGFyYWdyYXBoKTsKKyAgICAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIGV4
dGVuZGVkUGFyYWdyYXBoKHBhcmFncmFwaCk7CiAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGNhcmV0
IHBvc2l0aW9uIGlmIHdlIGhhdmUgbWFkZSBhbnkgcmVwbGFjZW1lbnRzCiAgICAgICAgIGV4dGVu
ZGVkUGFyYWdyYXBoLmV4cGFuZFJhbmdlVG9OZXh0RW5kKCk7CiAgICAgICAgIGlmIChyZXN0b3Jl
U2VsZWN0aW9uQWZ0ZXJDaGFuZ2UgJiYgc2VsZWN0aW9uT2Zmc2V0ID49IDAgJiYgc2VsZWN0aW9u
T2Zmc2V0IDw9IGV4dGVuZGVkUGFyYWdyYXBoLnJhbmdlTGVuZ3RoKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCmluZGV4IDg2Y2FlNGQ5OWZlZDZkODE2MTIzNmMzMGJiMWJhNTFlNGM0N2Y4YmYu
LjVhZWY4YTkwMDNiNzc4MjYyNzNkODkxYTcxMjUzNjk1MjA5MDZkYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaApAQCAtMjIyLDYgKzIyMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtNaXNz
cGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJlZlB0cjxSYW5nZT4mIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2Vs
ZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3JhbW1hciwgY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7CisgICAgdm9pZCBtYXJrQW5k
UmVwbGFjZUZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4mLCBQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1JhbmdlLCBQYXNzUmVmUHRyPFJh
bmdlPiBwYXJhZ3JhcGhSYW5nZSk7CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CkBAIC00MDUsNyArNDA2LDYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQqKTsKICAg
ICB2b2lkIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogICAgIHZvaWQg
bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgYm9v
bCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwot
ICAgIHZvaWQgbWFya0FuZFJlcGxhY2VGb3IoVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiwgY29uc3QgVGV4dENoZWNraW5nUGFyYWdyYXBoJiBz
cGVsbGluZ1BhcmFncmFwaCwgY29uc3QgVGV4dENoZWNraW5nUGFyYWdyYXBoJiBncmFtbWFyUGFy
YWdyYXBoKTsKICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayByZXNvbHZlVGV4dENoZWNraW5nVHlw
ZU1hc2soVGV4dENoZWNraW5nVHlwZU1hc2spOwogCiAgICAgdm9pZCBzZWxlY3RDb21wb3NpdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDhmZjU3NDIx
NzQyMjZiNGYyMjA3OWJhMzEwNzk1MzRlMWI2YTE0ZjQuLmY4Yjk2OTA4YjFlOTQyOTgxMGQxMjNj
ZWE2NTBjNjZkMTRkZWM4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5j
cHAKQEAgLTQ1LDMxICs0NSw0MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNw
ZWxsQ2hlY2tlcjo6U3BlbGxDaGVja1JlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVsbENo
ZWNrZXI6OlNwZWxsQ2hlY2tSZXF1ZXN0PiB7CitjbGFzcyBTcGVsbENoZWNrZXI6OkludGVybmFs
U3BlbGxDaGVja1JlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGVsbENoZWNrZXI6OkludGVy
bmFsU3BlbGxDaGVja1JlcXVlc3Q+IHsKIHB1YmxpYzoKLSAgICBTcGVsbENoZWNrUmVxdWVzdChp
bnQgc2VxdWVuY2UsIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2spCisgICAgSW50ZXJuYWxTcGVsbENoZWNrUmVxdWVz
dChpbnQgc2VxdWVuY2UsIFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QpCiAg
ICAgICAgIDogbV9zZXF1ZW5jZShzZXF1ZW5jZSkKLSAgICAgICAgLCBtX3JhbmdlKHJhbmdlKQot
ICAgICAgICAsIG1fdGV4dCh0ZXh0KQotICAgICAgICAsIG1fbWFzayhtYXNrKQotICAgICAgICAs
IG1fcm9vdEVkaXRhYmxlRWxlbWVudChtX3JhbmdlLT5zdGFydENvbnRhaW5lcigpLT5yb290RWRp
dGFibGVFbGVtZW50KCkpCisgICAgICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgeworICAg
ICAgICBBU1NFUlQobV9yZXF1ZXN0KTsKICAgICB9CiAKICAgICBpbnQgc2VxdWVuY2UoKSBjb25z
dCB7IHJldHVybiBtX3NlcXVlbmNlOyB9Ci0gICAgUmFuZ2UqIHJhbmdlKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZS5nZXQoKTsgfQotICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dDsgfQotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2soKSBjb25zdCB7IHJl
dHVybiBtX21hc2s7IH0KLSAgICBFbGVtZW50KiByb290RWRpdGFibGVFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9yb290RWRpdGFibGVFbGVtZW50OyB9CisgICAgUGFzc1JlZlB0cjxTcGVsbENo
ZWNrUmVxdWVzdD4gcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQorCisgICAg
UGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIHJlcXVlc3Qo
KS0+Y2hlY2tpbmdSYW5nZSgpOyB9CisgICAgUGFzc1JlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFu
Z2UoKSBjb25zdCB7IHJldHVybiByZXF1ZXN0KCktPnBhcmFncmFwaFJhbmdlKCk7IH0KKyAgICBj
b25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiByZXF1ZXN0KCktPnRleHQoKTsgfQor
ICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2soKSBjb25zdCB7IHJldHVybiByZXF1ZXN0KCkt
Pm1hc2soKTsgfQorICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiByZXF1ZXN0KCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsgfQogCiBwcml2YXRlOgogICAg
IGludCBtX3NlcXVlbmNlOwotICAgIFJlZlB0cjxSYW5nZT4gbV9yYW5nZTsKLSAgICBTdHJpbmcg
bV90ZXh0OwotICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIG1fbWFzazsKLSAgICBFbGVtZW50KiBt
X3Jvb3RFZGl0YWJsZUVsZW1lbnQ7CisgICAgUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiBtX3Jl
cXVlc3Q7CiB9OwogCitTcGVsbENoZWNrUmVxdWVzdDo6U3BlbGxDaGVja1JlcXVlc3QoUGFzc1Jl
ZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSwgUGFzc1JlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFu
Z2UsIGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaykKKyAgICA6
IG1fY2hlY2tpbmdSYW5nZShjaGVja2luZ1JhbmdlKQorICAgICwgbV9wYXJhZ3JhcGhSYW5nZShw
YXJhZ3JhcGhSYW5nZSkKKyAgICAsIG1fdGV4dCh0ZXh0KQorICAgICwgbV9tYXNrKG1hc2spCisg
ICAgLCBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQobV9jaGVja2luZ1JhbmdlLT5zdGFydENvbnRhaW5l
cigpLT5yb290RWRpdGFibGVFbGVtZW50KCkpCit7Cit9CisKK1NwZWxsQ2hlY2tSZXF1ZXN0Ojp+
U3BlbGxDaGVja1JlcXVlc3QoKQoreworfQorCiBTcGVsbENoZWNrZXI6OlNwZWxsQ2hlY2tlcihG
cmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9sYXN0UmVxdWVzdGVk
U2VxdWVuY2UoMCkKQEAgLTg5LDE1ICsxMDAsMTcgQEAgVGV4dENoZWNrZXJDbGllbnQqIFNwZWxs
Q2hlY2tlcjo6Y2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+ZWRpdG9yQ2xpZW50KCkt
PnRleHRDaGVja2VyKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3BlbGxDaGVja2VyOjpTcGVsbENoZWNr
UmVxdWVzdD4gU3BlbGxDaGVja2VyOjpjcmVhdGVSZXF1ZXN0KFRleHRDaGVja2luZ1R5cGVNYXNr
IG1hc2ssIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlKQorLy8gc3RhdGljCitQYXNzUmVmUHRyPFNw
ZWxsQ2hlY2tSZXF1ZXN0PiBTcGVsbENoZWNrZXI6OmNyZWF0ZVJlcXVlc3QoVGV4dENoZWNraW5n
VHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucywgUGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdS
YW5nZSwgUGFzc1JlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2UpCiB7Ci0gICAgQVNTRVJUKGNh
bkNoZWNrQXN5bmNocm9ub3VzbHkocmFuZ2UuZ2V0KCkpKTsKKyAgICBBU1NFUlQoY2hlY2tpbmdS
YW5nZSk7CisgICAgQVNTRVJUKHBhcmFncmFwaFJhbmdlKTsKIAotICAgIFN0cmluZyB0ZXh0ID0g
cmFuZ2UtPnRleHQoKTsKKyAgICBTdHJpbmcgdGV4dCA9IGNoZWNraW5nUmFuZ2UtPnRleHQoKTsK
ICAgICBpZiAoIXRleHQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFNwZWxs
Q2hlY2tSZXF1ZXN0PigpOwogCi0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTcGVsbENoZWNrUmVx
dWVzdCgrK21fbGFzdFJlcXVlc3RlZFNlcXVlbmNlLCByYW5nZSwgdGV4dCwgbWFzaykpOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU3BlbGxDaGVja1JlcXVlc3QoY2hlY2tpbmdSYW5nZSwgcGFy
YWdyYXBoUmFuZ2UsIHRleHQsIHRleHRDaGVja2luZ09wdGlvbnMpKTsKIH0KIAogdm9pZCBTcGVs
bENoZWNrZXI6OnRpbWVyRmlyZWRUb1Byb2Nlc3NRdWV1ZWRSZXF1ZXN0KFRpbWVyPFNwZWxsQ2hl
Y2tlcj4qKQpAQCAtMTI0LDI0ICsxMzcsMjUgQEAgYm9vbCBTcGVsbENoZWNrZXI6OmlzQ2hlY2th
YmxlKFJhbmdlKiByYW5nZSkgY29uc3QKICAgICByZXR1cm4gcmFuZ2UgJiYgcmFuZ2UtPmZpcnN0
Tm9kZSgpICYmIHJhbmdlLT5maXJzdE5vZGUoKS0+cmVuZGVyZXIoKTsKIH0KIAotdm9pZCBTcGVs
bENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayBtYXNrLCBQ
YXNzUmVmUHRyPFJhbmdlPiByYW5nZSkKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tp
bmdGb3IoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gcmVxdWVzdCkKIHsKLSAgICBpZiAo
IWNhbkNoZWNrQXN5bmNocm9ub3VzbHkocmFuZ2UuZ2V0KCkpKQorICAgIGlmICghY2FuQ2hlY2tB
c3luY2hyb25vdXNseShyZXF1ZXN0LT5wYXJhZ3JhcGhSYW5nZSgpLmdldCgpKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiByZXF1ZXN0KGNyZWF0ZVJl
cXVlc3QobWFzaywgcmFuZ2UpKTsKLSAgICBpZiAoIXJlcXVlc3QpCisgICAgUmVmUHRyPEludGVy
bmFsU3BlbGxDaGVja1JlcXVlc3Q+IGludGVybmFsUmVxdWVzdChhZG9wdFJlZihuZXcgSW50ZXJu
YWxTcGVsbENoZWNrUmVxdWVzdCgrK21fbGFzdFJlcXVlc3RlZFNlcXVlbmNlLCByZXF1ZXN0KSkp
OworCisgICAgaWYgKCFpbnRlcm5hbFJlcXVlc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5pc0FjdGl2ZSgpIHx8IG1fcHJvY2Vzc2lu
Z1JlcXVlc3QpIHsKLSAgICAgICAgZW5xdWV1ZVJlcXVlc3QocmVxdWVzdC5yZWxlYXNlKCkpOwor
ICAgICAgICBlbnF1ZXVlUmVxdWVzdChpbnRlcm5hbFJlcXVlc3QucmVsZWFzZSgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludm9rZVJlcXVlc3QocmVxdWVzdC5yZWxlYXNlKCkp
OworICAgIGludm9rZVJlcXVlc3QoaW50ZXJuYWxSZXF1ZXN0LnJlbGVhc2UoKSk7CiB9CiAKLXZv
aWQgU3BlbGxDaGVja2VyOjppbnZva2VSZXF1ZXN0KFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVl
c3Q+IHJlcXVlc3QpCit2b2lkIFNwZWxsQ2hlY2tlcjo6aW52b2tlUmVxdWVzdChQYXNzUmVmUHRy
PEludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKCFtX3By
b2Nlc3NpbmdSZXF1ZXN0KTsKIApAQCAtMTQ5LDcgKzE2Myw3IEBAIHZvaWQgU3BlbGxDaGVja2Vy
OjppbnZva2VSZXF1ZXN0KFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QpCiAg
ICAgY2xpZW50KCktPnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHRoaXMsIG1fcHJvY2Vzc2luZ1Jl
cXVlc3QtPnNlcXVlbmNlKCksIG1fcHJvY2Vzc2luZ1JlcXVlc3QtPm1hc2soKSwgbV9wcm9jZXNz
aW5nUmVxdWVzdC0+dGV4dCgpKTsKIH0KIAotdm9pZCBTcGVsbENoZWNrZXI6OmVucXVldWVSZXF1
ZXN0KFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+IHJlcXVlc3QpCit2b2lkIFNwZWxsQ2hl
Y2tlcjo6ZW5xdWV1ZVJlcXVlc3QoUGFzc1JlZlB0cjxJbnRlcm5hbFNwZWxsQ2hlY2tSZXF1ZXN0
PiByZXF1ZXN0KQogewogICAgIEFTU0VSVChyZXF1ZXN0KTsKIApAQCAtMTY0LDM3ICsxNzgsNiBA
QCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZW5xdWV1ZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNr
UmVxdWVzdD4gcmVxdWVzdCkKICAgICBtX3JlcXVlc3RRdWV1ZS5hcHBlbmQocmVxdWVzdCk7CiB9
CiAKLXN0YXRpYyBib29sIGZvcndhcmRJdGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRv
ciwgaW50IGRpc3RhbmNlKQotewotICAgIGludCByZW1haW5pbmcgPSBkaXN0YW5jZTsKLSAgICB3
aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLm5vZGUoKS0+
aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7Ci0gICAgICAgICAgICBpbnQgbGVuZ3RoID0gbGFzdE9m
ZnNldEZvckVkaXRpbmcoaXRlcmF0b3Iubm9kZSgpKTsKLSAgICAgICAgICAgIGludCBsYXN0ID0g
bGVuZ3RoIC0gaXRlcmF0b3Iub2Zmc2V0SW5MZWFmTm9kZSgpOwotICAgICAgICAgICAgaWYgKHJl
bWFpbmluZyA8IGxhc3QpIHsKLSAgICAgICAgICAgICAgICBpdGVyYXRvci5zZXRPZmZzZXRJbkxl
YWZOb2RlKGl0ZXJhdG9yLm9mZnNldEluTGVhZk5vZGUoKSArIHJlbWFpbmluZyk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlbWFp
bmluZyAtPSBsYXN0OwotICAgICAgICAgICAgaXRlcmF0b3Iuc2V0T2Zmc2V0SW5MZWFmTm9kZShp
dGVyYXRvci5vZmZzZXRJbkxlYWZOb2RlKCkgKyBsYXN0KTsKLSAgICAgICAgfQotCi0gICAgICAg
IGl0ZXJhdG9yLmluY3JlbWVudCgpOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsgICAgCi19
Ci0KLXN0YXRpYyBEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSB0b01hcmtlclR5cGUoVGV4dENo
ZWNraW5nVHlwZSB0eXBlKQotewotICAgIGlmICh0eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVs
bGluZykKLSAgICAgICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBBU1NF
UlQodHlwZSA9PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcik7Ci0gICAgcmV0dXJuIERvY3VtZW50
TWFya2VyOjpHcmFtbWFyOwotfQotCi0vLyBDdXJyZW5udGx5IGlnbm9yaW5nIFRleHRDaGVja2lu
Z1Jlc3VsdDo6ZGV0YWlscyBidXQgc2hvdWxkIGJlIGhhbmRsZWQuIFNlZSBCdWcgNTYzNjguCiB2
b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4
dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsKICAgICBBU1NFUlQobV9wcm9jZXNzaW5nUmVx
dWVzdCk7CkBAIC0yMDUsMzkgKzE4OCwxMSBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2so
aW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsKLSAgICBQb3Np
dGlvbkl0ZXJhdG9yIHN0YXJ0ID0gbV9wcm9jZXNzaW5nUmVxdWVzdC0+cmFuZ2UoKS0+c3RhcnRQ
b3NpdGlvbigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVTcGVs
bGluZyAmJiByZXN1bHRzW2ldLnR5cGUgIT0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBUbyBhdm9pZCBtb3ZpbmcgdGhlIHBvc2l0
aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNvcnRlZCB3aXRo
Ci0gICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVzIHJldHVybmVkIGJ5IFtOU1NwZWxs
Q2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgotICAgICAgICBBU1NFUlQoc3RhcnRP
ZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbik7Ci0gICAgICAgIGlmICghZm9yd2FyZEl0ZXJh
dG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uIC0gc3RhcnRPZmZzZXQpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIFBvc2l0aW9uSXRlcmF0b3IgZW5kID0gc3RhcnQ7Ci0gICAgICAg
IGlmICghZm9yd2FyZEl0ZXJhdG9yKGVuZCwgcmVzdWx0c1tpXS5sZW5ndGgpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgLy8gVXNlcnMgb3IgSmF2YVNjcmlwdCBhcHBsaWNhdGlvbnMg
bWF5IGNoYW5nZSB0ZXh0IHdoaWxlIGEgc3BlbGwtY2hlY2tlciBjaGVja3MgaXRzCi0gICAgICAg
IC8vIHNwZWxsaW5ncyBpbiB0aGUgYmFja2dyb3VuZC4gVG8gYXZvaWQgYWRkaW5nIG1hcmtlcnMg
dG8gdGhlIHdvcmRzIG1vZGlmaWVkIGJ5IHVzZXJzIG9yCi0gICAgICAgIC8vIEphdmFTY3JpcHQg
YXBwbGljYXRpb25zLCByZXRyaWV2ZSB0aGUgd29yZHMgaW4gdGhlIHNwZWNpZmllZCByZWdpb24g
YW5kIGNvbXBhcmUgdGhlbSB3aXRoCi0gICAgICAgIC8vIHRoZSBvcmlnaW5hbCBvbmVzLgotICAg
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX3Byb2Nlc3NpbmdSZXF1
ZXN0LT5yYW5nZSgpLT5vd25lckRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOwotICAgICAgICAvLyBG
SVhNRTogVXNlIHRleHRDb250ZW50KCkgY29tcGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KLSAg
ICAgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5n
IHNvdXJjZSA9IG1fcHJvY2Vzc2luZ1JlcXVlc3QtPnRleHQoKS5zdWJzdHJpbmcocmVzdWx0c1tp
XS5sb2NhdGlvbiwgcmVzdWx0c1tpXS5sZW5ndGgpOwotICAgICAgICBpZiAoZGVzdGluYXRpb24g
PT0gc291cmNlKQotICAgICAgICAgICAgbV9wcm9jZXNzaW5nUmVxdWVzdC0+cmFuZ2UoKS0+b3du
ZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5nZS5nZXQoKSwgdG9NYXJrZXJU
eXBlKHJlc3VsdHNbaV0udHlwZSkpOwotCi0gICAgICAgIHN0YXJ0T2Zmc2V0ID0gcmVzdWx0c1tp
XS5sb2NhdGlvbjsKLSAgICB9CisgICAgbV9mcmFtZS0+ZWRpdG9yKCktPm1hcmtBbmRSZXBsYWNl
Rm9yKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPm1hc2soKSwgcmVzdWx0cywgbV9wcm9jZXNzaW5nUmVx
dWVzdC0+Y2hlY2tpbmdSYW5nZSgpLCBtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5wYXJhZ3JhcGhSYW5n
ZSgpKTsKIAogICAgIG1fcHJvY2Vzc2luZ1JlcXVlc3QuY2xlYXIoKTsKICAgICBpZiAoIW1fcmVx
dWVzdFF1ZXVlLmlzRW1wdHkoKSkKICAgICAgICAgbV90aW1lclRvUHJvY2Vzc1F1ZXVlZFJlcXVl
c3Quc3RhcnRPbmVTaG90KDApOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCmluZGV4IDcwMmYzNjlkNTY1N2FlYmM0NTliNTEx
M2Y2ZTIxNmE1ZGMyOGYxZmYuLmVmMzE1ODJhMzdkOWFjNzU2Mzg0ODliMzMxZmFjMzJlOWI0MTQx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaApAQCAtMjcsMjAgKzI3LDQx
IEBACiAjZGVmaW5lIFNwZWxsQ2hlY2tlcl9oCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgTm9kZTsKIGNsYXNzIFRleHRDaGVj
a2VyQ2xpZW50Owogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKLWNsYXNzIFJhbmdlOworCitj
bGFzcyBTcGVsbENoZWNrUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNwZWxsQ2hlY2tSZXF1
ZXN0PiB7CitwdWJsaWM6CisgICAgU3BlbGxDaGVja1JlcXVlc3QoUGFzc1JlZlB0cjxSYW5nZT4g
Y2hlY2tpbmdSYW5nZSwgUGFzc1JlZlB0cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2UsIGNvbnN0IFN0
cmluZyYsIFRleHRDaGVja2luZ1R5cGVNYXNrKTsKKyAgICB+U3BlbGxDaGVja1JlcXVlc3QoKTsK
KworICAgIFBhc3NSZWZQdHI8UmFuZ2U+IGNoZWNraW5nUmFuZ2UoKSBjb25zdCB7IHJldHVybiBt
X2NoZWNraW5nUmFuZ2U7IH0KKyAgICBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYWdyYXBoUmFuZ2U7IH0KKyAgICBjb25zdCBTdHJpbmcmIHRl
eHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBt
YXNrKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrOyB9CisgICAgRWxlbWVudCogcm9vdEVkaXRhYmxl
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVkaXRhYmxlRWxlbWVudDsgfQorCitwcml2
YXRlOgorICAgIFJlZlB0cjxSYW5nZT4gbV9jaGVja2luZ1JhbmdlOworICAgIFJlZlB0cjxSYW5n
ZT4gbV9wYXJhZ3JhcGhSYW5nZTsKKyAgICBTdHJpbmcgbV90ZXh0OworICAgIFRleHRDaGVja2lu
Z1R5cGVNYXNrIG1fbWFzazsKKyAgICBFbGVtZW50KiBtX3Jvb3RFZGl0YWJsZUVsZW1lbnQ7Cit9
OwogCiBjbGFzcyBTcGVsbENoZWNrZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNwZWxs
Q2hlY2tlcik7CkBAIC01MCwyNiArNzEsMjcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0FzeW5j
aHJvbm91c0VuYWJsZWQoKSBjb25zdDsKICAgICBib29sIGlzQ2hlY2thYmxlKFJhbmdlKikgY29u
c3Q7Ci0gICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2ssIFBh
c3NSZWZQdHI8UmFuZ2U+KTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1
ZXN0PiBjcmVhdGVSZXF1ZXN0KFRleHRDaGVja2luZ1R5cGVNYXNrLCBQYXNzUmVmUHRyPFJhbmdl
PiBjaGVja2luZ1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSk7CisgICAg
dm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4pOwog
ICAgIHZvaWQgZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5n
UmVzdWx0PiYpOwogCiBwcml2YXRlOgotICAgIGNsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwotICAg
IHR5cGVkZWYgRGVxdWU8UmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiA+IFJlcXVlc3RRdWV1ZTsK
KyAgICBjbGFzcyBJbnRlcm5hbFNwZWxsQ2hlY2tSZXF1ZXN0OworICAgIHR5cGVkZWYgRGVxdWU8
UmVmUHRyPEludGVybmFsU3BlbGxDaGVja1JlcXVlc3Q+ID4gUmVxdWVzdFF1ZXVlOwogCiAgICAg
Ym9vbCBjYW5DaGVja0FzeW5jaHJvbm91c2x5KFJhbmdlKikgY29uc3Q7Ci0gICAgUGFzc1JlZlB0
cjxTcGVsbENoZWNrUmVxdWVzdD4gY3JlYXRlUmVxdWVzdChUZXh0Q2hlY2tpbmdUeXBlTWFzaywg
UGFzc1JlZlB0cjxSYW5nZT4pOwogICAgIFRleHRDaGVja2VyQ2xpZW50KiBjbGllbnQoKSBjb25z
dDsKICAgICB2b2lkIHRpbWVyRmlyZWRUb1Byb2Nlc3NRdWV1ZWRSZXF1ZXN0KFRpbWVyPFNwZWxs
Q2hlY2tlcj4qKTsKLSAgICB2b2lkIGludm9rZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNr
UmVxdWVzdD4pOwotICAgIHZvaWQgZW5xdWV1ZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNr
UmVxdWVzdD4pOworICAgIHZvaWQgaW52b2tlUmVxdWVzdChQYXNzUmVmUHRyPEludGVybmFsU3Bl
bGxDaGVja1JlcXVlc3Q+KTsKKyAgICB2b2lkIGVucXVldWVSZXF1ZXN0KFBhc3NSZWZQdHI8SW50
ZXJuYWxTcGVsbENoZWNrUmVxdWVzdD4pOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgaW50
IG1fbGFzdFJlcXVlc3RlZFNlcXVlbmNlOwogCiAgICAgVGltZXI8U3BlbGxDaGVja2VyPiBtX3Rp
bWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdDsKIAotICAgIFJlZlB0cjxTcGVsbENoZWNrUmVxdWVz
dD4gbV9wcm9jZXNzaW5nUmVxdWVzdDsKKyAgICBSZWZQdHI8SW50ZXJuYWxTcGVsbENoZWNrUmVx
dWVzdD4gbV9wcm9jZXNzaW5nUmVxdWVzdDsKICAgICBSZXF1ZXN0UXVldWUgbV9yZXF1ZXN0UXVl
dWU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2lu
Z0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKaW5kZXggOTc2MWM3NTQ0ZTRhM2JiM2FmMTU0MWZhYWE4OGM4ZGM2ZWMxOTdkZC4uZDU1Mzgz
MDNkMGJjN2I5Zjc0M2Y1MmY4OThlYmFiNTNiMjIwMzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMTE2LDYgKzExNiwxNSBAQCBUZXh0
Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVja2luZ1BhcmFncmFwaChQYXNzUmVmUHRyPFJhbmdl
PiBjaGVja2luZ1JhbmdlKQogewogfQogCitUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6OlRleHRDaGVj
a2luZ1BhcmFncmFwaChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1JhbmdlLCBQYXNzUmVmUHRy
PFJhbmdlPiBwYXJhZ3JhcGhSYW5nZSkKKyAgICA6IG1fY2hlY2tpbmdSYW5nZShjaGVja2luZ1Jh
bmdlKQorICAgICwgbV9wYXJhZ3JhcGhSYW5nZShwYXJhZ3JhcGhSYW5nZSkKKyAgICAsIG1fY2hl
Y2tpbmdTdGFydCgtMSkKKyAgICAsIG1fY2hlY2tpbmdFbmQoLTEpCisgICAgLCBtX2NoZWNraW5n
TGVuZ3RoKC0xKQoreworfQorCiBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGg6On5UZXh0Q2hlY2tpbmdQ
YXJhZ3JhcGgoKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
Q2hlY2tpbmdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmgKaW5kZXggMDFjODRjZmIyYmQzNmNlYTU2ZDdjYjRiZmUwOTkyMWM0MzJmNmJhYy4uNDdh
NjFiMzYwOTkzYmJhYzkwOTQxOWNlOWFjMDgwNGYwYjhjZGU1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC0zMSw2ICszMSw3IEBAIGNsYXNzIFBv
c2l0aW9uOwogY2xhc3MgVGV4dENoZWNraW5nUGFyYWdyYXBoIHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoUGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5n
ZSk7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoKFBhc3NSZWZQdHI8UmFuZ2U+IGNoZWNraW5n
UmFuZ2UsIFBhc3NSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlKTsKICAgICB+VGV4dENoZWNr
aW5nUGFyYWdyYXBoKCk7CiAKICAgICBpbnQgcmFuZ2VMZW5ndGgoKSBjb25zdDsK
</data>
<flag name="review"
          id="117854"
          type_id="1"
          status="-"
          setter="morrita"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118534</attachid>
            <date>2011-12-08 22:44:48 -0800</date>
            <delta_ts>2011-12-09 04:15:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73616-20111209154446.patch</filename>
            <type>text/plain</type>
            <size>4569</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJjZGU5Yjc1ODc3Nzgw
MzhjNmQ4ZWQ5ZTBkN2Q3MjNjNmZlY2MxMC4uYTZiNzk4MTA4NWU1Y2RlNDk2MTQ3YTdhNjVkOGY4
YzRmOTUwYWJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTEyLTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgQXN5bmNocm9ub3Vz
IHBhdGggc3luY2hyb25vdXMgcGF0aCBvZiBTcGVsbENoZWNrZXIgc2hvdWxkIHNoYXJlIHRoZSBj
b2RlIHRvIG1hcmsgbWlzc3BlbGxpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBwYXRoIHNob3VsZCBj
YWxsIHRoZSBzYW1lIG1ldGhvZCBmb3IgdGhlIHN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcgcGF0
aAorICAgICAgICB0byBtYXJrIG1pc3NwZWxsaW5ncy4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hl
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmRpZENoZWNrKTogQ2Fs
bHMgdGhlIHNhbWUgbWV0aG9kIG9mIHN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcgcGF0aC4KKwog
MjAxMS0xMi0wOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBJ
dCdzIHNlbWFudGljYWxseSBpbmNvcnJlY3QgdG8gY2FsbCBub3RpZnlOb2RlTGlzdHNBdHRyaWJ1
dGVDaGFuZ2VkIGluIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BlbGxDaGVja2VyLmNwcAppbmRleCBiZGYwMTlkYmY1NmM5NmY4ZjJkM2VlNjIzMmNl
MzMyNjgyODU5Y2VjLi42Y2IyOGEzODE0ZWIzZTg4MTViYjA4N2YyODAyYTg4Y2UzYjdlMzVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCkBAIC0xNjMsMzcgKzE2Myw2
IEBAIHZvaWQgU3BlbGxDaGVja2VyOjplbnF1ZXVlUmVxdWVzdChQYXNzUmVmUHRyPFNwZWxsQ2hl
Y2tSZXF1ZXN0PiByZXF1ZXN0KQogICAgIG1fcmVxdWVzdFF1ZXVlLmFwcGVuZChyZXF1ZXN0KTsK
IH0KIAotc3RhdGljIGJvb2wgZm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9uSXRlcmF0b3ImIGl0ZXJh
dG9yLCBpbnQgZGlzdGFuY2UpCi17Ci0gICAgaW50IHJlbWFpbmluZyA9IGRpc3RhbmNlOwotICAg
IHdoaWxlICghaXRlcmF0b3IuYXRFbmQoKSkgewotICAgICAgICBpZiAoaXRlcmF0b3Iubm9kZSgp
LT5pc0NoYXJhY3RlckRhdGFOb2RlKCkpIHsKLSAgICAgICAgICAgIGludCBsZW5ndGggPSBsYXN0
T2Zmc2V0Rm9yRWRpdGluZyhpdGVyYXRvci5ub2RlKCkpOwotICAgICAgICAgICAgaW50IGxhc3Qg
PSBsZW5ndGggLSBpdGVyYXRvci5vZmZzZXRJbkxlYWZOb2RlKCk7Ci0gICAgICAgICAgICBpZiAo
cmVtYWluaW5nIDwgbGFzdCkgewotICAgICAgICAgICAgICAgIGl0ZXJhdG9yLnNldE9mZnNldElu
TGVhZk5vZGUoaXRlcmF0b3Iub2Zmc2V0SW5MZWFmTm9kZSgpICsgcmVtYWluaW5nKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVt
YWluaW5nIC09IGxhc3Q7Ci0gICAgICAgICAgICBpdGVyYXRvci5zZXRPZmZzZXRJbkxlYWZOb2Rl
KGl0ZXJhdG9yLm9mZnNldEluTGVhZk5vZGUoKSArIGxhc3QpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaXRlcmF0b3IuaW5jcmVtZW50KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOyAgICAK
LX0KLQotc3RhdGljIERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlIHRvTWFya2VyVHlwZShUZXh0
Q2hlY2tpbmdUeXBlIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUgPT0gVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nKQotICAgICAgICByZXR1cm4gRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nOwotICAgIEFT
U0VSVCh0eXBlID09IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKTsKLSAgICByZXR1cm4gRG9jdW1l
bnRNYXJrZXI6OkdyYW1tYXI7Ci19Ci0KLS8vIEN1cnJlbm50bHkgaWdub3JpbmcgVGV4dENoZWNr
aW5nUmVzdWx0OjpkZXRhaWxzIGJ1dCBzaG91bGQgYmUgaGFuZGxlZC4gU2VlIEJ1ZyA1NjM2OC4K
IHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewogICAgIEFTU0VSVChtX3Byb2Nlc3NpbmdS
ZXF1ZXN0KTsKQEAgLTIwMywzNCArMTcyLDcgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNr
KGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3UKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCBzdGFydE9mZnNldCA9IDA7Ci0gICAgUG9z
aXRpb25JdGVyYXRvciBzdGFydCA9IG1fcHJvY2Vzc2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2Uo
KS0+c3RhcnRQb3NpdGlvbigpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5z
aXplKCk7ICsraSkgewotICAgICAgICBpZiAocmVzdWx0c1tpXS50eXBlICE9IFRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZyAmJiByZXN1bHRzW2ldLnR5cGUgIT0gVGV4dENoZWNraW5nVHlwZUdyYW1t
YXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBUbyBhdm9pZCBtb3Zpbmcg
dGhlIHBvc2l0aW9uIGJhY2t3YXJkLCB3ZSBhc3N1bWUgdGhlIGdpdmVuIHJlc3VsdHMgYXJlIHNv
cnRlZCB3aXRoCi0gICAgICAgIC8vIHN0YXJ0T2Zmc2V0IGFzIHRoZSBvbmVzIHJldHVybmVkIGJ5
IFtOU1NwZWxsQ2hlY2tlciByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZzpdLgotICAgICAgICBBU1NF
UlQoc3RhcnRPZmZzZXQgPD0gcmVzdWx0c1tpXS5sb2NhdGlvbik7Ci0gICAgICAgIGlmICghZm9y
d2FyZEl0ZXJhdG9yKHN0YXJ0LCByZXN1bHRzW2ldLmxvY2F0aW9uIC0gc3RhcnRPZmZzZXQpKQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFBvc2l0aW9uSXRlcmF0b3IgZW5kID0gc3RhcnQ7
Ci0gICAgICAgIGlmICghZm9yd2FyZEl0ZXJhdG9yKGVuZCwgcmVzdWx0c1tpXS5sZW5ndGgpKQot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLy8gVXNlcnMgb3IgSmF2YVNjcmlwdCBhcHBs
aWNhdGlvbnMgbWF5IGNoYW5nZSB0ZXh0IHdoaWxlIGEgc3BlbGwtY2hlY2tlciBjaGVja3MgaXRz
Ci0gICAgICAgIC8vIHNwZWxsaW5ncyBpbiB0aGUgYmFja2dyb3VuZC4gVG8gYXZvaWQgYWRkaW5n
IG1hcmtlcnMgdG8gdGhlIHdvcmRzIG1vZGlmaWVkIGJ5IHVzZXJzIG9yCi0gICAgICAgIC8vIEph
dmFTY3JpcHQgYXBwbGljYXRpb25zLCByZXRyaWV2ZSB0aGUgd29yZHMgaW4gdGhlIHNwZWNpZmll
ZCByZWdpb24gYW5kIGNvbXBhcmUgdGhlbSB3aXRoCi0gICAgICAgIC8vIHRoZSBvcmlnaW5hbCBv
bmVzLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShtX3Byb2Nl
c3NpbmdSZXF1ZXN0LT5jaGVja2luZ1JhbmdlKCktPm93bmVyRG9jdW1lbnQoKSwgc3RhcnQsIGVu
ZCk7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgdGV4dENvbnRlbnQoKSBjb21wYXRpYmxlIHN0cmlu
ZyBjb252ZXJzaW9uLgotICAgICAgICBTdHJpbmcgZGVzdGluYXRpb24gPSByYW5nZS0+dGV4dCgp
OwotICAgICAgICBTdHJpbmcgc291cmNlID0gbV9wcm9jZXNzaW5nUmVxdWVzdC0+dGV4dCgpLnN1
YnN0cmluZyhyZXN1bHRzW2ldLmxvY2F0aW9uLCByZXN1bHRzW2ldLmxlbmd0aCk7Ci0gICAgICAg
IGlmIChkZXN0aW5hdGlvbiA9PSBzb3VyY2UpCi0gICAgICAgICAgICBtX3Byb2Nlc3NpbmdSZXF1
ZXN0LT5jaGVja2luZ1JhbmdlKCktPm93bmVyRG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJr
ZXIocmFuZ2UuZ2V0KCksIHRvTWFya2VyVHlwZShyZXN1bHRzW2ldLnR5cGUpKTsKLQotICAgICAg
ICBzdGFydE9mZnNldCA9IHJlc3VsdHNbaV0ubG9jYXRpb247Ci0gICAgfQorICAgIG1fZnJhbWUt
PmVkaXRvcigpLT5tYXJrQW5kUmVwbGFjZUZvcihtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5tYXNrKCks
IHJlc3VsdHMsIG1fcHJvY2Vzc2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2UoKSwgbV9wcm9jZXNz
aW5nUmVxdWVzdC0+cGFyYWdyYXBoUmFuZ2UoKSk7CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2Vk
U2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAgbV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPSBz
ZXF1ZW5jZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118558</attachid>
            <date>2011-12-09 04:16:04 -0800</date>
            <delta_ts>2011-12-11 19:12:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73616-20111209211602.patch</filename>
            <type>text/plain</type>
            <size>8277</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJjZGU5Yjc1ODc3Nzgw
MzhjNmQ4ZWQ5ZTBkN2Q3MjNjNmZlY2MxMC4uMzNlZDEyODMwM2QwZjZiNDMwYzg2NzI1NTIxNDQx
Zjk2ODgyN2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTA5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgQXN5bmNocm9ub3Vz
IHBhdGggc3luY2hyb25vdXMgcGF0aCBvZiBTcGVsbENoZWNrZXIgc2hvdWxkIHNoYXJlIHRoZSBj
b2RlIHRvIG1hcmsgbWlzc3BlbGxpbmdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBc3luY2hyb25vdXMgc3BlbGxjaGVja2luZyBwYXRoIHNob3VsZCBj
YWxsIHRoZSBzYW1lIG1ldGhvZCBmb3IgdGhlIHN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcgcGF0
aAorICAgICAgICB0byBtYXJrIG1pc3NwZWxsaW5ncy4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFySW5SYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQW5kUmVwbGFj
ZUZvcik6CisgICAgICAgICAgVGFrZXMgU3BlbGxDaGVja1JlcXVlc3Qgb2JqZWN0LgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVjayk6CisgICAgICAgICAg
Q2FsbHMgdGhlIHNhbWUgbWV0aG9kIG9mIHN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcgcGF0aC4K
KwogMjAxMS0xMi0wOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBJdCdzIHNlbWFudGljYWxseSBpbmNvcnJlY3QgdG8gY2FsbCBub3RpZnlOb2RlTGlzdHNBdHRy
aWJ1dGVDaGFuZ2VkIGluIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAppbmRleCA3YjEwM2YxNmM4ZjhmN2Y4YTkxZDQ3NDY2YmJmZmQ0NmRiM2Iy
OWYyLi45MWM5MGZlNWUyMzQzY2QyZjYyOTNjYjU2MmQ0NGVhNTcwOTQyYzYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yMDE0LDI0ICsyMDE0LDMwIEBAIHZvaWQgRWRpdG9yOjpt
YXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVN
YXNrIHRleHRDCiAgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaFRvQ2hlY2socmFu
Z2VUb0NoZWNrKTsKICAgICBpZiAocGFyYWdyYXBoVG9DaGVjay5pc1JhbmdlRW1wdHkoKSB8fCBw
YXJhZ3JhcGhUb0NoZWNrLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxS
YW5nZT4gcGFyYWdyYXBoUmFuZ2UgPSBwYXJhZ3JhcGhUb0NoZWNrLnBhcmFncmFwaFJhbmdlKCk7
CiAKICAgICBib29sIGFzeW5jaHJvbm91cyA9IG1fZnJhbWUgJiYgbV9mcmFtZS0+c2V0dGluZ3Mo
KSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpICYmICFzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsOworCisgICAgLy8gSW4gYXN5bmNocm9u
b3VzIG1vZGUsIHdlIGludGVudGlvbmFsbHkgY2hlY2sgcGFyYWdyYXBoLXdpZGUgc2VudGVuY2Uu
CisgICAgUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0PiByZXF1ZXN0ID0gU3BlbGxDaGVja1JlcXVl
c3Q6OmNyZWF0ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4dENoZWNraW5nT3B0aW9u
cyksIGFzeW5jaHJvbm91cyA/IHBhcmFncmFwaFJhbmdlIDogcmFuZ2VUb0NoZWNrLCBwYXJhZ3Jh
cGhSYW5nZSk7CisKICAgICBpZiAoYXN5bmNocm9ub3VzKSB7Ci0gICAgICAgIC8vIEluIGFzeW5j
aHJvbm91cyBtb2RlLCB3ZSBpbnRlbnRpb25hbGx5IGNoZWNrIHBhcmFncmFwaC13aWRlIHNlbnRl
bmNlLgotICAgICAgICBSZWZQdHI8UmFuZ2U+IHBhcmFncmFwaFJhbmdlID0gcGFyYWdyYXBoVG9D
aGVjay5wYXJhZ3JhcGhSYW5nZSgpOwotICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENo
ZWNraW5nRm9yKFNwZWxsQ2hlY2tSZXF1ZXN0OjpjcmVhdGUocmVzb2x2ZVRleHRDaGVja2luZ1R5
cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCBwYXJhZ3JhcGhSYW5nZSwgcGFyYWdyYXBoUmFu
Z2UpKTsKKyAgICAgICAgbV9zcGVsbENoZWNrZXItPnJlcXVlc3RDaGVja2luZ0ZvcihyZXF1ZXN0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+IHJlc3VsdHM7CiAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4dENoZWNrZXIoKSwgcGFy
YWdyYXBoVG9DaGVjay50ZXh0Q2hhcmFjdGVycygpLCBwYXJhZ3JhcGhUb0NoZWNrLnRleHRMZW5n
dGgoKSwKICAgICAgICAgcmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09w
dGlvbnMpLCByZXN1bHRzKTsKLSAgICBtYXJrQW5kUmVwbGFjZUZvcih0ZXh0Q2hlY2tpbmdPcHRp
b25zLCByZXN1bHRzLCByYW5nZVRvQ2hlY2ssIHBhcmFncmFwaFRvQ2hlY2sucGFyYWdyYXBoUmFu
Z2UoKSk7CisgICAgbWFya0FuZFJlcGxhY2VGb3IocmVxdWVzdCwgcmVzdWx0cyk7CiB9CiAKLXZv
aWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hl
Y2tpbmdPcHRpb25zLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cywg
UGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSwgUGFzc1JlZlB0cjxSYW5nZT4gcGFyYWdy
YXBoUmFuZ2UpCit2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoUGFzc1JlZlB0cjxTcGVs
bENoZWNrUmVxdWVzdD4gcmVxdWVzdCwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCiB7Ci0gICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHBhcmFncmFwaChjaGVja2lu
Z1JhbmdlLCBwYXJhZ3JhcGhSYW5nZSk7CisgICAgQVNTRVJUKHJlcXVlc3QpOworCisgICAgVGV4
dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IHJlcXVlc3QtPm1hc2soKTsK
KyAgICBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGggcGFyYWdyYXBoKHJlcXVlc3QtPmNoZWNraW5nUmFu
Z2UoKSwgcmVxdWVzdC0+cGFyYWdyYXBoUmFuZ2UoKSk7CiAKICAgICBib29sIHNob3VsZE1hcmtT
cGVsbGluZyA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7
CiAgICAgYm9vbCBzaG91bGRNYXJrR3JhbW1hciA9IHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGJmMjdjNTEw
N2Q0N2E1ODYzMzMzMDhjMzE3YzE3ODA2MjI5MTg2MjMuLjVkZDc5NmU2NWU4OTU2MjI3NGNjYjBj
NWFiYmM2Y2JlMzlkOTMzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNjEsNiArNjEs
NyBAQCBjbGFzcyBLaWxsUmluZzsKIGNsYXNzIFBhc3RlYm9hcmQ7CiBjbGFzcyBTaW1wbGVGb250
RGF0YTsKIGNsYXNzIFNwZWxsQ2hlY2tlcjsKK2NsYXNzIFNwZWxsQ2hlY2tSZXF1ZXN0OwogY2xh
c3MgU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlcjsKIGNsYXNzIFRleHQ7CiBjbGFzcyBUZXh0
Q2hlY2tlckNsaWVudDsKQEAgLTIyMyw3ICsyMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJr
TWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mLCBSZWZQdHI8UmFuZ2U+JiBmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIHZvaWQgbWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYpOwogICAgIHZvaWQgbWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pOwotICAgIHZvaWQgbWFy
a0FuZFJlcGxhY2VGb3IoVGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiwgUGFzc1JlZlB0cjxSYW5nZT4gY2hlY2tpbmdSYW5nZSwgUGFzc1JlZlB0
cjxSYW5nZT4gcGFyYWdyYXBoUmFuZ2UpOworICAgIHZvaWQgbWFya0FuZFJlcGxhY2VGb3IoUGFz
c1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4sIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1
bHQ+Jik7CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgdm9pZCB1
cHBlcmNhc2VXb3JkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKaW5k
ZXggYmRmMDE5ZGJmNTZjOTZmOGYyZDNlZTYyMzJjZTMzMjY4Mjg1OWNlYy4uNjgzNjQ0YzZkMDE1
ZWM5MjlmNTJmODU5ZDMzNmRiN2U4MmYxMmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcApAQCAtMTYzLDM3ICsxNjMsNiBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZW5x
dWV1ZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4gcmVxdWVzdCkKICAgICBt
X3JlcXVlc3RRdWV1ZS5hcHBlbmQocmVxdWVzdCk7CiB9CiAKLXN0YXRpYyBib29sIGZvcndhcmRJ
dGVyYXRvcihQb3NpdGlvbkl0ZXJhdG9yJiBpdGVyYXRvciwgaW50IGRpc3RhbmNlKQotewotICAg
IGludCByZW1haW5pbmcgPSBkaXN0YW5jZTsKLSAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkp
IHsKLSAgICAgICAgaWYgKGl0ZXJhdG9yLm5vZGUoKS0+aXNDaGFyYWN0ZXJEYXRhTm9kZSgpKSB7
Ci0gICAgICAgICAgICBpbnQgbGVuZ3RoID0gbGFzdE9mZnNldEZvckVkaXRpbmcoaXRlcmF0b3Iu
bm9kZSgpKTsKLSAgICAgICAgICAgIGludCBsYXN0ID0gbGVuZ3RoIC0gaXRlcmF0b3Iub2Zmc2V0
SW5MZWFmTm9kZSgpOwotICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8IGxhc3QpIHsKLSAgICAg
ICAgICAgICAgICBpdGVyYXRvci5zZXRPZmZzZXRJbkxlYWZOb2RlKGl0ZXJhdG9yLm9mZnNldElu
TGVhZk5vZGUoKSArIHJlbWFpbmluZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlbWFpbmluZyAtPSBsYXN0OwotICAgICAgICAg
ICAgaXRlcmF0b3Iuc2V0T2Zmc2V0SW5MZWFmTm9kZShpdGVyYXRvci5vZmZzZXRJbkxlYWZOb2Rl
KCkgKyBsYXN0KTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yLmluY3JlbWVudCgpOwot
ICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsgICAgCi19Ci0KLXN0YXRpYyBEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZSB0b01hcmtlclR5cGUoVGV4dENoZWNraW5nVHlwZSB0eXBlKQotewotICAg
IGlmICh0eXBlID09IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZykKLSAgICAgICAgcmV0dXJuIERv
Y3VtZW50TWFya2VyOjpTcGVsbGluZzsKLSAgICBBU1NFUlQodHlwZSA9PSBUZXh0Q2hlY2tpbmdU
eXBlR3JhbW1hcik7Ci0gICAgcmV0dXJuIERvY3VtZW50TWFya2VyOjpHcmFtbWFyOwotfQotCi0v
LyBDdXJyZW5udGx5IGlnbm9yaW5nIFRleHRDaGVja2luZ1Jlc3VsdDo6ZGV0YWlscyBidXQgc2hv
dWxkIGJlIGhhbmRsZWQuIFNlZSBCdWcgNTYzNjguCiB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hl
Y2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cykKIHsKICAgICBBU1NFUlQobV9wcm9jZXNzaW5nUmVxdWVzdCk7CkBAIC0yMDMsMzQgKzE3Miw3
IEBAIHZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpbnQgc3RhcnRPZmZzZXQgPSAwOwotICAgIFBvc2l0aW9uSXRlcmF0b3Igc3RhcnQgPSBtX3By
b2Nlc3NpbmdSZXF1ZXN0LT5jaGVja2luZ1JhbmdlKCktPnN0YXJ0UG9zaXRpb24oKTsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYg
KHJlc3VsdHNbaV0udHlwZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0c1tp
XS50eXBlICE9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgLy8gVG8gYXZvaWQgbW92aW5nIHRoZSBwb3NpdGlvbiBiYWNrd2FyZCwgd2Ug
YXNzdW1lIHRoZSBnaXZlbiByZXN1bHRzIGFyZSBzb3J0ZWQgd2l0aAotICAgICAgICAvLyBzdGFy
dE9mZnNldCBhcyB0aGUgb25lcyByZXR1cm5lZCBieSBbTlNTcGVsbENoZWNrZXIgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmc6XS4KLSAgICAgICAgQVNTRVJUKHN0YXJ0T2Zmc2V0IDw9IHJlc3VsdHNb
aV0ubG9jYXRpb24pOwotICAgICAgICBpZiAoIWZvcndhcmRJdGVyYXRvcihzdGFydCwgcmVzdWx0
c1tpXS5sb2NhdGlvbiAtIHN0YXJ0T2Zmc2V0KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBQb3NpdGlvbkl0ZXJhdG9yIGVuZCA9IHN0YXJ0OwotICAgICAgICBpZiAoIWZvcndhcmRJdGVy
YXRvcihlbmQsIHJlc3VsdHNbaV0ubGVuZ3RoKSkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIC8vIFVzZXJzIG9yIEphdmFTY3JpcHQgYXBwbGljYXRpb25zIG1heSBjaGFuZ2UgdGV4dCB3
aGlsZSBhIHNwZWxsLWNoZWNrZXIgY2hlY2tzIGl0cwotICAgICAgICAvLyBzcGVsbGluZ3MgaW4g
dGhlIGJhY2tncm91bmQuIFRvIGF2b2lkIGFkZGluZyBtYXJrZXJzIHRvIHRoZSB3b3JkcyBtb2Rp
ZmllZCBieSB1c2VycyBvcgotICAgICAgICAvLyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucywgcmV0
cmlldmUgdGhlIHdvcmRzIGluIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGFuZCBjb21wYXJlIHRoZW0g
d2l0aAotICAgICAgICAvLyB0aGUgb3JpZ2luYWwgb25lcy4KLSAgICAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5n
ZSgpLT5vd25lckRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOwotICAgICAgICAvLyBGSVhNRTogVXNl
IHRleHRDb250ZW50KCkgY29tcGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KLSAgICAgICAgU3Ry
aW5nIGRlc3RpbmF0aW9uID0gcmFuZ2UtPnRleHQoKTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZSA9
IG1fcHJvY2Vzc2luZ1JlcXVlc3QtPnRleHQoKS5zdWJzdHJpbmcocmVzdWx0c1tpXS5sb2NhdGlv
biwgcmVzdWx0c1tpXS5sZW5ndGgpOwotICAgICAgICBpZiAoZGVzdGluYXRpb24gPT0gc291cmNl
KQotICAgICAgICAgICAgbV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLT5vd25l
ckRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJhbmdlLmdldCgpLCB0b01hcmtlclR5
cGUocmVzdWx0c1tpXS50eXBlKSk7Ci0KLSAgICAgICAgc3RhcnRPZmZzZXQgPSByZXN1bHRzW2ld
LmxvY2F0aW9uOwotICAgIH0KKyAgICBtX2ZyYW1lLT5lZGl0b3IoKS0+bWFya0FuZFJlcGxhY2VG
b3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7CiAKICAgICBpZiAobV9sYXN0UHJvY2Vz
c2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKICAgICAgICAgbV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2Ug
PSBzZXF1ZW5jZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>