<?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>28057</bug_id>
          
          <creation_ts>2009-08-06 15:35:38 -0700</creation_ts>
          <short_desc>deprecatedCopyInheritableProperties must be replaced by two different functions</short_desc>
          <delta_ts>2009-09-08 09:08:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>20348</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>eric</cc>
    
    <cc>justin.garcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>137676</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-06 15:35:38 -0700</bug_when>
    <thetext>As a follow up to https://bugs.webkit.org/show_bug.cgi?id=27325, deprecatedCopyInheritableProperties must be replaced by two separate functions:

1. Preparing style to apply - Delete CSS properties that are already present at the specified position from a mutable style.
2. Typing styles - Retrieve mutable style merged with the typing style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137691</commentid>
    <comment_count>1</comment_count>
      <attachid>34235</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-06 17:07:56 -0700</bug_when>
    <thetext>Created attachment 34235
adds new functions to ApplyStyleCommand.* and removes deprecatedCopyInheritableProperties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137692</commentid>
    <comment_count>2</comment_count>
      <attachid>34235</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-06 17:12:22 -0700</bug_when>
    <thetext>Comment on attachment 34235
adds new functions to ApplyStyleCommand.* and removes deprecatedCopyInheritableProperties

I don&apos;t believe you that this doens&apos;t change behavior.

A bunch of the editingStyleAtPosition calls now use IncludeTypingStyle which didn&apos;t before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137697</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-06 17:47:50 -0700</bug_when>
    <thetext>This patch follows the rules below:

1. styleAtPosition merges the computed style at the position and the typing style. So every instance of styleAtPosition MUST be replaced by editingStyleAtPosition(selection.start(), IncludeTypingStyle);

2. computedStyle(&lt;node&gt;)-&gt;deprecatedCopyInheritableProperties()-&gt;diff(&lt;style&gt;) or any two-line codes that does a similar thing MUST be replaced by prepareEditingStyleToApplyAt(&lt;style&gt;, Position(&lt;node&gt;, 0)).  Note that prepareEditingStyleToApplyAt uses IgnoreTypingStyle implicitly.

3. All other instances of computedStyle(&lt;node&gt;)-&gt;deprecatedCopyInheritableProperties must be replaced by editingStyleAtPosition(positionBeforeTabSpan(Position(&lt;node&gt;,0));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138166</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-08-07 14:46:22 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/46914.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145372</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 08:59:17 -0700</bug_when>
    <thetext>This is believed to have caused http://code.google.com/p/chromium/issues/detail?id=21203.  I&apos;m not sure if that has a WebKit bug yet, it certainly needs one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145379</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2009-09-08 09:08:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; This is believed to have caused
&gt; http://code.google.com/p/chromium/issues/detail?id=21203.  I&apos;m not sure if that
&gt; has a WebKit bug yet, it certainly needs one.

https://bugs.webkit.org/show_bug.cgi?id=28710 is the corresponding WebKit bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34235</attachid>
            <date>2009-08-06 17:07:56 -0700</date>
            <delta_ts>2009-08-07 11:40:54 -0700</delta_ts>
            <desc>adds new functions to ApplyStyleCommand.* and removes deprecatedCopyInheritableProperties</desc>
            <filename>fix28057</filename>
            <type>text/plain</type>
            <size>26773</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0Njg3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMDktMDgtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGVw
cmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMgbXVzdCBiZSByZXBsYWNlZCBieSB0d28g
ZGlmZmVyZW50IGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjgwNTcKKworICAgICAgICBUaGlzIHBhdGNoIGRlbGV0ZXMgZGVwcmVjYXRl
ZEluaGVyaXRhYmxlUHJvcGVydGllcyBhbmQgbW9kaWZpZXMgY2FsbCBjYWxsZWVzIHRvIGNhbGwg
ZWl0aGVyIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24KKyAgICAgICAgb3IgcHJlcGFyZUVkaXRpbmdT
dHlsZVRvQXBwbHlBdC4gVGhlIGNvbmNlcHQgb2YgZWRpdGluZyBzdHlsZSBpcyBpbnRyb2R1Y2Vk
IGluIHRoaXMgcGF0Y2gsCisgICAgICAgIHdoaWNoIGNvbnNpc3RzIG9mIGFsbCBDU1MgcHJvcGVy
dGllcyBuZWVkIHRvIGJlIHByZXNlcnZlZCB1bmRlciBlZGl0aW5nIG9wZXJhdGlvbnMuCisKKyAg
ICAgICAgTm8gdGVzdCBpcyBhZGRlZCBzaW5jZSB0aGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSBh
bnkgYmVoYXZpb3IuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcDogUmVtb3ZlZCBkZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcworICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDogUmVtb3ZlZCBkZXByZWNhdGVk
Q29weUluaGVyaXRhYmxlUHJvcGVydGllcworICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmVkaXRp
bmdTdHlsZUF0UG9zaXRpb24pOiBPYnRhaW5zIHRoZSBlZGl0aW5nLXNwZWNpZmljIGNvbXB1dGVk
IHN0eWxlIGF0IHRoZSBwb3NpdGlvbgorICAgICAgICAoV2ViQ29yZTo6cHJlcGFyZUVkaXRpbmdT
dHlsZVRvQXBwbHlBdCk6IFJlbW92ZXMgcmVkdW5kYW50IGVkaXRpbmcgc3R5bGVzIGF0IHRoZSBz
cGVjaWZpZWQgcG9zaXRpb24KKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVN0eWxlc0FkZGVkQnlO
b2RlKTogUmVtb3ZlcyB0aGUgc3R5bGUgZGVyaXZlZCBmcm9tIHRoZSBzcGVjaWZpZWQgbm9kZQor
ICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Oik6CisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6bW92ZVBhcmFncmFwaHMpOiBVc2VzIGVk
aXRpbmdTdHlsZUF0UG9zaXRpb24KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21t
YW5kOjpicmVha091dE9mRW1wdHlMaXN0SXRlbSk6IFVzZXMgZWRpdGluZ1N0eWxlQXRQb3NpdGlv
bgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZW1vdmVFbmNsb3NpbmdBbmNob3JTdHlsZSk6IFVzZXMgcmVtb3ZlU3R5bGVP
Zk5vZGUKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OnNhdmVUeXBp
bmdTdHlsZVN0YXRlKTogVXNlcyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uCisgICAgICAgIChXZWJD
b3JlOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjYWxjdWxhdGVUeXBpbmdTdHlsZUFmdGVyRGVs
ZXRlKTogVXNlcyBwcmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0CisgICAgICAgICogZWRpdGlu
Zy9FZGl0Q29tbWFuZC5jcHA6CisgICAgICAgICogZWRpdGluZy9FZGl0Q29tbWFuZC5oOgorICAg
ICAgICAqIGVkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpjYWxjdWxhdGVT
dHlsZUJlZm9yZUluc2VydGlvbik6IFVzZXMgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbgorICAgICAg
ICAoV2ViQ29yZTo6SW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6YXBwbHlTdHlsZUFm
dGVySW5zZXJ0aW9uKTogVXNlcyBwcmVwYXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0CisgICAgICAg
ICogZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBwbHkpOiBVc2VzIGVkaXRpbmdTdHlsZUF0UG9zaXRpb24K
KyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnRpb24pOiBVc2VzIGVkaXRpbmdT
dHlsZUF0UG9zaXRpb24KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpoYW5kbGVTdHlsZVNwYW5zKTogVXNlcyBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uIGFuZCBwcmVw
YXJlRWRpdGluZ1N0eWxlVG9BcHBseUF0CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6ZG9BcHBseSk6IFVzZXMgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdAor
ICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZUVu
Y2xvc2luZ01haWxCbG9ja3F1b3RlU3R5bGUpOiBVc2VzIHJlbW92ZVN0eWxlT2ZOb2RlCisgICAg
ICAgIChXZWJDb3JlOjpyZW1vdmVEZWZhdWx0U3R5bGVzKTogVXNlcyBwcmVwYXJlRWRpdGluZ1N0
eWxlVG9BcHBseUF0CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXJrdXApOiBVc2VzIGVkaXRp
bmdTdHlsZUF0UG9zaXRpb24KKwogMjAwOS0wOC0wNiAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAg
PG1pY2Rlc2ltQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
SW5kZXg6IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2
aXNpb24gNDY4NjApCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM4LDM3ICsxNDM4LDYgQEAgU3RyaW5nIENTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbQogICAgIHJldHVybiBnZXRQcm9wZXJ0eU5hbWUoc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKSk7CiB9CiAKLS8v
IFRoaXMgaXMgdGhlIGxpc3Qgb2YgcHJvcGVydGllcyB3ZSB3YW50IHRvIGNvcHkgaW4gdGhlIGNv
cHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKSBmdW5jdGlvbi4KLS8vIEl0IGlzIHRoZSBpbnRlcnNl
Y3Rpb24gb2YgdGhlIGxpc3Qgb2YgaW5oZXJpdGVkIENTUyBwcm9wZXJ0aWVzIGFuZCB0aGUKLS8v
IHByb3BlcnRpZXMgZm9yIHdoaWNoIHdlIGhhdmUgYSBjb21wdXRlZCBpbXBsZW1lbnRhdGlvbiBp
biB0aGlzIGZpbGUuCi1zdGF0aWMgY29uc3QgaW50IGluaGVyaXRhYmxlUHJvcGVydGllc1tdID0g
ewotICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UsCi0gICAgQ1NTUHJvcGVydHlDb2xvciwK
LSAgICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCi0gICAgQ1NTUHJvcGVydHlGb250U2l6ZSwKLSAg
ICBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwKLSAgICBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LAotICAg
IENTU1Byb3BlcnR5Rm9udFdlaWdodCwKLSAgICBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsCi0g
ICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LAotICAgIENTU1Byb3BlcnR5T3JwaGFucywKLSAgICBD
U1NQcm9wZXJ0eVRleHRBbGlnbiwKLSAgICBDU1NQcm9wZXJ0eVRleHRJbmRlbnQsCi0gICAgQ1NT
UHJvcGVydHlUZXh0VHJhbnNmb3JtLAotICAgIENTU1Byb3BlcnR5V2hpdGVTcGFjZSwKLSAgICBD
U1NQcm9wZXJ0eVdpZG93cywKLSAgICBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLAotICAgIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsCi0gICAgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcsCi0gICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29sb3IsCi0gICAg
Q1NTUHJvcGVydHlXZWJraXRUZXh0U2l6ZUFkanVzdCwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2VDb2xvciwKLSAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwKLX07
Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1Jbmhlcml0YWJsZVByb3BlcnRpZXMgPSBzaXpl
b2YoaW5oZXJpdGFibGVQcm9wZXJ0aWVzKSAvIHNpemVvZihpbmhlcml0YWJsZVByb3BlcnRpZXNb
MF0pOwotCiBib29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUHJvcGVydHlNYXRj
aGVzKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0eSkgY29uc3QKIHsKICAgICBpZiAocHJvcGVy
dHktPmlkKCkgPT0gQ1NTUHJvcGVydHlGb250U2l6ZSAmJiBwcm9wZXJ0eS0+dmFsdWUoKS0+aXNQ
cmltaXRpdmVWYWx1ZSgpICYmIG1fbm9kZSkgewpAQCAtMTQ4NSwyOSArMTQ1NCw2IEBAIGJvb2wg
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NQcm8KICAgICByZXR1cm4gQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Y3NzUHJvcGVydHlNYXRjaGVzKHByb3BlcnR5KTsKIH0KIAotLy8gRklYTUU6
IGRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzIGlzIHVzZWQgZm9yIHR3byBwdXJw
b3NlczoKLS8vIDEuICBDYWxjdWxhdGluZyB0aGUgdHlwaW5nIHN0eWxlLgotLy8gMi4gIE1vdmlu
ZyBIVE1MIHN1YnRyZWVzIGFuZCBzZWVraW5nIHRvIHJlbW92ZSByZWR1bmRhbnQgc3R5bGVzLgot
Ly8gVGhlc2UgdGFza3Mgc2hvdWxkIGJlIGJyb2tlbiBvdXQgaW50byB0d28gc2VwYXJhdGUgZnVu
Y3Rpb25zLiAgTmV3IGNvZGUgc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbi4KLVBhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKSBjb25zdAotewotICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBjb3B5UHJvcGVydGllc0lu
U2V0KGluaGVyaXRhYmxlUHJvcGVydGllcywgbnVtSW5oZXJpdGFibGVQcm9wZXJ0aWVzKTsKLSAg
ICBpZiAoc3R5bGUgJiYgbV9ub2RlICYmIG1fbm9kZS0+Y29tcHV0ZWRTdHlsZSgpKSB7Ci0gICAg
ICAgIC8vIElmIGEgbm9kZSdzIHRleHQgZmlsbCBjb2xvciBpcyBpbnZhbGlkLCB0aGVuIGl0cyBj
aGlsZHJlbiB1c2UgCi0gICAgICAgIC8vIHRoZWlyIGZvbnQtY29sb3IgYXMgdGhlaXIgdGV4dCBm
aWxsIGNvbG9yICh0aGV5IGRvbid0Ci0gICAgICAgIC8vIGluaGVyaXQgaXQpLiAgTGlrZXdpc2Ug
Zm9yIHN0cm9rZSBjb2xvci4KLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAg
IGlmICghbV9ub2RlLT5jb21wdXRlZFN0eWxlKCktPnRleHRGaWxsQ29sb3IoKS5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RmlsbENvbG9yLCBlYyk7Ci0gICAgICAgIGlmICghbV9ub2RlLT5jb21wdXRlZFN0eWxlKCktPnRl
eHRTdHJva2VDb2xvcigpLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHN0eWxlLT5yZW1vdmVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgZWMpOwotICAgICAgICBBU1NF
UlQoZWMgPT0gMCk7Ci0gICAgICAgIGlmIChpbnQga2V5d29yZFNpemUgPSBtX25vZGUtPmNvbXB1
dGVkU3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkua2V5d29yZFNpemUoKSkKLSAgICAgICAgICAg
IHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRTaXplLCBjc3NJZGVudGlmaWVyRm9y
Rm9udFNpemVLZXl3b3JkKGtleXdvcmRTaXplKSk7Ci0gICAgfQotICAgIHJldHVybiBzdHlsZS5y
ZWxlYXNlKCk7Ci19Ci0KIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNv
cHlQcm9wZXJ0aWVzSW5TZXQoY29tcHV0ZWRQcm9wZXJ0aWVzLCBudW1Db21wdXRlZFByb3BlcnRp
ZXMpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgJKHJl
dmlzaW9uIDQ2ODYwKQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGdldFNWR1Byb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQsIEVVcGRh
dGVMYXlvdXQpIGNvbnN0OwogI2VuZGlmCiAKLSAgICBQYXNzUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBkZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpIGNvbnN0
OwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBjc3NQcm9wZXJ0eU1hdGNoZXMoY29uc3Qg
Q1NTUHJvcGVydHkqKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuY3BwCShyZXZpc2lvbiA0Njg2MCkKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCw2ICszMzQsOTQgQEAgUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcgogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KKwor
Ly8gRWRpdGluZyBzdHlsZSBwcm9wZXJ0aWVzIG11c3QgYmUgcHJlc2VydmVkIGR1cmluZyBlZGl0
aW5nIG9wZXJhdGlvbi4KKy8vIGUuZy4gd2hlbiBhIHVzZXIgaW5zZXJ0cyBhIG5ldyBwYXJhZ3Jh
cGgsIGFsbCBwcm9wZXJ0aWVzIGxpc3RlZCBoZXJlIG11c3QgYmUgY29waWVkIHRvIHRoZSBuZXcg
cGFyYWdyYXBoLgorLy8gRklYTUU6IFRoZSBjdXJyZW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXMg
aXMgaWRlbnRpY2FsIHRvIGluaGVyaXRhYmxlUHJvcGVydGllcyBidXQgd2UgbWF5IG5vdCBuZWVk
IHRvIHByZXNlcnZlIGFsbCBpbmhlcml0YWJsZSBwcm9wZXJ0aWVzCitzdGF0aWMgY29uc3QgaW50
IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKKyAgICBDU1NQcm9wZXJ0eUJvcmRlckNvbGxh
cHNlLAorICAgIENTU1Byb3BlcnR5Q29sb3IsCisgICAgQ1NTUHJvcGVydHlGb250RmFtaWx5LAor
ICAgIENTU1Byb3BlcnR5Rm9udFNpemUsCisgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCisgICAg
Q1NTUHJvcGVydHlGb250VmFyaWFudCwKKyAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCisgICAg
Q1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLAorICAgIENTU1Byb3BlcnR5TGluZUhlaWdodCwKKyAg
ICBDU1NQcm9wZXJ0eU9ycGhhbnMsCisgICAgQ1NTUHJvcGVydHlUZXh0QWxpZ24sCisgICAgQ1NT
UHJvcGVydHlUZXh0SW5kZW50LAorICAgIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybSwKKyAgICBD
U1NQcm9wZXJ0eVdoaXRlU3BhY2UsCisgICAgQ1NTUHJvcGVydHlXaWRvd3MsCisgICAgQ1NTUHJv
cGVydHlXb3JkU3BhY2luZywKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxT
cGFjaW5nLAorICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLAorICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsCisgICAgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RmlsbENvbG9yLAorICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFNpemVBZGp1
c3QsCisgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsCisgICAgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsCit9Oworc2l6ZV90IG51bUVkaXRpbmdTdHlsZVByb3Bl
cnRpZXMgPSBzaXplb2YoZWRpdGluZ1N0eWxlUHJvcGVydGllcykvc2l6ZW9mKGVkaXRpbmdTdHls
ZVByb3BlcnRpZXNbMF0pOworCitQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
PiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uIHBvcywgU2hvdWxkSW5jbHVkZVR5cGlu
Z1N0eWxlIHNob3VsZEluY2x1ZGVUeXBpbmdTdHlsZSkKK3sKKyAgICBSZWZQdHI8Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlQXRQb3NpdGlvbiA9IHBvcy5jb21wdXRl
ZFN0eWxlKCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9
IGNvbXB1dGVkU3R5bGVBdFBvc2l0aW9uLT5jb3B5UHJvcGVydGllc0luU2V0KGVkaXRpbmdTdHls
ZVByb3BlcnRpZXMsIG51bUVkaXRpbmdTdHlsZVByb3BlcnRpZXMpOworCisgICAgaWYgKHN0eWxl
ICYmIHBvcy5ub2RlKCkgJiYgcG9zLm5vZGUoKS0+Y29tcHV0ZWRTdHlsZSgpKSB7CisgICAgICAg
IFJlbmRlclN0eWxlKiByZW5kZXJTdHlsZSA9IHBvcy5ub2RlKCktPmNvbXB1dGVkU3R5bGUoKTsK
KyAgICAgICAgLy8gSWYgYSBub2RlJ3MgdGV4dCBmaWxsIGNvbG9yIGlzIGludmFsaWQsIHRoZW4g
aXRzIGNoaWxkcmVuIHVzZSAKKyAgICAgICAgLy8gdGhlaXIgZm9udC1jb2xvciBhcyB0aGVpciB0
ZXh0IGZpbGwgY29sb3IgKHRoZXkgZG9uJ3QKKyAgICAgICAgLy8gaW5oZXJpdCBpdCkuICBMaWtl
d2lzZSBmb3Igc3Ryb2tlIGNvbG9yLgorICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAgICAgaWYgKCFyZW5kZXJTdHlsZS0+dGV4dEZpbGxDb2xvcigpLmlzVmFsaWQoKSkKKyAgICAg
ICAgICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRGaWxsQ29s
b3IsIGVjKTsKKyAgICAgICAgaWYgKCFyZW5kZXJTdHlsZS0+dGV4dFN0cm9rZUNvbG9yKCkuaXNW
YWxpZCgpKQorICAgICAgICAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFN0cm9rZUNvbG9yLCBlYyk7CisgICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAg
ICAgaWYgKHJlbmRlclN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6ZSgpKQorICAg
ICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIGNvbXB1dGVk
U3R5bGVBdFBvc2l0aW9uLT5nZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQoKS0+
Y3NzVGV4dCgpKTsKKyAgICB9CisKKyAgICBpZiAoc2hvdWxkSW5jbHVkZVR5cGluZ1N0eWxlID09
IEluY2x1ZGVUeXBpbmdTdHlsZSkgeworICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biogdHlwaW5nU3R5bGUgPSBwb3Mubm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpLT50eXBpbmdT
dHlsZSgpOworICAgICAgICBpZiAodHlwaW5nU3R5bGUpCisgICAgICAgICAgICBzdHlsZS0+bWVy
Z2UodHlwaW5nU3R5bGUpOworICAgIH0KKworICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7Cit9
CisKK3ZvaWQgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdChDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiogZWRpdGluZ1N0eWxlLCBQb3NpdGlvbiBwb3MpCit7CisgICAgLy8gUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKSByZXF1aWVycyB0aGF0IHRoaXMgZnVu
Y3Rpb24gb25seSByZW1vdmVzIHRoZSBlZGl0aW5nIHN0eWxlLgorICAgIC8vIElmIHRoaXMgZnVu
Y3Rpb24gd2FzIG1vZGlmaWVkIGluIHRoZSBmdXR1cmV0byBkZWxldGUgYWxsIHJlZHVuZGFudCBw
cm9wZXJ0aWVzLCB0aGVuIGFkZCBhIGJvb2xlYW4gdmFsdWUgdG8gaW5kaWNhdGUKKyAgICAvLyB3
aGljaCBvbmUgb2YgZWRpdGluZ1N0eWxlQXRQb3NpdGlvbiBvciBjb21wdXRlZFN0eWxlIGlzIGNh
bGxlZC4KKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gZWRp
dGluZ1N0eWxlQXRQb3NpdGlvbihwb3MpOworICAgIHN0eWxlLT5kaWZmKGVkaXRpbmdTdHlsZSk7
CisKKyAgICAvLyBpZiBhbHBoYSB2YWx1ZSBpcyB6ZXJvLCB3ZSBkb24ndCBhZGQgdGhlIGJhY2tn
cm91bmQgY29sb3IuCisgICAgUmVmUHRyPENTU1ZhbHVlPiBiYWNrZ3JvdW5kQ29sb3IgPSBlZGl0
aW5nU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
OworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IgJiYgYmFja2dyb3VuZENvbG9yLT5pc1ByaW1pdGl2
ZVZhbHVlKCkpIHsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihiYWNrZ3JvdW5kQ29sb3IuZ2V0KCkpOwor
ICAgICAgICBDb2xvciBjb2xvciA9IENvbG9yKHByaW1pdGl2ZVZhbHVlLT5nZXRSR0JBMzJWYWx1
ZSgpKTsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgaWYgKGNvbG9yLmFscGhh
KCkgPT0gMCkKKyAgICAgICAgICAgIGVkaXRpbmdTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IsIGVjKTsKKyAgICB9Cit9CisKK3ZvaWQgcmVtb3ZlU3R5bGVz
QWRkZWRCeU5vZGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGVkaXRpbmdTdHlsZSwgTm9k
ZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKG5vZGUtPnBhcmVudE5v
ZGUoKSk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBwYXJlbnRTdHls
ZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24obm9kZS0+cGFyZW50Tm9kZSgpLCAw
KSk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGVkaXRp
bmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24obm9kZSwgMCkpOworICAgIHBhcmVudFN0eWxlLT5k
aWZmKHN0eWxlLmdldCgpKTsKKyAgICBzdHlsZS0+ZGlmZihlZGl0aW5nU3R5bGUpOworfQogICAg
IAogQXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvY3VtZW50KiBkb2N1bWVu
dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbiwg
RVByb3BlcnR5TGV2ZWwgcHJvcGVydHlMZXZlbCkKICAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5k
KGRvY3VtZW50KQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9u
IDQ2ODYwKQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw2ICsxMTYsMTUgQEAgYm9vbCBpc1N0eWxlU3Bhbihjb25zdCBOb2RlKik7
CiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdHlsZVNwYW5FbGVtZW50KERvY3VtZW50
Kik7CiBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdldFByb3BlcnRpZXNOb3RJ
bkNvbXB1dGVkU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbiogY29tcHV0ZWRTdHlsZSk7CiAKK2VudW0gU2hvdWxkSW5jbHVkZVR5cGlu
Z1N0eWxlIHsKKyAgICBJbmNsdWRlVHlwaW5nU3R5bGUsCisgICAgSWdub3JlVHlwaW5nU3R5bGUK
K307CisKK1Bhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGVkaXRpbmdTdHls
ZUF0UG9zaXRpb24oUG9zaXRpb24sIFNob3VsZEluY2x1ZGVUeXBpbmdTdHlsZSA9IElnbm9yZVR5
cGluZ1N0eWxlKTsKK3ZvaWQgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdChDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiosIFBvc2l0aW9uKTsKK3ZvaWQgcmVtb3ZlU3R5bGVzQWRkZWRCeU5v
ZGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBOb2RlKik7CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAJKHJldmlzaW9uIDQ2ODYwKQorKysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAyLDcgKzgwMiw3IEBAIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICAvLyB0b28sIDxkaXY+PGI+PGJy
PjwvYj48L2Rpdj4gZm9yIGV4YW1wbGUuICBTYXZlIGl0IHNvIHRoYXQgd2UgY2FuIHByZXNlcnZl
IGl0IGxhdGVyLgogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVJ
bkVtcHR5UGFyYWdyYXBoOwogICAgIGlmIChzdGFydE9mUGFyYWdyYXBoVG9Nb3ZlID09IGVuZE9m
UGFyYWdyYXBoVG9Nb3ZlICYmIHByZXNlcnZlU3R5bGUpIHsKLSAgICAgICAgc3R5bGVJbkVtcHR5
UGFyYWdyYXBoID0gc3R5bGVBdFBvc2l0aW9uKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUuZGVlcEVx
dWl2YWxlbnQoKSk7CisgICAgICAgIHN0eWxlSW5FbXB0eVBhcmFncmFwaCA9IGVkaXRpbmdTdHls
ZUF0UG9zaXRpb24oc3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLCBJbmNs
dWRlVHlwaW5nU3R5bGUpOwogICAgICAgICAvLyBUaGUgbW92ZWQgcGFyYWdyYXBoIHNob3VsZCBh
c3N1bWUgdGhlIGJsb2NrIHN0eWxlIG9mIHRoZSBkZXN0aW5hdGlvbi4KICAgICAgICAgc3R5bGVJ
bkVtcHR5UGFyYWdyYXBoLT5yZW1vdmVCbG9ja1Byb3BlcnRpZXMoKTsKICAgICB9CkBAIC04OTEs
NyArODkxLDcgQEAgYm9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcAogICAg
IGlmICghZW1wdHlMaXN0SXRlbSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gc3R5bGVBdFBvc2l0
aW9uKGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKGVuZGluZ1NlbGVj
dGlvbigpLnN0YXJ0KCksIEluY2x1ZGVUeXBpbmdTdHlsZSk7CiAKICAgICBOb2RlKiBsaXN0Tm9k
ZSA9IGVtcHR5TGlzdEl0ZW0tPnBhcmVudE5vZGUoKTsKICAgICAKSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDQ2ODYwKQorKysgV2Vi
Q29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgInZpc2libGVfdW5pdHMuaCIKKyNpbmNsdWRlICJBcHBseVN0eWxlQ29t
bWFuZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI1OSwxMSArMjYwLDggQEAgc3Rh
dGljIHZvaWQgcmVtb3ZlRW5jbG9zaW5nQW5jaG9yU3R5bGUoQwogICAgIE5vZGUqIGVuY2xvc2lu
Z0FuY2hvciA9IGVuY2xvc2luZ0FuY2hvckVsZW1lbnQocG9zaXRpb24pOwogICAgIGlmICghZW5j
bG9zaW5nQW5jaG9yIHx8ICFlbmNsb3NpbmdBbmNob3ItPnBhcmVudE5vZGUoKSkKICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBwYXJlbnRTdHlsZSA9IFBvc2l0aW9uKGVuY2xvc2luZ0FuY2hvci0+cGFyZW50Tm9kZSgp
LCAwKS5jb21wdXRlZFN0eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVz
KCk7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBhbmNob3JTdHlsZSA9
IFBvc2l0aW9uKGVuY2xvc2luZ0FuY2hvciwgMCkuY29tcHV0ZWRTdHlsZSgpLT5kZXByZWNhdGVk
Q29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwotICAgIHBhcmVudFN0eWxlLT5kaWZmKGFuY2hv
clN0eWxlLmdldCgpKTsKLSAgICBhbmNob3JTdHlsZS0+ZGlmZihzdHlsZSk7CisgICAgCisgICAg
cmVtb3ZlU3R5bGVzQWRkZWRCeU5vZGUoc3R5bGUsIGVuY2xvc2luZ0FuY2hvcik7CiB9CiAKIHZv
aWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6c2F2ZVR5cGluZ1N0eWxlU3RhdGUoKQpAQCAtMjc3
LDE5ICsyNzUsMTcgQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpzYXZlVHlwaW5nUwog
ICAgIC8vIGVhcmx5IHJldHVybiBpbiBjYWxjdWxhdGVUeXBpbmdTdHlsZUFmdGVyRGVsZXRlKS4K
ICAgICBpZiAobV91cHN0cmVhbVN0YXJ0Lm5vZGUoKSA9PSBtX2Rvd25zdHJlYW1FbmQubm9kZSgp
ICYmIG1fdXBzdHJlYW1TdGFydC5ub2RlKCktPmlzVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogICAgIC8vIEZpZ3VyZSBvdXQgdGhlIHR5cGluZyBzdHlsZSBpbiBlZmZl
Y3QgYmVmb3JlIHRoZSBkZWxldGUgaXMgZG9uZS4KLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlID0gcG9zaXRpb25CZWZvcmVUYWJTcGFuKG1fc2Vs
ZWN0aW9uVG9EZWxldGUuc3RhcnQoKSkuY29tcHV0ZWRTdHlsZSgpOwotICAgIG1fdHlwaW5nU3R5
bGUgPSBjb21wdXRlZFN0eWxlLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygp
OwotICAgIAorICAgIG1fdHlwaW5nU3R5bGUgPSBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKHBvc2l0
aW9uQmVmb3JlVGFiU3BhbihtX3NlbGVjdGlvblRvRGVsZXRlLnN0YXJ0KCkpKTsKKwogICAgIHJl
bW92ZUVuY2xvc2luZ0FuY2hvclN0eWxlKG1fdHlwaW5nU3R5bGUuZ2V0KCksIG1fc2VsZWN0aW9u
VG9EZWxldGUuc3RhcnQoKSk7Ci0gICAgCisKICAgICAvLyBJZiB3ZSdyZSBkZWxldGluZyBpbnRv
IGEgTWFpbCBibG9ja3F1b3RlLCBzYXZlIHRoZSBzdHlsZSBhdCBlbmQoKSBpbnN0ZWFkIG9mIHN0
YXJ0KCkKICAgICAvLyBXZSdsbCB1c2UgdGhpcyBsYXRlciBpbiBjb21wdXRlVHlwaW5nU3R5bGVB
ZnRlckRlbGV0ZSBpZiB3ZSBlbmQgdXAgb3V0c2lkZSBvZiBhIE1haWwgYmxvY2txdW90ZQotICAg
IGlmIChuZWFyZXN0TWFpbEJsb2NrcXVvdGUobV9zZWxlY3Rpb25Ub0RlbGV0ZS5zdGFydCgpLm5v
ZGUoKSkpIHsKLSAgICAgICAgY29tcHV0ZWRTdHlsZSA9IG1fc2VsZWN0aW9uVG9EZWxldGUuZW5k
KCkuY29tcHV0ZWRTdHlsZSgpOwotICAgICAgICBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUg
PSBjb21wdXRlZFN0eWxlLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwot
ICAgIH0gZWxzZQorICAgIGlmIChuZWFyZXN0TWFpbEJsb2NrcXVvdGUobV9zZWxlY3Rpb25Ub0Rl
bGV0ZS5zdGFydCgpLm5vZGUoKSkpCisgICAgICAgIG1fZGVsZXRlSW50b0Jsb2NrcXVvdGVTdHls
ZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24obV9zZWxlY3Rpb25Ub0RlbGV0ZS5lbmQoKSk7Cisg
ICAgZWxzZQogICAgICAgICBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUgPSAwOwogfQogCkBA
IC02NjgsOSArNjY0LDggQEAgdm9pZCBEZWxldGVTZWxlY3Rpb25Db21tYW5kOjpjYWxjdWxhdGVU
eQogICAgIGlmIChtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGUgJiYgIW5lYXJlc3RNYWlsQmxv
Y2txdW90ZShtX2VuZGluZ1Bvc2l0aW9uLm5vZGUoKSkpCiAgICAgICAgIG1fdHlwaW5nU3R5bGUg
PSBtX2RlbGV0ZUludG9CbG9ja3F1b3RlU3R5bGU7CiAgICAgbV9kZWxldGVJbnRvQmxvY2txdW90
ZVN0eWxlID0gMDsKLSAgICAKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
PiBlbmRpbmdTdHlsZSA9IGNvbXB1dGVkU3R5bGUobV9lbmRpbmdQb3NpdGlvbi5ub2RlKCkpOwot
ICAgIGVuZGluZ1N0eWxlLT5kaWZmKG1fdHlwaW5nU3R5bGUuZ2V0KCkpOworCisgICAgcHJlcGFy
ZUVkaXRpbmdTdHlsZVRvQXBwbHlBdChtX3R5cGluZ1N0eWxlLmdldCgpLCBtX2VuZGluZ1Bvc2l0
aW9uKTsKICAgICBpZiAoIW1fdHlwaW5nU3R5bGUtPmxlbmd0aCgpKQogICAgICAgICBtX3R5cGlu
Z1N0eWxlID0gMDsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZUVuZChtX2VuZGluZ1Bvc2l0
aW9uKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcAkocmV2aXNpb24gNDY4NjApCisrKyBX
ZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsMTgg
KzE5NSw2IEBAIGJvb2wgRWRpdENvbW1hbmQ6OmlzVHlwaW5nQ29tbWFuZCgpIGNvbnMKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+
IEVkaXRDb21tYW5kOjpzdHlsZUF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24gJnBvcykKLXsKLSAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gcG9zaXRpb25CZWZv
cmVUYWJTcGFuKHBvcykuY29tcHV0ZWRTdHlsZSgpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxl
UHJvcGVydGllcygpOwotIAotICAgIC8vIEZJWE1FOiBJdCBzZWVtcyBtaXNsZWFkaW5nIHRvIGFs
c28gaW5jbHVkZSB0aGUgdHlwaW5nIHN0eWxlIHdoZW4gcmV0dXJuaW5nIHRoZSBzdHlsZSBhdCBz
b21lIGFyYml0cmFyeQotICAgIC8vIHBvc2l0aW9uIGluIHRoZSBkb2N1bWVudC4KLSAgICBDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogdHlwaW5nU3R5bGUgPSBkb2N1bWVudCgpLT5mcmFtZSgp
LT50eXBpbmdTdHlsZSgpOwotICAgIGlmICh0eXBpbmdTdHlsZSkKLSAgICAgICAgc3R5bGUtPm1l
cmdlKHR5cGluZ1N0eWxlKTsKLQotICAgIHJldHVybiBzdHlsZS5yZWxlYXNlKCk7Ci19CiAKIHZv
aWQgRWRpdENvbW1hbmQ6OnVwZGF0ZUxheW91dCgpIGNvbnN0CiB7CkluZGV4OiBXZWJDb3JlL2Vk
aXRpbmcvRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvRWRpdENv
bW1hbmQuaAkocmV2aXNpb24gNDY4NjApCisrKyBXZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
ZXRTdGFydGluZ1NlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBz
ZXRFbmRpbmdTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpOwogCi0gICAgUGFzc1Jl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVBdFBvc2l0aW9uKGNvbnN0IFBv
c2l0aW9uJik7CiAgICAgdm9pZCB1cGRhdGVMYXlvdXQoKSBjb25zdDsKIAogcHJpdmF0ZToKSW5k
ZXg6IFdlYkNvcmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDQ2ODYwKQorKysgV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFn
cmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBA
CiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAi
dmlzaWJsZV91bml0cy5oIgorI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNyArNjQsNyBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNl
cGFyYXRvckNvbW1hbmQ6OmNhCiAgICAgaWYgKCFpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVBv
cykgJiYgIWlzRW5kT2ZQYXJhZ3JhcGgodmlzaWJsZVBvcykpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBtX3N0eWxlID0gc3R5bGVBdFBvc2l0aW9uKHBvcyk7CisgICAgbV9zdHlsZSA9IGVk
aXRpbmdTdHlsZUF0UG9zaXRpb24ocG9zLCBJbmNsdWRlVHlwaW5nU3R5bGUpOwogfQogCiB2b2lk
IEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmFwcGx5U3R5bGVBZnRlckluc2VydGlv
bihOb2RlKiBvcmlnaW5hbEVuY2xvc2luZ0Jsb2NrKQpAQCAtNzksOCArODAsOSBAQCB2b2lkIElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmFwCiAgICAgICAgIAogICAgIGlmICghbV9z
dHlsZSkKICAgICAgICAgcmV0dXJuOworICAgIAorICAgIHByZXBhcmVFZGl0aW5nU3R5bGVUb0Fw
cGx5QXQobV9zdHlsZS5nZXQoKSwgZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKSk7CiAKLSAgICBj
b21wdXRlZFN0eWxlKGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkubm9kZSgpKS0+ZGlmZihtX3N0
eWxlLmdldCgpKTsKICAgICBpZiAobV9zdHlsZS0+bGVuZ3RoKCkgPiAwKQogICAgICAgICBhcHBs
eVN0eWxlKG1fc3R5bGUuZ2V0KCkpOwogfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZv
cm1hdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3Jt
YXRDb21tYW5kLmNwcAkocmV2aXNpb24gNDY4NjApCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Rm9ybWF0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgorI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTUsOCArNTYsOCBAQCB2b2lkIFJlbW92ZUZv
cm1hdENvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIEdldCB0aGUgZGVmYXVsdCBzdHlsZSBmb3Ig
dGhpcyBlZGl0YWJsZSByb290LCBpdCdzIHRoZSBzdHlsZSB0aGF0IHdlJ2xsIGdpdmUgdGhlCiAg
ICAgLy8gY29udGVudCB0aGF0IHdlJ3JlIG9wZXJhdGluZyBvbi4KICAgICBOb2RlKiByb290ID0g
ZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBjb21wdXRlZFN0eWxlKHJv
b3QpLT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwotICAgIAorICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0
eWxlQXRQb3NpdGlvbihQb3NpdGlvbihyb290LCAwKSk7CisKICAgICAvLyBEZWxldGUgdGhlIHNl
bGVjdGVkIGNvbnRlbnQuCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIGxlYXZl
IHRoaXMgdG8gaW5zZXJ0VGV4dCwgYnV0IGl0cyBkZWxldGUgb3BlcmF0aW9uCiAgICAgLy8gZG9l
c24ndCBwcmVzZXJ2ZSB0aGUgc3R5bGUgd2UncmUgYWJvdXQgdG8gc2V0LgpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA0Njg2MCkK
KysrIFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU0OSw4ICs1NDksOSBAQCBzdGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVm
b3JlSW5zZXJ0CiAgICAgCiAgICAgTm9kZSogc291cmNlRG9jdW1lbnRTdHlsZVNwYW4gPSB0b3BO
b2RlOwogICAgIFJlZlB0cjxOb2RlPiBjb3BpZWRSYW5nZVN0eWxlU3BhbiA9IHNvdXJjZURvY3Vt
ZW50U3R5bGVTcGFuLT5maXJzdENoaWxkKCk7Ci0gICAgCi0gICAgUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gcmFuZ2VDb21wbGlhbnRFcXVp
dmFsZW50KGluc2VydGlvblBvcykuY29tcHV0ZWRTdHlsZSgpLT5kZXByZWNhdGVkQ29weUluaGVy
aXRhYmxlUHJvcGVydGllcygpOworCisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihyYW5nZUNv
bXBsaWFudEVxdWl2YWxlbnQoaW5zZXJ0aW9uUG9zKSk7CisKICAgICBTdHJpbmcgc3R5bGVUZXh0
ID0gc3R5bGVBdEluc2VydGlvblBvcy0+Y3NzVGV4dCgpOwogICAgIAogICAgIGlmIChzdHlsZVRl
eHQgPT0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNvdXJjZURvY3VtZW50U3R5bGVTcGFuKS0+Z2V0
QXR0cmlidXRlKHN0eWxlQXR0cikpIHsKQEAgLTYwNiw4ICs2MDcsOCBAQCB2b2lkIFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsCiAgICAgLy8gc3R5bGVzIGZyb20gYmxvY2txdW90
ZU5vZGUgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgdGhvc2UgZnJvbSB0aGUgc291cmNlIGRvY3Vt
ZW50LCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5MzA5ODY+IGFuZCA8cmRhcjovL3Byb2JsZW0vNTA4
OTMyNz4uCiAgICAgTm9kZSogYmxvY2txdW90ZU5vZGUgPSBpc01haWxQYXN0ZUFzUXVvdGF0aW9u
Tm9kZShjb250ZXh0KSA/IGNvbnRleHQgOiBuZWFyZXN0TWFpbEJsb2NrcXVvdGUoY29udGV4dCk7
CiAgICAgaWYgKGJsb2NrcXVvdGVOb2RlKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gYmxvY2txdW90ZVN0eWxlID0gY29tcHV0ZWRTdHlsZShibG9ja3F1b3Rl
Tm9kZSktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gcGFyZW50U3R5bGUgPSBjb21wdXRlZFN0
eWxlKGJsb2NrcXVvdGVOb2RlLT5wYXJlbnROb2RlKCkpLT5kZXByZWNhdGVkQ29weUluaGVyaXRh
YmxlUHJvcGVydGllcygpOworICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IGJsb2NrcXVvdGVTdHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24oYmxv
Y2txdW90ZU5vZGUsIDApKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBwYXJlbnRTdHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24oYmxvY2tx
dW90ZU5vZGUtPnBhcmVudE5vZGUoKSwgMCkpOwogICAgICAgICBwYXJlbnRTdHlsZS0+ZGlmZihi
bG9ja3F1b3RlU3R5bGUuZ2V0KCkpOwogCiAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBibG9ja3F1b3RlU3R5bGUtPmVuZCgpOwpAQCAtNjE4
LDEwICs2MTksMTAgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aGFuZGxlU3R5bAog
CiAgICAgICAgIGNvbnRleHQgPSBibG9ja3F1b3RlTm9kZS0+cGFyZW50Tm9kZSgpOwogICAgIH0K
LSAgICAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGNvbnRleHRTdHls
ZSA9IGNvbXB1dGVkU3R5bGUoY29udGV4dCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9w
ZXJ0aWVzKCk7Ci0gICAgY29udGV4dFN0eWxlLT5kaWZmKHNvdXJjZURvY3VtZW50U3R5bGUuZ2V0
KCkpOwotICAgIAorCisgICAgLy8gVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgdGhhdCBvbmx5IGVk
aXRpbmcgc3R5bGVzIHRvIGJlIHJlbW92ZWQgZnJvbSBzb3VyY2VEb2N1bWVudFN0eWxlLgorICAg
IHByZXBhcmVFZGl0aW5nU3R5bGVUb0FwcGx5QXQoc291cmNlRG9jdW1lbnRTdHlsZS5nZXQoKSwg
UG9zaXRpb24oY29udGV4dCwgMCkpOworCiAgICAgLy8gUmVtb3ZlIGJsb2NrIHByb3BlcnRpZXMg
aW4gdGhlIHNwYW4ncyBzdHlsZS4gVGhpcyBwcmV2ZW50cyBwcm9wZXJ0aWVzIHRoYXQgcHJvYmFi
bHkgaGF2ZSBubyBlZmZlY3QgCiAgICAgLy8gY3VycmVudGx5IGZyb20gYWZmZWN0aW5nIGJsb2Nr
cyBsYXRlciBpZiB0aGUgc3R5bGUgaXMgY2xvbmVkIGZvciBhIG5ldyBibG9jayBlbGVtZW50IGR1
cmluZyBhIGZ1dHVyZSAKICAgICAvLyBlZGl0aW5nIG9wZXJhdGlvbi4KQEAgLTY1NSw5ICs2NTYs
OCBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsCiAgICAgCiAgICAg
Ly8gUmVtb3ZlIHJlZHVuZGFudCBzdHlsZXMuCiAgICAgY29udGV4dCA9IGNvcGllZFJhbmdlU3R5
bGVTcGFuLT5wYXJlbnROb2RlKCk7Ci0gICAgY29udGV4dFN0eWxlID0gY29tcHV0ZWRTdHlsZShj
b250ZXh0KS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMoKTsKLSAgICBjb250
ZXh0U3R5bGUtPmRpZmYoY29waWVkUmFuZ2VTdHlsZS5nZXQoKSk7Ci0gICAgCisgICAgcHJlcGFy
ZUVkaXRpbmdTdHlsZVRvQXBwbHlBdChjb3BpZWRSYW5nZVN0eWxlLmdldCgpLCBQb3NpdGlvbihj
b250ZXh0LCAwKSk7CisKICAgICAvLyBTZWUgdGhlIGNvbW1lbnRzIGFib3ZlIGFib3V0IHJlbW92
aW5nIGJsb2NrIHByb3BlcnRpZXMuCiAgICAgY29waWVkUmFuZ2VTdHlsZS0+cmVtb3ZlQmxvY2tQ
cm9wZXJ0aWVzKCk7CiAKQEAgLTcyNSw3ICs3MjUsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25D
b21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChtX21hdGNo
U3R5bGUpCi0gICAgICAgIG1faW5zZXJ0aW9uU3R5bGUgPSBzdHlsZUF0UG9zaXRpb24oc2VsZWN0
aW9uLnN0YXJ0KCkpOworICAgICAgICBtX2luc2VydGlvblN0eWxlID0gZWRpdGluZ1N0eWxlQXRQ
b3NpdGlvbihzZWxlY3Rpb24uc3RhcnQoKSwgSW5jbHVkZVR5cGluZ1N0eWxlKTsKICAgICAKICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0ID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgp
OwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlRW5kID0gc2VsZWN0aW9uLnZpc2libGVFbmQo
KTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiA0Njg2MCkKKysrIFdlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAi
aHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJ2aXNpYmxlX3VuaXRzLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTI5MSwyMCArMjkyLDE2IEBAIHN0YXRpYyB2b2lkIHJlbW92
ZUVuY2xvc2luZ01haWxCbG9ja3F1b3QKICAgICBOb2RlKiBibG9ja3F1b3RlID0gbmVhcmVzdE1h
aWxCbG9ja3F1b3RlKG5vZGUpOwogICAgIGlmICghYmxvY2txdW90ZSB8fCAhYmxvY2txdW90ZS0+
cGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAKLSAgICBSZWZQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHBhcmVudFN0eWxlID0gUG9zaXRpb24oYmxvY2tx
dW90ZS0+cGFyZW50Tm9kZSgpLCAwKS5jb21wdXRlZFN0eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5o
ZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBibG9ja3F1b3RlU3R5bGUgPSBQb3NpdGlvbihibG9ja3F1b3RlLCAwKS5jb21wdXRlZFN0
eWxlKCktPmRlcHJlY2F0ZWRDb3B5SW5oZXJpdGFibGVQcm9wZXJ0aWVzKCk7Ci0gICAgcGFyZW50
U3R5bGUtPmRpZmYoYmxvY2txdW90ZVN0eWxlLmdldCgpKTsKLSAgICBibG9ja3F1b3RlU3R5bGUt
PmRpZmYoc3R5bGUpOworCisgICAgcmVtb3ZlU3R5bGVzQWRkZWRCeU5vZGUoc3R5bGUsIGJsb2Nr
cXVvdGUpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVEZWZhdWx0U3R5bGVzKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgCi0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBk
b2N1bWVudFN0eWxlID0gY29tcHV0ZWRTdHlsZShkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCkp
LT5kZXByZWNhdGVkQ29weUluaGVyaXRhYmxlUHJvcGVydGllcygpOwotICAgIGRvY3VtZW50U3R5
bGUtPmRpZmYoc3R5bGUpOworCisgICAgcHJlcGFyZUVkaXRpbmdTdHlsZVRvQXBwbHlBdChzdHls
ZSwgUG9zaXRpb24oZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCAwKSk7CiB9CiAKIHN0YXRp
YyBib29sIHNob3VsZEFkZE5hbWVzcGFjZUVsZW0oY29uc3QgRWxlbWVudCogZWxlbSkKQEAgLTEw
MDcsNyArMTAwNCw3IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAK
ICAgICAvLyBBZGQgYSB3cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5bGVzIHRoYXQgYWxsIG9mIHRo
ZSBub2RlcyBpbiB0aGUgbWFya3VwIGluaGVyaXQuCiAgICAgTm9kZSogcGFyZW50T2ZMYXN0Q2xv
c2VkID0gbGFzdENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5vZGUoKSA6IDA7CiAgICAgaWYg
KHBhcmVudE9mTGFzdENsb3NlZCAmJiBwYXJlbnRPZkxhc3RDbG9zZWQtPnJlbmRlcmVyKCkpIHsK
LSAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IGNvbXB1
dGVkU3R5bGUocGFyZW50T2ZMYXN0Q2xvc2VkKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVBy
b3BlcnRpZXMoKTsKKyAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBz
dHlsZSA9IGVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24ocGFyZW50T2ZMYXN0Q2xvc2Vk
LCAwKSk7CiAKICAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmli
dXRlIHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLCB0byBoZWxw
CiAgICAgICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0
IHRoZSB1c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1cwpAQCAtMTAzMSw4ICsxMDI4LDgg
QEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICAvLyBB
ZGQgYSBzdHlsZSBzcGFuIHdpdGggdGhlIGRvY3VtZW50J3MgZGVmYXVsdCBzdHlsZXMuICBXZSBh
ZGQgdGhlc2UgaW4gYSBzZXBhcmF0ZQogICAgICAgICAvLyBzcGFuIHNvIHRoYXQgYXQgcGFzdGUg
dGltZSB3ZSBjYW4gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGRvY3VtZW50IGRlZmF1bHRzIGFuZCB1
c2VyCiAgICAgICAgIC8vIGFwcGxpZWQgc3R5bGVzLgotICAgICAgICBSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IGNvbXB1dGVkU3R5bGUoZG9jdW1lbnQt
PmRvY3VtZW50RWxlbWVudCgpKS0+ZGVwcmVjYXRlZENvcHlJbmhlcml0YWJsZVByb3BlcnRpZXMo
KTsKLSAgICAgICAgCisgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
ZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihQb3NpdGlvbihkb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCksIDApKTsKKwogICAgICAgICBpZiAoZGVmYXVsdFN0eWxlLT5sZW5n
dGgoKSA+IDApCiAgICAgICAgICAgICBhZGRTdHlsZU1hcmt1cChwcmVNYXJrdXBzLCBtYXJrdXBz
LCBkZWZhdWx0U3R5bGUuZ2V0KCksIGRvY3VtZW50KTsKICAgICB9Cg==
</data>
<flag name="review"
          id="18397"
          type_id="1"
          status="+"
          setter="justin.garcia"
    />
          </attachment>
      

    </bug>

</bugzilla>