<?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>194089</bug_id>
          
          <creation_ts>2019-01-31 05:14:44 -0800</creation_ts>
          <short_desc>Call the frame main contents layer &quot;rootContentsLayer&quot; consistently.</short_desc>
          <delta_ts>2019-01-31 11:40:28 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1500546</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-01-31 05:14:44 -0800</bug_when>
    <thetext>This is currently called &quot;rootContentsLayer&quot; in the compositor and &quot;scrolledContentsLayer&quot; in the scrolling tree. We want to free term &quot;scrolledContentsLayer&quot; to mean the direct child layer of the scrollview layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500561</commentid>
    <comment_count>1</comment_count>
      <attachid>360721</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-01-31 06:48:50 -0800</bug_when>
    <thetext>Created attachment 360721
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500562</commentid>
    <comment_count>2</comment_count>
      <attachid>360722</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-01-31 06:51:12 -0800</bug_when>
    <thetext>Created attachment 360722
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500566</commentid>
    <comment_count>3</comment_count>
      <attachid>360723</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-01-31 06:54:35 -0800</bug_when>
    <thetext>Created attachment 360723
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500671</commentid>
    <comment_count>4</comment_count>
      <attachid>360723</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-31 11:39:44 -0800</bug_when>
    <thetext>Comment on attachment 360723
patch

Clearing flags on attachment: 360723

Committed r240800: &lt;https://trac.webkit.org/changeset/240800&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500672</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-31 11:39:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1500673</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-31 11:40:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/47710199&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360721</attachid>
            <date>2019-01-31 06:48:50 -0800</date>
            <delta_ts>2019-01-31 06:51:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>root-content-layer-rename-4.patch</filename>
            <type>text/plain</type>
            <size>32406</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE5LTAxLTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDYWxsIHRoZSBmcmFtZSBtYWlu
IGNvbnRlbnRzIGxheWVyICJyb290Q29udGVudHNMYXllciIgY29uc2lzdGVudGx5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBjdXJyZW50
bHkgY2FsbGVkICJyb290Q29udGVudExheWVyIiBpbiB0aGUgY29tcG9zaXRvciBhbmQgInNjcm9s
bGVkQ29udGVudHNMYXllciIgaW4gdGhlIHNjcm9sbGluZyB0cmVlLgorICAgICAgICBXZSB3YW50
IHRvIHJlc2VydmUgdGVybSAic2Nyb2xsZWRDb250ZW50c0xheWVyIiB0byBtZWFuIHRoZSBkaXJl
Y3QgY2hpbGQgbGF5ZXIgb2YgdGhlICBzY3JvbGwgY29udGFpbmVyIGxheWVyCisgICAgICAgIHdp
dGhvdXQgYW55IHBvc2l0aW9uaW5nIG9kZGl0aWVzICh3aGljaCB0aGlzIGlzbid0KS4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExh
eWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMpOgorCisgICAgICAgIFNldCB0aGUgcm9v
dENvbnRlbnRzTGF5ZXIgZm9yIGZyYW1lLiBJdCBpcyBvbmx5IHVzZWQgYnkgdGhlIE1hYyBmcmFt
ZSBzY3JvbGxpbmcgY29kZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cm9v
dENvbnRlbnRzTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUxheWVycyk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRBbGxQcm9wZXJ0aWVzQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Um9vdENvbnRl
bnRzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOgorCisgICAgICAgIEludHJvZHVjZSBy
b290Q29udGVudExheWVyIGZvciBmcmFtZXMgb25seS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorCisgICAg
ICAgIFN3aXRjaCB0byB1c2luZyByb290Q29udGVudHNMYXllci4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpkaWRDaGFuZ2VQbGF0Zm9ybUxheWVyRm9yTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVJvb3RD
b250ZW50TGF5ZXJDbGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJvb3RHcmFwaGljc0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvclRvcE92ZXJoYW5n
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxh
eWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvckZvb3Rlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9v
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6YXR0YWNo
Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0
YWNoUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cm9vdExheWVyQXR0YWNobWVudENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUm9sZSk6CisKKyAg
ICAgICAgUGFzcyByb290Q29udGVudHNMYXllciBzZXBhcmF0ZWx5IGZvciBmcmFtZXMgb25seS4K
KyAgICAgICAgUGFzcyBudWxsIGFzIGZyYW1lIHNjcm9sbGVkQ29udGVudHNMYXllciB1bnRpbCB0
aGVzZSBhcmUgcmVhcnJhbmdlZCAoaXQgaXMgbm90IHVzZWQpLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDE5LTAxLTMxICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogY2Fj
aGUgdW5kZXIgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRm
b3JtTm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjQw
NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmllCiAKICAgICBhdXRvKiBub2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgbm9kZS0+
c2V0TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7Ci0gICAgbm9kZS0+
c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoZnJh
bWVWaWV3KSk7CisgICAgbm9kZS0+c2V0Um9vdENvbnRlbnRzTGF5ZXIocm9vdENvbnRlbnRzTGF5
ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Q291bnRlclNjcm9sbGlu
Z0xheWVyKGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAg
ICBub2RlLT5zZXRJbnNldENsaXBMYXllcihpbnNldENsaXBMYXllckZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpKTsKICAgICBub2RlLT5zZXRDb250ZW50U2hhZG93TGF5ZXIoY29udGVudFNoYWRvd0xh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb25jaWwKICAgICBhdXRvKiBjb3VudGVyU2Nyb2xs
aW5nTGF5ZXIgPSBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsK
ICAgICBhdXRvKiBpbnNldENsaXBMYXllciA9IGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KGZy
YW1lVmlldyk7CiAgICAgYXV0byogY29udGVudFNoYWRvd0xheWVyID0gY29udGVudFNoYWRvd0xh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7Ci0gICAgYXV0byogc2Nyb2xsZWRDb250ZW50c0xh
eWVyID0gcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOworICAgIGF1dG8q
IHJvb3RDb250ZW50c0xheWVyID0gcm9vdENvbnRlbnRzTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVW
aWV3KTsKICAgICBhdXRvKiBoZWFkZXJMYXllciA9IGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KGZy
YW1lVmlldyk7CiAgICAgYXV0byogZm9vdGVyTGF5ZXIgPSBmb290ZXJMYXllckZvckZyYW1lVmll
dyhmcmFtZVZpZXcpOwogCkBAIC00NDEsOCArNDQxLDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpyZWNvbmNpbAogICAgICAgICAgICAgaW5zZXRDbGlwTGF5ZXItPnNldFBvc2l0
aW9uKHBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIpOwogICAgICAgICBpZiAoY29udGVudFNoYWRv
d0xheWVyKQogICAgICAgICAgICAgY29udGVudFNoYWRvd0xheWVyLT5zZXRQb3NpdGlvbihwb3Np
dGlvbkZvckNvbnRlbnRzTGF5ZXIpOwotICAgICAgICBpZiAoc2Nyb2xsZWRDb250ZW50c0xheWVy
KQotICAgICAgICAgICAgc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlv
bkZvckNvbnRlbnRzTGF5ZXIpOworICAgICAgICBpZiAocm9vdENvbnRlbnRzTGF5ZXIpCisgICAg
ICAgICAgICByb290Q29udGVudHNMYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb25Gb3JDb250ZW50
c0xheWVyKTsKICAgICAgICAgaWYgKGhlYWRlckxheWVyKQogICAgICAgICAgICAgaGVhZGVyTGF5
ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIpOwogICAgICAgICBpZiAoZm9v
dGVyTGF5ZXIpCkBAIC00NTUsOCArNDU1LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZWNvbmNpbAogICAgICAgICAgICAgaW5zZXRDbGlwTGF5ZXItPnN5bmNQb3NpdGlvbihw
b3NpdGlvbkZvckluc2V0Q2xpcExheWVyKTsKICAgICAgICAgaWYgKGNvbnRlbnRTaGFkb3dMYXll
cikKICAgICAgICAgICAgIGNvbnRlbnRTaGFkb3dMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9u
Rm9yQ29udGVudHNMYXllcik7Ci0gICAgICAgIGlmIChzY3JvbGxlZENvbnRlbnRzTGF5ZXIpCi0g
ICAgICAgICAgICBzY3JvbGxlZENvbnRlbnRzTGF5ZXItPnN5bmNQb3NpdGlvbihwb3NpdGlvbkZv
ckNvbnRlbnRzTGF5ZXIpOworICAgICAgICBpZiAocm9vdENvbnRlbnRzTGF5ZXIpCisgICAgICAg
ICAgICByb290Q29udGVudHNMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9uRm9yQ29udGVudHNM
YXllcik7CiAgICAgICAgIGlmIChoZWFkZXJMYXllcikKICAgICAgICAgICAgIGhlYWRlckxheWVy
LT5zeW5jUG9zaXRpb24ocG9zaXRpb25Gb3JIZWFkZXJMYXllcik7CiAgICAgICAgIGlmIChmb290
ZXJMYXllcikKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmVuc3VyZVJvCiAgICAgaW5zZXJ0Tm9kZShTY3JvbGxpbmdOb2RlVHlwZTo6TWFpbkZyYW1l
LCBmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpLCAwLCAwKTsKIH0KIAotdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIEdy
YXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5z
ZXRDbGlwTGF5ZXIpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXll
cnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNz
TGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9s
bGluZ0xheWVyLCBHcmFwaGljc0xheWVyKiBpbnNldENsaXBMYXllciwgR3JhcGhpY3NMYXllciog
cm9vdENvbnRlbnRzTGF5ZXIpCiB7CiAgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVU
cmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIEFTU0VSVChub2RlKTsKQEAgLTU4MCwx
MiArNTgwLDE0IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUwKIAog
ICAgIGlmIChpczxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAg
IGF1dG8mIHNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU+KCpub2RlKTsKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB1bnVzZWQuCiAgICAgICAg
IHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHNjcm9sbGVkQ29udGVudHNM
YXllcik7Ci0gICAgCisKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihub2RlKSkgewogICAgICAgICAgICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKICAgICAg
ICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRJbnNldENsaXBMYXllcihpbnNldENsaXBMYXll
cik7CiAgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xh
eWVyKGNvdW50ZXJTY3JvbGxpbmdMYXllcik7CisgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05v
ZGUuc2V0Um9vdENvbnRlbnRzTGF5ZXIocm9vdENvbnRlbnRzTGF5ZXIpOwogICAgICAgICB9CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VY
UE9SVCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50T2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gY2hp
bGRyZW5PZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Tm9kZUxheWVycyhTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5
ZXIqIC8qbGF5ZXIqLywgR3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5ZXIqLyA9
IG51bGxwdHIsIEdyYXBoaWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGluZ0xheWVyKi8gPSBudWxs
cHRyLCBHcmFwaGljc0xheWVyKiAvKmluc2V0Q2xpcExheWVyKi8gPSBudWxscHRyKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlE
LCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qc2Nyb2xsZWRDb250
ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKmNvdW50ZXJTY3JvbGxpbmdM
YXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLyppbnNldENsaXBMYXllciovID0gbnVs
bHB0ciwgR3JhcGhpY3NMYXllciogLypyb290Q29udGVudHNMYXllciovID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxpbmdOb2RlR2VvbWV0cnko
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSYpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRDb25zdHJhaW50ZWROb2RlR2VvbWV0cnko
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI0MDcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg3LDEwICsyODcsMTAgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNv
bgogI2VuZGlmCiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyb290
Q29udGVudExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQorR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50c0xheWVyRm9yRnJhbWVWaWV3
KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJh
bWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJW
aWV3LT5jb21wb3NpdG9yKCkucm9vdENvbnRlbnRMYXllcigpOworICAgICAgICByZXR1cm4gcmVu
ZGVyVmlldy0+Y29tcG9zaXRvcigpLnJvb3RDb250ZW50c0xheWVyKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcm9sbGluZ05vZGVJ
RCBwYXJlbnRPZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBWZWN0b3I8U2Nyb2xsaW5nTm9kZUlEPiBjaGlsZHJlbk9mTm9kZShTY3JvbGxpbmdO
b2RlSUQpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldE5vZGVM
YXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNz
TGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVy
KiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypp
bnNldENsaXBMYXllciovID0gbnVsbHB0cikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5vZGVM
YXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNz
TGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVy
KiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypp
bnNldENsaXBMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypyb290Q29udGVudHNM
YXllciovID0gbnVsbHB0cikgeyB9CiAKICAgICBzdHJ1Y3QgU2Nyb2xsaW5nR2VvbWV0cnkgewog
ICAgICAgICBMYXlvdXRSZWN0IHBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Q7CkBAIC0xODks
NyArMTg5LDcgQEAgcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxp
bmdMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAgICBHcmFwaGljc0xheWVyKiBpbnNl
dENsaXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKLSAgICBHcmFwaGljc0xheWVyKiBy
b290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAgIEdyYXBoaWNzTGF5
ZXIqIHJvb3RDb250ZW50c0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIEdyYXBo
aWNzTGF5ZXIqIGNvbnRlbnRTaGFkb3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAg
ICBHcmFwaGljc0xheWVyKiBoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAg
ICBHcmFwaGljc0xheWVyKiBmb290ZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MDcxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsCiAgICAgLCBtX2ZpeGVkRWxlbWVudHNMYXlv
dXRSZWxhdGl2ZVRvRnJhbWUoc3RhdGVOb2RlLmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUoKSkKICAgICAsIG1fdmlzdWFsVmlld3BvcnRFbmFibGVkKHN0YXRlTm9kZS52aXN1YWxW
aWV3cG9ydEVuYWJsZWQoKSkKIHsKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFJvb3RDb250
ZW50c0xheWVyKSkKKyAgICAgICAgc2V0Um9vdENvbnRlbnRzTGF5ZXIoc3RhdGVOb2RlLnJvb3RD
b250ZW50c0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbigpKSk7CisKICAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KENvdW50
ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIHNldENvdW50ZXJTY3JvbGxpbmdMYXllcihzdGF0
ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRy
ZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAKQEAgLTk5LDYgKzEwMiw3IEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnMKICAgICBzZXRQcm9wZXJ0
eUNoYW5nZWRCaXQoRnJhbWVTY2FsZUZhY3Rvcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0
KEV2ZW50VHJhY2tpbmdSZWdpb24pOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSZWFzb25z
Rm9yU3luY2hyb25vdXNTY3JvbGxpbmcpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSb290
Q29udGVudHNMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbGVkQ29udGVu
dHNMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KENvdW50ZXJTY3JvbGxpbmdMYXll
cik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEluc2V0Q2xpcExheWVyKTsKQEAgLTIxMiw2
ICsyMTYsMTUgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6cwogICAg
IHNldFByb3BlcnR5Q2hhbmdlZChUb3BDb250ZW50SW5zZXQpOwogfQogCit2b2lkIFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRSb290Q29udGVudHNMYXllcihjb25zdCBMYXll
clJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0aW9uKQoreworICAgIGlmIChsYXllclJl
cHJlc2VudGF0aW9uID09IG1fcm9vdENvbnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcm9vdENvbnRlbnRzTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOworICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChSb290Q29udGVudHNMYXllcik7Cit9CisKIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb25zdCBMYXll
clJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0aW9uKQogewogICAgIGlmIChsYXllclJl
cHJlc2VudGF0aW9uID09IG1fY291bnRlclNjcm9sbGluZ0xheWVyKQpAQCAtMzA3LDYgKzMyMCw3
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmQKICAgICBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CiAgICAg
CiAgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNs
dWRlTGF5ZXJJRHMpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb290IGNvbnRlbnRzIGxh
eWVyIElEIiwgbV9yb290Q29udGVudHNMYXllci5sYXllcklEKCkpOwogICAgICAgICB0cy5kdW1w
UHJvcGVydHkoImNvdW50ZXIgc2Nyb2xsaW5nIGxheWVyIElEIiwgbV9jb3VudGVyU2Nyb2xsaW5n
TGF5ZXIubGF5ZXJJRCgpKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJpbnNldCBjbGlwIGxh
eWVyIElEIiwgbV9pbnNldENsaXBMYXllci5sYXllcklEKCkpOwogICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImNvbnRlbnQgc2hhZG93IGxheWVyIElEIiwgbV9jb250ZW50U2hhZG93TGF5ZXIubGF5
ZXJJRCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQwNzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZyYW1lU2NhbGVGYWN0b3IgPSBOdW1TY3JvbGxpbmdTdGF0ZU5vZGVCaXRz
LAogICAgICAgICBFdmVudFRyYWNraW5nUmVnaW9uLAogICAgICAgICBSZWFzb25zRm9yU3luY2hy
b25vdXNTY3JvbGxpbmcsCisgICAgICAgIFJvb3RDb250ZW50c0xheWVyLAogICAgICAgICBTY3Jv
bGxlZENvbnRlbnRzTGF5ZXIsCiAgICAgICAgIENvdW50ZXJTY3JvbGxpbmdMYXllciwKICAgICAg
ICAgSW5zZXRDbGlwTGF5ZXIsCkBAIC05OSw2ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
dG9wQ29udGVudEluc2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3BDb250ZW50SW5zZXQ7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRvcENvbnRlbnRJbnNldChmbG9hdCk7CiAKKyAgICBj
b25zdCBMYXllclJlcHJlc2VudGF0aW9uJiByb290Q29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdENvbnRlbnRzTGF5ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJv
b3RDb250ZW50c0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKwogICAgIC8vIFRo
aXMgaXMgYSBsYXllciBtb3ZlZCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIHNjcm9sbGlu
ZywgZm9yIGV4YW1wbGUgZm9yIGJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZAogICAgIGNvbnN0
IExheWVyUmVwcmVzZW50YXRpb24mIGNvdW50ZXJTY3JvbGxpbmdMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fY291bnRlclNjcm9sbGluZ0xheWVyOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwpAQCAt
MTQ3LDYgKzE1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEFsbFByb3BlcnRpZXNDaGFu
Z2VkKCkgb3ZlcnJpZGU7CiAKKyAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fcm9vdENvbnRlbnRz
TGF5ZXI7CiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsK
ICAgICBMYXllclJlcHJlc2VudGF0aW9uIG1faW5zZXRDbGlwTGF5ZXI7CiAgICAgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiBtX2NvbnRlbnRTaGFkb3dMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU2Ny
b2xsQ29udHJvbGxlciBtX3Njcm9sbENvbnRyb2xsZXI7CiAKICAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9zY3JvbGxMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRl
bnRzTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcm9vdENvbnRlbnRzTGF5ZXI7CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVyOwogICAgIFJldGFp
blB0cjxDQUxheWVyPiBtX2luc2V0Q2xpcExheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBt
X2NvbnRlbnRTaGFkb3dMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDA3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYzoKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKICAgICAgICAgbV9zY3JvbGxM
YXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6Um9vdENvbnRlbnRzTGF5ZXIpKQorICAgICAgICBtX3Jvb3RDb250ZW50c0xh
eWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJvb3RDb250ZW50c0xheWVyKCk7CiAKICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKICAgICAgICAgbV9jb3VudGVy
U2Nyb2xsaW5nTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVy
KCk7CkBAIC00MzksMTEgKzQzOSwxMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWM6CiAgICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyLmdldCgpLnBvc2l0aW9u
ID0gZml4ZWRQb3NpdGlvblJlY3QubG9jYXRpb24oKTsKIAogICAgIGZsb2F0IHRvcENvbnRlbnRJ
bnNldCA9IHRoaXMtPnRvcENvbnRlbnRJbnNldCgpOwotICAgIGlmIChtX2luc2V0Q2xpcExheWVy
ICYmIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyICYmIHRvcENvbnRlbnRJbnNldCkgeworICAgIGlm
IChtX2luc2V0Q2xpcExheWVyICYmIG1fcm9vdENvbnRlbnRzTGF5ZXIgJiYgdG9wQ29udGVudElu
c2V0KSB7CiAgICAgICAgIG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBGbG9hdFBv
aW50KG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCkucG9zaXRpb24ueCwgRnJhbWVWaWV3Ojp5UG9zaXRp
b25Gb3JJbnNldENsaXBMYXllcihwb3NpdGlvbiwgdG9wQ29udGVudEluc2V0KSk7Ci0gICAgICAg
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBvc2l0aW9uID0gRnJhbWVWaWV3Ojpwb3Np
dGlvbkZvclJvb3RDb250ZW50TGF5ZXIocG9zaXRpb24sIHNjcm9sbE9yaWdpbigpLCB0b3BDb250
ZW50SW5zZXQsIGhlYWRlckhlaWdodCgpKTsKKyAgICAgICAgbV9yb290Q29udGVudHNMYXllci5n
ZXQoKS5wb3NpdGlvbiA9IEZyYW1lVmlldzo6cG9zaXRpb25Gb3JSb290Q29udGVudExheWVyKHBv
c2l0aW9uLCBzY3JvbGxPcmlnaW4oKSwgdG9wQ29udGVudEluc2V0LCBoZWFkZXJIZWlnaHQoKSk7
CiAgICAgICAgIGlmIChtX2NvbnRlbnRTaGFkb3dMYXllcikKLSAgICAgICAgICAgIG1fY29udGVu
dFNoYWRvd0xheWVyLmdldCgpLnBvc2l0aW9uID0gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0
KCkucG9zaXRpb247CisgICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci5nZXQoKS5wb3Np
dGlvbiA9IG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkucG9zaXRpb247CiAgICAgfQogCiAgICAg
aWYgKG1faGVhZGVyTGF5ZXIgfHwgbV9mb290ZXJMYXllcikgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9u
IDI0MDcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDQsMTIgKzU0NCwxMiBAQCB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6ZGlkQ2hhbmdlUGxhCiAKICAgICBhdXRvKiBiYWNraW5nID0gbGF5ZXIu
YmFja2luZygpOwogICAgIGlmIChhdXRvIG5vZGVJRCA9IGJhY2tpbmctPnNjcm9sbGluZ05vZGVJ
REZvclJvbGUoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6Vmlld3BvcnRDb25zdHJhaW5lZCkpCi0g
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgYmFja2lu
Zy0+Z3JhcGhpY3NMYXllcigpKTsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5v
ZGVMYXllcnMobm9kZUlELCBiYWNraW5nLT5ncmFwaGljc0xheWVyKCksIGJhY2tpbmctPnNjcm9s
bGluZ0NvbnRlbnRzTGF5ZXIoKSk7CiAKICAgICBpZiAoYXV0byBub2RlSUQgPSBiYWNraW5nLT5z
Y3JvbGxpbmdOb2RlSURGb3JSb2xlKFNjcm9sbENvb3JkaW5hdGlvblJvbGU6OlNjcm9sbGluZykp
IHsKICAgICAgICAgLy8gRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gbm90IGhhdmUgdG8gc3BlY2lh
bC1jYXNlIHRoZSByb290LgogICAgICAgICBpZiAobGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkK
LSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwg
bV9zY3JvbGxMYXllci5nZXQoKSwgbV9yb290Q29udGVudExheWVyLmdldCgpLCBmaXhlZFJvb3RC
YWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCkpOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlELCBtX3Njcm9sbExheWVyLmdldCgpLCBudWxs
cHRyLCBmaXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXIoKSwgY2xpcExheWVyKCksIG1fcm9vdENvbnRl
bnRzTGF5ZXIuZ2V0KCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQsIGJhY2tpbmctPnNjcm9sbGluZ0xheWVyKCks
IGJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSk7CiAgICAgfQpAQCAtNzYwLDggKzc2
MCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3MKICAgICAgICAg
ICAgIC8vIGNvbXBvc2l0ZWQgbGF5ZXJzIHRoYXQgd2UgZGlkbid0IGhpdCBpbiBvdXIgdHJhdmVy
c2FsIChlLmcuIGJlY2F1c2Ugb2YgdmlzaWJpbGl0eTpoaWRkZW4pLgogICAgICAgICAgICAgaWYg
KGNoaWxkTGlzdC5pc0VtcHR5KCkgJiYgIW5lZWRzQ29tcG9zaXRpbmdGb3JDb250ZW50T3JPdmVy
bGF5cygpKQogICAgICAgICAgICAgICAgIGRlc3Ryb3lSb290TGF5ZXIoKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKG1fcm9vdENvbnRlbnRMYXllcikKLSAgICAgICAgICAgICAgICBtX3Jvb3RDb250
ZW50TGF5ZXItPnNldENoaWxkcmVuKFdURk1vdmUoY2hpbGRMaXN0KSk7CisgICAgICAgICAgICBl
bHNlIGlmIChtX3Jvb3RDb250ZW50c0xheWVyKQorICAgICAgICAgICAgICAgIG1fcm9vdENvbnRl
bnRzTGF5ZXItPnNldENoaWxkcmVuKFdURk1vdmUoY2hpbGRMaXN0KSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTc4NCw3ICs3ODQsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlQ29tcG9zCiAgICAgICAgIExPRyhDb21wb3NpdGluZywgIlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMgLSBwb3N0Iik7CiAgICAgICAgIHNob3dQYWludE9y
ZGVyVHJlZShtX3JlbmRlclZpZXcubGF5ZXIoKSk7CiAgICAgICAgIExPRyhDb21wb3NpdGluZywg
IlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMgLSBHcmFwaGlj
c0xheWVycyBwb3N0LCBjb250ZW50TGF5ZXJzQ291bnQgJWQiLCBtX2NvbnRlbnRMYXllcnNDb3Vu
dCk7Ci0gICAgICAgIHNob3dHcmFwaGljc0xheWVyVHJlZShtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0
KCkpOworICAgICAgICBzaG93R3JhcGhpY3NMYXllclRyZWUobV9yb290Q29udGVudHNMYXllci5n
ZXQoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTE1MTUsNyArMTUxNSw3IEBAIHN0YXRpYyBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlckYKIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVwZGF0ZVJvb3RDb250ZW50TGF5ZXJDbGlwcGluZygpCiB7Ci0gICAgbV9yb290Q29udGVu
dExheWVyLT5zZXRNYXNrc1RvQm91bmRzKCFtX3JlbmRlclZpZXcuc2V0dGluZ3MoKS5iYWNrZ3Jv
dW5kU2hvdWxkRXh0ZW5kQmV5b25kUGFnZSgpKTsKKyAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5z
ZXRNYXNrc1RvQm91bmRzKCFtX3JlbmRlclZpZXcuc2V0dGluZ3MoKS5iYWNrZ3JvdW5kU2hvdWxk
RXh0ZW5kQmV5b25kUGFnZSgpKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXImIGxheWVyLCBSZXF1aXJlc0NvbXBvc2l0aW5nRGF0YSYg
cXVlcnlEYXRhLCBDb21wb3NpdGluZ0NoYW5nZVJlcGFpbnQgc2hvdWxkUmVwYWludCwgQmFja2lu
Z1JlcXVpcmVkIGJhY2tpbmdSZXF1aXJlZCkKQEAgLTE4ODksNyArMTg4OSw3IEBAIFN0cmluZyBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyVHJlZUEKIHsKICAgICB1cGRhdGVDb21wb3NpdGlu
Z0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGU6OkFmdGVyTGF5b3V0KTsKIAotICAgIGlmICgh
bV9yb290Q29udGVudExheWVyKQorICAgIGlmICghbV9yb290Q29udGVudHNMYXllcikKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKHRydWUp
OwpAQCAtMTkxNCw3ICsxOTE0LDcgQEAgU3RyaW5nIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5
ZXJUcmVlQQogCiAgICAgLy8gV2Ugc2tpcCBkdW1waW5nIHRoZSBzY3JvbGwgYW5kIGNsaXAgbGF5
ZXJzIHRvIGtlZXAgbGF5ZXJUcmVlQXNUZXh0IG91dHB1dAogICAgIC8vIHNpbWlsYXIgYmV0d2Vl
biBwbGF0Zm9ybXMuCi0gICAgU3RyaW5nIGxheWVyVHJlZVRleHQgPSBtX3Jvb3RDb250ZW50TGF5
ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVCZWhhdmlvcik7CisgICAgU3RyaW5nIGxheWVy
VHJlZVRleHQgPSBtX3Jvb3RDb250ZW50c0xheWVyLT5sYXllclRyZWVBc1RleHQobGF5ZXJUcmVl
QmVoYXZpb3IpOwogCiAgICAgLy8gRHVtcCBhbiBlbXB0eSBsYXllciB0cmVlIG9ubHkgaWYgdGhl
IG9ubHkgY29tcG9zaXRlZCBsYXllciBpcyB0aGUgbWFpbiBmcmFtZSdzIHRpbGVkIGJhY2tpbmcs
CiAgICAgLy8gc28gdGhhdCB0ZXN0cyBleHBlY3RpbmcgdXMgdG8gZHJvcCBvdXQgb2YgYWNjZWxl
cmF0ZWQgY29tcG9zaXRpbmcgd2hlbiB0aGVyZSBhcmUgbm8gbGF5ZXJzIHN1Y2NlZWQuCkBAIC0y
MDExLDcgKzIwMTEsNyBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJv
CiB7CiAgICAgaWYgKG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllcikKICAgICAgICAgcmV0dXJu
IG1fb3ZlcmZsb3dDb250cm9sc0hvc3RMYXllci5nZXQoKTsKLSAgICByZXR1cm4gbV9yb290Q29u
dGVudExheWVyLmdldCgpOworICAgIHJldHVybiBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpOwog
fQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0SXNJbldpbmRvdyhib29sIGlzSW5X
aW5kb3cpCkBAIC0yMDY5LDE4ICsyMDY5LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpjbGVhckJhY2tpbmcKIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVJvb3RM
YXllclBvc2l0aW9uKCkKIHsKLSAgICBpZiAobV9yb290Q29udGVudExheWVyKSB7Ci0gICAgICAg
IG1fcm9vdENvbnRlbnRMYXllci0+c2V0U2l6ZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuY29u
dGVudHNTaXplKCkpOwotICAgICAgICBtX3Jvb3RDb250ZW50TGF5ZXItPnNldFBvc2l0aW9uKG1f
cmVuZGVyVmlldy5mcmFtZVZpZXcoKS5wb3NpdGlvbkZvclJvb3RDb250ZW50TGF5ZXIoKSk7Ci0g
ICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkp
OworICAgIGlmIChtX3Jvb3RDb250ZW50c0xheWVyKSB7CisgICAgICAgIG1fcm9vdENvbnRlbnRz
TGF5ZXItPnNldFNpemUobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmNvbnRlbnRzU2l6ZSgpKTsK
KyAgICAgICAgbV9yb290Q29udGVudHNMYXllci0+c2V0UG9zaXRpb24obV9yZW5kZXJWaWV3LmZy
YW1lVmlldygpLnBvc2l0aW9uRm9yUm9vdENvbnRlbnRMYXllcigpKTsKKyAgICAgICAgbV9yb290
Q29udGVudHNMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgIH0KIAog
ICAgIHVwZGF0ZVNjcm9sbExheWVyQ2xpcHBpbmcoKTsKIAogI2lmIEVOQUJMRShSVUJCRVJfQkFO
RElORykKLSAgICBpZiAobV9jb250ZW50U2hhZG93TGF5ZXIgJiYgbV9yb290Q29udGVudExheWVy
KSB7Ci0gICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5zZXRQb3NpdGlvbihtX3Jvb3RDb250
ZW50TGF5ZXItPnBvc2l0aW9uKCkpOwotICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0
U2l6ZShtX3Jvb3RDb250ZW50TGF5ZXItPnNpemUoKSk7CisgICAgaWYgKG1fY29udGVudFNoYWRv
d0xheWVyICYmIG1fcm9vdENvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50U2hhZG93
TGF5ZXItPnNldFBvc2l0aW9uKG1fcm9vdENvbnRlbnRzTGF5ZXItPnBvc2l0aW9uKCkpOworICAg
ICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0U2l6ZShtX3Jvb3RDb250ZW50c0xheWVyLT5z
aXplKCkpOwogICAgIH0KIAogICAgIHVwZGF0ZUxheWVyRm9yVG9wT3ZlcmhhbmdBcmVhKG1fbGF5
ZXJGb3JUb3BPdmVyaGFuZ0FyZWEgIT0gbnVsbHB0cik7CkBAIC0zMTE5LDcgKzMxMTksNyBAQCBH
cmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwCiAgICAgaWYgKCFtX2xheWVy
Rm9yVG9wT3ZlcmhhbmdBcmVhKSB7CiAgICAgICAgIG1fbGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEg
PSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwog
ICAgICAgICBtX2xheWVyRm9yVG9wT3ZlcmhhbmdBcmVhLT5zZXROYW1lKCJ0b3Agb3Zlcmhhbmci
KTsKLSAgICAgICAgbV9zY3JvbGxMYXllci0+YWRkQ2hpbGRCZWxvdygqbV9sYXllckZvclRvcE92
ZXJoYW5nQXJlYSwgbV9yb290Q29udGVudExheWVyLmdldCgpKTsKKyAgICAgICAgbV9zY3JvbGxM
YXllci0+YWRkQ2hpbGRCZWxvdygqbV9sYXllckZvclRvcE92ZXJoYW5nQXJlYSwgbV9yb290Q29u
dGVudHNMYXllci5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fbGF5ZXJGb3JUb3BPdmVy
aGFuZ0FyZWEuZ2V0KCk7CkBAIC0zMTM4LDEwICszMTM4LDEwIEBAIEdyYXBoaWNzTGF5ZXIqIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXAKICAgICBpZiAoIW1fbGF5ZXJGb3JCb3R0b21PdmVyaGFu
Z0FyZWEpIHsKICAgICAgICAgbV9sYXllckZvckJvdHRvbU92ZXJoYW5nQXJlYSA9IEdyYXBoaWNz
TGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7CiAgICAgICAgIG1f
bGF5ZXJGb3JCb3R0b21PdmVyaGFuZ0FyZWEtPnNldE5hbWUoImJvdHRvbSBvdmVyaGFuZyIpOwot
ICAgICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGlsZEJlbG93KCptX2xheWVyRm9yQm90dG9tT3Zl
cmhhbmdBcmVhLCBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCkpOworICAgICAgICBtX3Njcm9sbExh
eWVyLT5hZGRDaGlsZEJlbG93KCptX2xheWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhLCBtX3Jvb3RD
b250ZW50c0xheWVyLmdldCgpKTsKICAgICB9CiAKLSAgICBtX2xheWVyRm9yQm90dG9tT3Zlcmhh
bmdBcmVhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIG1fcm9vdENvbnRlbnRMYXllci0+c2l6
ZSgpLmhlaWdodCgpICsgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmhlYWRlckhlaWdodCgpCisg
ICAgbV9sYXllckZvckJvdHRvbU92ZXJoYW5nQXJlYS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgw
LCBtX3Jvb3RDb250ZW50c0xheWVyLT5zaXplKCkuaGVpZ2h0KCkgKyBtX3JlbmRlclZpZXcuZnJh
bWVWaWV3KCkuaGVhZGVySGVpZ2h0KCkKICAgICAgICAgKyBtX3JlbmRlclZpZXcuZnJhbWVWaWV3
KCkuZm9vdGVySGVpZ2h0KCkgKyBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudG9wQ29udGVudElu
c2V0KCkpKTsKICAgICByZXR1cm4gbV9sYXllckZvckJvdHRvbU92ZXJoYW5nQXJlYS5nZXQoKTsK
IH0KQEAgLTMxNjYsNyArMzE2Niw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXAKICAgICBpZiAoIW1fbGF5ZXJGb3JIZWFkZXIpIHsKICAgICAgICAgbV9sYXllckZv
ckhlYWRlciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAq
dGhpcyk7CiAgICAgICAgIG1fbGF5ZXJGb3JIZWFkZXItPnNldE5hbWUoImhlYWRlciIpOwotICAg
ICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGlsZEFib3ZlKCptX2xheWVyRm9ySGVhZGVyLCBtX3Jv
b3RDb250ZW50TGF5ZXIuZ2V0KCkpOworICAgICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGlsZEFi
b3ZlKCptX2xheWVyRm9ySGVhZGVyLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpKTsKICAgICAg
ICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmFkZFBhaW50UGVuZGluZ01pbGVzdG9uZXMoRGlk
Rmlyc3RGbHVzaEZvckhlYWRlckxheWVyKTsKICAgICB9CiAKQEAgLTMyMDMsMTAgKzMyMDMsMTAg
QEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cAogICAgIGlmICghbV9s
YXllckZvckZvb3RlcikgewogICAgICAgICBtX2xheWVyRm9yRm9vdGVyID0gR3JhcGhpY3NMYXll
cjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICAgICAgICAgbV9sYXll
ckZvckZvb3Rlci0+c2V0TmFtZSgiZm9vdGVyIik7Ci0gICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFk
ZENoaWxkQWJvdmUoKm1fbGF5ZXJGb3JGb290ZXIsIG1fcm9vdENvbnRlbnRMYXllci5nZXQoKSk7
CisgICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkQWJvdmUoKm1fbGF5ZXJGb3JGb290ZXIs
IG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAgIH0KIAotICAgIGZsb2F0IHRvdGFsQ29u
dGVudEhlaWdodCA9IG1fcm9vdENvbnRlbnRMYXllci0+c2l6ZSgpLmhlaWdodCgpICsgbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpLmhlYWRlckhlaWdodCgpICsgbV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLmZvb3RlckhlaWdodCgpOworICAgIGZsb2F0IHRvdGFsQ29udGVudEhlaWdodCA9IG1fcm9v
dENvbnRlbnRzTGF5ZXItPnNpemUoKS5oZWlnaHQoKSArIG1fcmVuZGVyVmlldy5mcmFtZVZpZXco
KS5oZWFkZXJIZWlnaHQoKSArIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5mb290ZXJIZWlnaHQo
KTsKICAgICBtX2xheWVyRm9yRm9vdGVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIEZyYW1l
Vmlldzo6eVBvc2l0aW9uRm9yRm9vdGVyTGF5ZXIobV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnNj
cm9sbFBvc2l0aW9uKCksCiAgICAgICAgIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS50b3BDb250
ZW50SW5zZXQoKSwgdG90YWxDb250ZW50SGVpZ2h0LCBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCku
Zm9vdGVySGVpZ2h0KCkpKSk7CiAgICAgbV9sYXllckZvckZvb3Rlci0+c2V0QW5jaG9yUG9pbnQo
RmxvYXRQb2ludDNEKCkpOwpAQCAtMzMzMiwxMiArMzMzMiwxMiBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlT3ZlcmZsCiAgICAgICAgIGlmICghbV9jb250ZW50U2hhZG93TGF5
ZXIpIHsKICAgICAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICAgICAgICAgICAgIG1fY29u
dGVudFNoYWRvd0xheWVyLT5zZXROYW1lKCJjb250ZW50IHNoYWRvdyIpOwotICAgICAgICAgICAg
bV9jb250ZW50U2hhZG93TGF5ZXItPnNldFNpemUobV9yb290Q29udGVudExheWVyLT5zaXplKCkp
OwotICAgICAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXItPnNldFBvc2l0aW9uKG1fcm9vdENv
bnRlbnRMYXllci0+cG9zaXRpb24oKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXll
ci0+c2V0U2l6ZShtX3Jvb3RDb250ZW50c0xheWVyLT5zaXplKCkpOworICAgICAgICAgICAgbV9j
b250ZW50U2hhZG93TGF5ZXItPnNldFBvc2l0aW9uKG1fcm9vdENvbnRlbnRzTGF5ZXItPnBvc2l0
aW9uKCkpOwogICAgICAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQzRCgpKTsKICAgICAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5zZXRD
dXN0b21BcHBlYXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OlNjcm9sbGlu
Z1NoYWRvdyk7CiAKLSAgICAgICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkQmVsb3coKm1f
Y29udGVudFNoYWRvd0xheWVyLCBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCkpOworICAgICAgICAg
ICAgbV9zY3JvbGxMYXllci0+YWRkQ2hpbGRCZWxvdygqbV9jb250ZW50U2hhZG93TGF5ZXIsIG1f
cm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAg
IEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50QW5kQ2xlYXIobV9jb250ZW50U2hhZG93TGF5ZXIpOwpA
QCAtMzQwOCwxOCArMzQwOCwxOCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJl
Um9vdExhCiAgICAgaWYgKGV4cGVjdGVkQXR0YWNobWVudCA9PSBtX3Jvb3RMYXllckF0dGFjaG1l
bnQpCiAgICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcm9vdENvbnRlbnRMYXllcikgewot
ICAgICAgICBtX3Jvb3RDb250ZW50TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhp
Y3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwotICAgICAgICBtX3Jvb3RDb250ZW50TGF5ZXItPnNl
dE5hbWUoImNvbnRlbnQgcm9vdCIpOworICAgIGlmICghbV9yb290Q29udGVudHNMYXllcikgewor
ICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBo
aWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKKyAgICAgICAgbV9yb290Q29udGVudHNMYXllci0+
c2V0TmFtZSgiY29udGVudCByb290Iik7CiAgICAgICAgIEludFJlY3Qgb3ZlcmZsb3dSZWN0ID0g
c25hcHBlZEludFJlY3QobV9yZW5kZXJWaWV3LmxheW91dE92ZXJmbG93UmVjdCgpKTsKLSAgICAg
ICAgbV9yb290Q29udGVudExheWVyLT5zZXRTaXplKEZsb2F0U2l6ZShvdmVyZmxvd1JlY3QubWF4
WCgpLCBvdmVyZmxvd1JlY3QubWF4WSgpKSk7Ci0gICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+
c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICAgICAgbV9yb290Q29udGVudHNMYXllci0+
c2V0U2l6ZShGbG9hdFNpemUob3ZlcmZsb3dSZWN0Lm1heFgoKSwgb3ZlcmZsb3dSZWN0Lm1heFko
KSkpOworICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
KCkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gUGFnZSBzY2FsZSBp
cyBhcHBsaWVkIGFib3ZlIHRoaXMgb24gaU9TLCBzbyB3ZSdsbCBqdXN0IHNheSB0aGF0IG91ciBy
b290IGxheWVyIGFwcGxpZXMgaXQuCiAgICAgICAgIGF1dG8mIGZyYW1lID0gbV9yZW5kZXJWaWV3
LmZyYW1lVmlldygpLmZyYW1lKCk7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKQot
ICAgICAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRBcHBsaWVzUGFnZVNjYWxlKCk7Cisg
ICAgICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5zZXRBcHBsaWVzUGFnZVNjYWxlKCk7CiAj
ZW5kaWYKIAogICAgICAgICAvLyBOZWVkIHRvIGNsaXAgdG8gcHJldmVudCB0cmFuc2Zvcm1lZCBj
b250ZW50IHNob3dpbmcgb3V0c2lkZSB0aGlzIGZyYW1lCkBAIC0zNDU3LDcgKzM0NTcsNyBAQCB2
b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9vdExhCiAgICAgICAgICAgICAgICAg
bV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyLT5hZGRDaGlsZCgqbV9jbGlwTGF5ZXIpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGlsZCgqbV9yb290
Q29udGVudExheWVyKTsKKyAgICAgICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkKCptX3Jv
b3RDb250ZW50c0xheWVyKTsKIAogICAgICAgICAgICAgdXBkYXRlU2Nyb2xsTGF5ZXJDbGlwcGlu
ZygpOwogICAgICAgICAgICAgdXBkYXRlT3ZlcmZsb3dDb250cm9sc0xheWVycygpOwpAQCAtMzQ4
NCw3ICszNDg0LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuc3VyZVJvb3RMYQog
CiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMYXllcigpCiB7Ci0gICAg
aWYgKCFtX3Jvb3RDb250ZW50TGF5ZXIpCisgICAgaWYgKCFtX3Jvb3RDb250ZW50c0xheWVyKQog
ICAgICAgICByZXR1cm47CiAKICAgICBkZXRhY2hSb290TGF5ZXIoKTsKQEAgLTM1MjAsMTQgKzM1
MjAsMTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmRlc3Ryb3lSb290TAogICAgICAg
ICBHcmFwaGljc0xheWVyOjp1bnBhcmVudEFuZENsZWFyKG1fc2Nyb2xsTGF5ZXIpOwogICAgIH0K
ICAgICBBU1NFUlQoIW1fc2Nyb2xsTGF5ZXIpOwotICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50
QW5kQ2xlYXIobV9yb290Q29udGVudExheWVyKTsKKyAgICBHcmFwaGljc0xheWVyOjp1bnBhcmVu
dEFuZENsZWFyKG1fcm9vdENvbnRlbnRzTGF5ZXIpOwogCiAgICAgbV9sYXllclVwZGF0ZXIgPSBu
dWxscHRyOwogfQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YXR0YWNoUm9vdExheWVy
KFJvb3RMYXllckF0dGFjaG1lbnQgYXR0YWNobWVudCkKIHsKLSAgICBpZiAoIW1fcm9vdENvbnRl
bnRMYXllcikKKyAgICBpZiAoIW1fcm9vdENvbnRlbnRzTGF5ZXIpCiAgICAgICAgIHJldHVybjsK
IAogICAgIExPRyhDb21wb3NpdGluZywgIlJlbmRlckxheWVyQ29tcG9zaXRvciAlcCBhdHRhY2hS
b290TGF5ZXIgJWQiLCB0aGlzLCBhdHRhY2htZW50KTsKQEAgLTM1NjMsNyArMzU2Myw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphdHRhY2hSb290TGEKIAogdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmRldGFjaFJvb3RMYXllcigpCiB7Ci0gICAgaWYgKCFtX3Jvb3RDb250ZW50
TGF5ZXIgfHwgbV9yb290TGF5ZXJBdHRhY2htZW50ID09IFJvb3RMYXllclVuYXR0YWNoZWQpCisg
ICAgaWYgKCFtX3Jvb3RDb250ZW50c0xheWVyIHx8IG1fcm9vdExheWVyQXR0YWNobWVudCA9PSBS
b290TGF5ZXJVbmF0dGFjaGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBzd2l0Y2ggKG1fcm9v
dExheWVyQXR0YWNobWVudCkgewpAQCAtMzU3Myw3ICszNTczLDcgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmRldGFjaFJvb3RMYQogICAgICAgICBpZiAobV9vdmVyZmxvd0NvbnRyb2xz
SG9zdExheWVyKQogICAgICAgICAgICAgbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyLT5yZW1v
dmVGcm9tUGFyZW50KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcm9vdENvbnRlbnRM
YXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgICAgICAgICAgbV9yb290Q29udGVudHNMYXll
ci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogCiAgICAgICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQg
PSBtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgIG93
bmVyRWxlbWVudC0+c2NoZWR1bGVJbnZhbGlkYXRlU3R5bGVBbmRMYXllckNvbXBvc2l0aW9uKCk7
CkBAIC0zNjI2LDcgKzM2MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm9vdExh
eWVyQXR0CiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxHcmFwaGljc0xheWVyPiBvdmVybGF5
SG9zdCA9IHBhZ2UoKS5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5sYXllcldpdGhEb2N1bWVudE92
ZXJsYXlzKCk7Ci0gICAgbV9yb290Q29udGVudExheWVyLT5hZGRDaGlsZChXVEZNb3ZlKG92ZXJs
YXlIb3N0KSk7CisgICAgbV9yb290Q29udGVudHNMYXllci0+YWRkQ2hpbGQoV1RGTW92ZShvdmVy
bGF5SG9zdCkpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bm90aWZ5SUZyYW1l
c09mQ29tcG9zaXRpbmdDaGFuZ2UoKQpAQCAtNDAwMSw3ICs0MDAxLDcgQEAgU2Nyb2xsaW5nTm9k
ZUlEIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGNo
YW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6OkxheWVyKQotICAgICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobmV3Tm9kZUlELCBtX3Njcm9sbExheWVy
LmdldCgpLCBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCksIGZpeGVkUm9vdEJhY2tncm91bmRMYXll
cigpLCBjbGlwTGF5ZXIoKSk7CisgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0
Tm9kZUxheWVycyhuZXdOb2RlSUQsIG1fc2Nyb2xsTGF5ZXIuZ2V0KCksIG51bGxwdHIsIGZpeGVk
Um9vdEJhY2tncm91bmRMYXllcigpLCBjbGlwTGF5ZXIoKSwgbV9yb290Q29udGVudHNMYXllci5n
ZXQoKSk7CiAKICAgICAgICAgaWYgKGNoYW5nZXMgJiBTY3JvbGxpbmdOb2RlQ2hhbmdlRmxhZ3M6
OkxheWVyR2VvbWV0cnkpIHsKICAgICAgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpTY3Jv
bGxpbmdHZW9tZXRyeSBzY3JvbGxpbmdHZW9tZXRyeTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgJKHJldmlzaW9uIDI0MDcxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3IEBAIHB1YmxpYzoKIAogICAgIEdyYXBoaWNzTGF5
ZXIqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllci5nZXQoKTsgfQog
ICAgIEdyYXBoaWNzTGF5ZXIqIGNsaXBMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcExheWVy
LmdldCgpOyB9Ci0gICAgR3JhcGhpY3NMYXllciogcm9vdENvbnRlbnRMYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdENvbnRlbnRMYXllci5nZXQoKTsgfQorICAgIEdyYXBoaWNzTGF5ZXIqIHJv
b3RDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290Q29udGVudHNMYXllci5nZXQo
KTsgfQogCiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JDbGlwcGluZygpIGNvbnN0IHsgIHJl
dHVybiBtX2NsaXBMYXllciA/IG1fY2xpcExheWVyLmdldCgpIDogbV9zY3JvbGxMYXllci5nZXQo
KTsgIH0KIApAQCAtNTM0LDcgKzUzNCw3IEBAIHByaXZhdGU6CiAgICAgCiBwcml2YXRlOgogICAg
IFJlbmRlclZpZXcmIG1fcmVuZGVyVmlldzsKLSAgICBSZWZQdHI8R3JhcGhpY3NMYXllcj4gbV9y
b290Q29udGVudExheWVyOworICAgIFJlZlB0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RDb250ZW50
c0xheWVyOwogICAgIFRpbWVyIG1fdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lcjsKIAogICAg
IENocm9tZUNsaWVudDo6Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3MgbV9jb21wb3NpdGluZ1RyaWdn
ZXJzIHsgc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50OjpDb21wb3NpdGluZ1RyaWdnZXJGbGFncz4o
Q2hyb21lQ2xpZW50OjpBbGxUcmlnZ2VycykgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360722</attachid>
            <date>2019-01-31 06:51:12 -0800</date>
            <delta_ts>2019-01-31 06:54:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>root-content-layer-rename-5.patch</filename>
            <type>text/plain</type>
            <size>32066</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE5LTAxLTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDYWxsIHRoZSBmcmFtZSBtYWlu
IGNvbnRlbnRzIGxheWVyICJyb290Q29udGVudHNMYXllciIgY29uc2lzdGVudGx5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBjdXJyZW50
bHkgY2FsbGVkICJyb290Q29udGVudExheWVyIiBpbiB0aGUgY29tcG9zaXRvciBhbmQgInNjcm9s
bGVkQ29udGVudHNMYXllciIgaW4gdGhlIHNjcm9sbGluZyB0cmVlLgorICAgICAgICBXZSB3YW50
IHRvIHJlc2VydmUgdGVybSAic2Nyb2xsZWRDb250ZW50c0xheWVyIiB0byBtZWFuIHRoZSBkaXJl
Y3QgY2hpbGQgbGF5ZXIgb2YgdGhlICBzY3JvbGwgY29udGFpbmVyIGxheWVyCisgICAgICAgIHdp
dGhvdXQgYW55IHBvc2l0aW9uaW5nIG9kZGl0aWVzICh3aGljaCB0aGlzIGlzbid0KS4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExh
eWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMpOgorCisgICAgICAgIFNldCB0aGUgcm9v
dENvbnRlbnRzTGF5ZXIgZm9yIGZyYW1lLiBJdCBpcyBvbmx5IHVzZWQgYnkgdGhlIE1hYyBmcmFt
ZSBzY3JvbGxpbmcgY29kZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cm9v
dENvbnRlbnRzTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUxheWVycyk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRBbGxQcm9wZXJ0aWVzQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Um9vdENvbnRl
bnRzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOgorCisgICAgICAgIEludHJvZHVjZSBy
b290Q29udGVudExheWVyIGZvciBmcmFtZXMgb25seS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorCisgICAg
ICAgIFN3aXRjaCB0byB1c2luZyByb290Q29udGVudHNMYXllci4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpkaWRDaGFuZ2VQbGF0Zm9ybUxheWVyRm9yTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVJvb3RD
b250ZW50TGF5ZXJDbGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJvb3RHcmFwaGljc0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvclRvcE92ZXJoYW5n
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxh
eWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvckZvb3Rlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9v
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6YXR0YWNo
Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0
YWNoUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cm9vdExheWVyQXR0YWNobWVudENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUm9sZSk6CisKKyAg
ICAgICAgUGFzcyByb290Q29udGVudHNMYXllciBzZXBhcmF0ZWx5IGZvciBmcmFtZXMgb25seS4K
KyAgICAgICAgUGFzcyBudWxsIGFzIGZyYW1lIHNjcm9sbGVkQ29udGVudHNMYXllciB1bnRpbCB0
aGVzZSBhcmUgcmVhcnJhbmdlZCAoaXQgaXMgbm90IHVzZWQpLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDE5LTAxLTMxICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogY2Fj
aGUgdW5kZXIgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRm
b3JtTm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjQw
NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmllCiAKICAgICBhdXRvKiBub2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgbm9kZS0+
c2V0TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7Ci0gICAgbm9kZS0+
c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoZnJh
bWVWaWV3KSk7CisgICAgbm9kZS0+c2V0Um9vdENvbnRlbnRzTGF5ZXIocm9vdENvbnRlbnRzTGF5
ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Q291bnRlclNjcm9sbGlu
Z0xheWVyKGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAg
ICBub2RlLT5zZXRJbnNldENsaXBMYXllcihpbnNldENsaXBMYXllckZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpKTsKICAgICBub2RlLT5zZXRDb250ZW50U2hhZG93TGF5ZXIoY29udGVudFNoYWRvd0xh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb25jaWwKICAgICBhdXRvKiBjb3VudGVyU2Nyb2xs
aW5nTGF5ZXIgPSBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsK
ICAgICBhdXRvKiBpbnNldENsaXBMYXllciA9IGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KGZy
YW1lVmlldyk7CiAgICAgYXV0byogY29udGVudFNoYWRvd0xheWVyID0gY29udGVudFNoYWRvd0xh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7Ci0gICAgYXV0byogc2Nyb2xsZWRDb250ZW50c0xh
eWVyID0gcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOworICAgIGF1dG8q
IHJvb3RDb250ZW50c0xheWVyID0gcm9vdENvbnRlbnRzTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVW
aWV3KTsKICAgICBhdXRvKiBoZWFkZXJMYXllciA9IGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KGZy
YW1lVmlldyk7CiAgICAgYXV0byogZm9vdGVyTGF5ZXIgPSBmb290ZXJMYXllckZvckZyYW1lVmll
dyhmcmFtZVZpZXcpOwogCkBAIC00NDEsOCArNDQxLDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpyZWNvbmNpbAogICAgICAgICAgICAgaW5zZXRDbGlwTGF5ZXItPnNldFBvc2l0
aW9uKHBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIpOwogICAgICAgICBpZiAoY29udGVudFNoYWRv
d0xheWVyKQogICAgICAgICAgICAgY29udGVudFNoYWRvd0xheWVyLT5zZXRQb3NpdGlvbihwb3Np
dGlvbkZvckNvbnRlbnRzTGF5ZXIpOwotICAgICAgICBpZiAoc2Nyb2xsZWRDb250ZW50c0xheWVy
KQotICAgICAgICAgICAgc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlv
bkZvckNvbnRlbnRzTGF5ZXIpOworICAgICAgICBpZiAocm9vdENvbnRlbnRzTGF5ZXIpCisgICAg
ICAgICAgICByb290Q29udGVudHNMYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb25Gb3JDb250ZW50
c0xheWVyKTsKICAgICAgICAgaWYgKGhlYWRlckxheWVyKQogICAgICAgICAgICAgaGVhZGVyTGF5
ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIpOwogICAgICAgICBpZiAoZm9v
dGVyTGF5ZXIpCkBAIC00NTUsOCArNDU1LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZWNvbmNpbAogICAgICAgICAgICAgaW5zZXRDbGlwTGF5ZXItPnN5bmNQb3NpdGlvbihw
b3NpdGlvbkZvckluc2V0Q2xpcExheWVyKTsKICAgICAgICAgaWYgKGNvbnRlbnRTaGFkb3dMYXll
cikKICAgICAgICAgICAgIGNvbnRlbnRTaGFkb3dMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9u
Rm9yQ29udGVudHNMYXllcik7Ci0gICAgICAgIGlmIChzY3JvbGxlZENvbnRlbnRzTGF5ZXIpCi0g
ICAgICAgICAgICBzY3JvbGxlZENvbnRlbnRzTGF5ZXItPnN5bmNQb3NpdGlvbihwb3NpdGlvbkZv
ckNvbnRlbnRzTGF5ZXIpOworICAgICAgICBpZiAocm9vdENvbnRlbnRzTGF5ZXIpCisgICAgICAg
ICAgICByb290Q29udGVudHNMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9uRm9yQ29udGVudHNM
YXllcik7CiAgICAgICAgIGlmIChoZWFkZXJMYXllcikKICAgICAgICAgICAgIGhlYWRlckxheWVy
LT5zeW5jUG9zaXRpb24ocG9zaXRpb25Gb3JIZWFkZXJMYXllcik7CiAgICAgICAgIGlmIChmb290
ZXJMYXllcikKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmVuc3VyZVJvCiAgICAgaW5zZXJ0Tm9kZShTY3JvbGxpbmdOb2RlVHlwZTo6TWFpbkZyYW1l
LCBmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpLCAwLCAwKTsKIH0KIAotdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIEdy
YXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5z
ZXRDbGlwTGF5ZXIpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXll
cnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNz
TGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9s
bGluZ0xheWVyLCBHcmFwaGljc0xheWVyKiBpbnNldENsaXBMYXllciwgR3JhcGhpY3NMYXllciog
cm9vdENvbnRlbnRzTGF5ZXIpCiB7CiAgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVU
cmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIEFTU0VSVChub2RlKTsKQEAgLTU4MCwx
MiArNTgwLDE0IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUwKIAog
ICAgIGlmIChpczxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAg
IGF1dG8mIHNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU+KCpub2RlKTsKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB1bnVzZWQuCiAgICAgICAg
IHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHNjcm9sbGVkQ29udGVudHNM
YXllcik7Ci0gICAgCisKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihub2RlKSkgewogICAgICAgICAgICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKICAgICAg
ICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRJbnNldENsaXBMYXllcihpbnNldENsaXBMYXll
cik7CiAgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xh
eWVyKGNvdW50ZXJTY3JvbGxpbmdMYXllcik7CisgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05v
ZGUuc2V0Um9vdENvbnRlbnRzTGF5ZXIocm9vdENvbnRlbnRzTGF5ZXIpOwogICAgICAgICB9CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VY
UE9SVCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50T2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gY2hp
bGRyZW5PZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Tm9kZUxheWVycyhTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5
ZXIqIC8qbGF5ZXIqLywgR3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5ZXIqLyA9
IG51bGxwdHIsIEdyYXBoaWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGluZ0xheWVyKi8gPSBudWxs
cHRyLCBHcmFwaGljc0xheWVyKiAvKmluc2V0Q2xpcExheWVyKi8gPSBudWxscHRyKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlE
LCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qc2Nyb2xsZWRDb250
ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKmNvdW50ZXJTY3JvbGxpbmdM
YXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLyppbnNldENsaXBMYXllciovID0gbnVs
bHB0ciwgR3JhcGhpY3NMYXllciogLypyb290Q29udGVudHNMYXllciovID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxpbmdOb2RlR2VvbWV0cnko
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSYpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRDb25zdHJhaW50ZWROb2RlR2VvbWV0cnko
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI0MDcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg3LDEwICsyODcsMTAgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNv
bgogI2VuZGlmCiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyb290
Q29udGVudExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQorR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50c0xheWVyRm9yRnJhbWVWaWV3
KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJh
bWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJW
aWV3LT5jb21wb3NpdG9yKCkucm9vdENvbnRlbnRMYXllcigpOworICAgICAgICByZXR1cm4gcmVu
ZGVyVmlldy0+Y29tcG9zaXRvcigpLnJvb3RDb250ZW50c0xheWVyKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcm9sbGluZ05vZGVJ
RCBwYXJlbnRPZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBWZWN0b3I8U2Nyb2xsaW5nTm9kZUlEPiBjaGlsZHJlbk9mTm9kZShTY3JvbGxpbmdO
b2RlSUQpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldE5vZGVM
YXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNz
TGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVy
KiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypp
bnNldENsaXBMYXllciovID0gbnVsbHB0cikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5vZGVM
YXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNz
TGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVy
KiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypp
bnNldENsaXBMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypyb290Q29udGVudHNM
YXllciovID0gbnVsbHB0cikgeyB9CiAKICAgICBzdHJ1Y3QgU2Nyb2xsaW5nR2VvbWV0cnkgewog
ICAgICAgICBMYXlvdXRSZWN0IHBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Q7CkBAIC0xODks
NyArMTg5LDcgQEAgcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxp
bmdMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAgICBHcmFwaGljc0xheWVyKiBpbnNl
dENsaXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKLSAgICBHcmFwaGljc0xheWVyKiBy
b290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAgIEdyYXBoaWNzTGF5
ZXIqIHJvb3RDb250ZW50c0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIEdyYXBo
aWNzTGF5ZXIqIGNvbnRlbnRTaGFkb3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAg
ICBHcmFwaGljc0xheWVyKiBoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAg
ICBHcmFwaGljc0xheWVyKiBmb290ZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MDcxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsCiAgICAgLCBtX2ZpeGVkRWxlbWVudHNMYXlv
dXRSZWxhdGl2ZVRvRnJhbWUoc3RhdGVOb2RlLmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUoKSkKICAgICAsIG1fdmlzdWFsVmlld3BvcnRFbmFibGVkKHN0YXRlTm9kZS52aXN1YWxW
aWV3cG9ydEVuYWJsZWQoKSkKIHsKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFJvb3RDb250
ZW50c0xheWVyKSkKKyAgICAgICAgc2V0Um9vdENvbnRlbnRzTGF5ZXIoc3RhdGVOb2RlLnJvb3RD
b250ZW50c0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbigpKSk7CisKICAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KENvdW50
ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIHNldENvdW50ZXJTY3JvbGxpbmdMYXllcihzdGF0
ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRy
ZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAKQEAgLTk5LDYgKzEwMiw3IEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnMKICAgICBzZXRQcm9wZXJ0
eUNoYW5nZWRCaXQoRnJhbWVTY2FsZUZhY3Rvcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0
KEV2ZW50VHJhY2tpbmdSZWdpb24pOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSZWFzb25z
Rm9yU3luY2hyb25vdXNTY3JvbGxpbmcpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSb290
Q29udGVudHNMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbGVkQ29udGVu
dHNMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KENvdW50ZXJTY3JvbGxpbmdMYXll
cik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEluc2V0Q2xpcExheWVyKTsKQEAgLTIxMiw2
ICsyMTYsMTUgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6cwogICAg
IHNldFByb3BlcnR5Q2hhbmdlZChUb3BDb250ZW50SW5zZXQpOwogfQogCit2b2lkIFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRSb290Q29udGVudHNMYXllcihjb25zdCBMYXll
clJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0aW9uKQoreworICAgIGlmIChsYXllclJl
cHJlc2VudGF0aW9uID09IG1fcm9vdENvbnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcm9vdENvbnRlbnRzTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOworICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChSb290Q29udGVudHNMYXllcik7Cit9CisKIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb25zdCBMYXll
clJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0aW9uKQogewogICAgIGlmIChsYXllclJl
cHJlc2VudGF0aW9uID09IG1fY291bnRlclNjcm9sbGluZ0xheWVyKQpAQCAtMzA3LDYgKzMyMCw3
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmQKICAgICBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CiAgICAg
CiAgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNs
dWRlTGF5ZXJJRHMpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb290IGNvbnRlbnRzIGxh
eWVyIElEIiwgbV9yb290Q29udGVudHNMYXllci5sYXllcklEKCkpOwogICAgICAgICB0cy5kdW1w
UHJvcGVydHkoImNvdW50ZXIgc2Nyb2xsaW5nIGxheWVyIElEIiwgbV9jb3VudGVyU2Nyb2xsaW5n
TGF5ZXIubGF5ZXJJRCgpKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJpbnNldCBjbGlwIGxh
eWVyIElEIiwgbV9pbnNldENsaXBMYXllci5sYXllcklEKCkpOwogICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImNvbnRlbnQgc2hhZG93IGxheWVyIElEIiwgbV9jb250ZW50U2hhZG93TGF5ZXIubGF5
ZXJJRCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQwNzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZyYW1lU2NhbGVGYWN0b3IgPSBOdW1TY3JvbGxpbmdTdGF0ZU5vZGVCaXRz
LAogICAgICAgICBFdmVudFRyYWNraW5nUmVnaW9uLAogICAgICAgICBSZWFzb25zRm9yU3luY2hy
b25vdXNTY3JvbGxpbmcsCisgICAgICAgIFJvb3RDb250ZW50c0xheWVyLAogICAgICAgICBTY3Jv
bGxlZENvbnRlbnRzTGF5ZXIsCiAgICAgICAgIENvdW50ZXJTY3JvbGxpbmdMYXllciwKICAgICAg
ICAgSW5zZXRDbGlwTGF5ZXIsCkBAIC05OSw2ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
dG9wQ29udGVudEluc2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3BDb250ZW50SW5zZXQ7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRvcENvbnRlbnRJbnNldChmbG9hdCk7CiAKKyAgICBj
b25zdCBMYXllclJlcHJlc2VudGF0aW9uJiByb290Q29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdENvbnRlbnRzTGF5ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJv
b3RDb250ZW50c0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKwogICAgIC8vIFRo
aXMgaXMgYSBsYXllciBtb3ZlZCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIHNjcm9sbGlu
ZywgZm9yIGV4YW1wbGUgZm9yIGJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZAogICAgIGNvbnN0
IExheWVyUmVwcmVzZW50YXRpb24mIGNvdW50ZXJTY3JvbGxpbmdMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fY291bnRlclNjcm9sbGluZ0xheWVyOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwpAQCAt
MTQ3LDYgKzE1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEFsbFByb3BlcnRpZXNDaGFu
Z2VkKCkgb3ZlcnJpZGU7CiAKKyAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fcm9vdENvbnRlbnRz
TGF5ZXI7CiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsK
ICAgICBMYXllclJlcHJlc2VudGF0aW9uIG1faW5zZXRDbGlwTGF5ZXI7CiAgICAgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiBtX2NvbnRlbnRTaGFkb3dMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU2Ny
b2xsQ29udHJvbGxlciBtX3Njcm9sbENvbnRyb2xsZXI7CiAKICAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9zY3JvbGxMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRl
bnRzTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcm9vdENvbnRlbnRzTGF5ZXI7CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVyOwogICAgIFJldGFp
blB0cjxDQUxheWVyPiBtX2luc2V0Q2xpcExheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBt
X2NvbnRlbnRTaGFkb3dMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDA3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYzoKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKICAgICAgICAgbV9zY3JvbGxM
YXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6Um9vdENvbnRlbnRzTGF5ZXIpKQorICAgICAgICBtX3Jvb3RDb250ZW50c0xh
eWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJvb3RDb250ZW50c0xheWVyKCk7CiAKICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKICAgICAgICAgbV9jb3VudGVy
U2Nyb2xsaW5nTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVy
KCk7CkBAIC00MzksMTEgKzQzOSwxMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWM6CiAgICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyLmdldCgpLnBvc2l0aW9u
ID0gZml4ZWRQb3NpdGlvblJlY3QubG9jYXRpb24oKTsKIAogICAgIGZsb2F0IHRvcENvbnRlbnRJ
bnNldCA9IHRoaXMtPnRvcENvbnRlbnRJbnNldCgpOwotICAgIGlmIChtX2luc2V0Q2xpcExheWVy
ICYmIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyICYmIHRvcENvbnRlbnRJbnNldCkgeworICAgIGlm
IChtX2luc2V0Q2xpcExheWVyICYmIG1fcm9vdENvbnRlbnRzTGF5ZXIgJiYgdG9wQ29udGVudElu
c2V0KSB7CiAgICAgICAgIG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBGbG9hdFBv
aW50KG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCkucG9zaXRpb24ueCwgRnJhbWVWaWV3Ojp5UG9zaXRp
b25Gb3JJbnNldENsaXBMYXllcihwb3NpdGlvbiwgdG9wQ29udGVudEluc2V0KSk7Ci0gICAgICAg
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBvc2l0aW9uID0gRnJhbWVWaWV3Ojpwb3Np
dGlvbkZvclJvb3RDb250ZW50TGF5ZXIocG9zaXRpb24sIHNjcm9sbE9yaWdpbigpLCB0b3BDb250
ZW50SW5zZXQsIGhlYWRlckhlaWdodCgpKTsKKyAgICAgICAgbV9yb290Q29udGVudHNMYXllci5n
ZXQoKS5wb3NpdGlvbiA9IEZyYW1lVmlldzo6cG9zaXRpb25Gb3JSb290Q29udGVudExheWVyKHBv
c2l0aW9uLCBzY3JvbGxPcmlnaW4oKSwgdG9wQ29udGVudEluc2V0LCBoZWFkZXJIZWlnaHQoKSk7
CiAgICAgICAgIGlmIChtX2NvbnRlbnRTaGFkb3dMYXllcikKLSAgICAgICAgICAgIG1fY29udGVu
dFNoYWRvd0xheWVyLmdldCgpLnBvc2l0aW9uID0gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0
KCkucG9zaXRpb247CisgICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci5nZXQoKS5wb3Np
dGlvbiA9IG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkucG9zaXRpb247CiAgICAgfQogCiAgICAg
aWYgKG1faGVhZGVyTGF5ZXIgfHwgbV9mb290ZXJMYXllcikgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9u
IDI0MDcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmRpZENoYW5nZVBsYQogICAgIGlmIChhdXRvIG5vZGVJRCA9IGJhY2tpbmct
PnNjcm9sbGluZ05vZGVJREZvclJvbGUoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6U2Nyb2xsaW5n
KSkgewogICAgICAgICAvLyBGSVhNRTogd291bGQgYmUgbmljZSB0byBub3QgaGF2ZSB0byBzcGVj
aWFsLWNhc2UgdGhlIHJvb3QuCiAgICAgICAgIGlmIChsYXllci5pc1JlbmRlclZpZXdMYXllcigp
KQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobm9kZUlE
LCBtX3Njcm9sbExheWVyLmdldCgpLCBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCksIGZpeGVkUm9v
dEJhY2tncm91bmRMYXllcigpLCBjbGlwTGF5ZXIoKSk7CisgICAgICAgICAgICBzY3JvbGxpbmdD
b29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2RlSUQsIG1fc2Nyb2xsTGF5ZXIuZ2V0KCksIG51
bGxwdHIsIGZpeGVkUm9vdEJhY2tncm91bmRMYXllcigpLCBjbGlwTGF5ZXIoKSwgbV9yb290Q29u
dGVudHNMYXllci5nZXQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNjcm9sbGluZ0Nv
b3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJRCwgYmFja2luZy0+c2Nyb2xsaW5nTGF5ZXIo
KSwgYmFja2luZy0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpKTsKICAgICB9CkBAIC03NjAsOCAr
NzYwLDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvcwogICAgICAg
ICAgICAgLy8gY29tcG9zaXRlZCBsYXllcnMgdGhhdCB3ZSBkaWRuJ3QgaGl0IGluIG91ciB0cmF2
ZXJzYWwgKGUuZy4gYmVjYXVzZSBvZiB2aXNpYmlsaXR5OmhpZGRlbikuCiAgICAgICAgICAgICBp
ZiAoY2hpbGRMaXN0LmlzRW1wdHkoKSAmJiAhbmVlZHNDb21wb3NpdGluZ0ZvckNvbnRlbnRPck92
ZXJsYXlzKCkpCiAgICAgICAgICAgICAgICAgZGVzdHJveVJvb3RMYXllcigpOwotICAgICAgICAg
ICAgZWxzZSBpZiAobV9yb290Q29udGVudExheWVyKQotICAgICAgICAgICAgICAgIG1fcm9vdENv
bnRlbnRMYXllci0+c2V0Q2hpbGRyZW4oV1RGTW92ZShjaGlsZExpc3QpKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKG1fcm9vdENvbnRlbnRzTGF5ZXIpCisgICAgICAgICAgICAgICAgbV9yb290Q29u
dGVudHNMYXllci0+c2V0Q2hpbGRyZW4oV1RGTW92ZShjaGlsZExpc3QpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtNzg0LDcgKzc4NCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVDb21wb3MKICAgICAgICAgTE9HKENvbXBvc2l0aW5nLCAiUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyAtIHBvc3QiKTsKICAgICAgICAgc2hvd1BhaW50
T3JkZXJUcmVlKG1fcmVuZGVyVmlldy5sYXllcigpKTsKICAgICAgICAgTE9HKENvbXBvc2l0aW5n
LCAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyAtIEdyYXBo
aWNzTGF5ZXJzIHBvc3QsIGNvbnRlbnRMYXllcnNDb3VudCAlZCIsIG1fY29udGVudExheWVyc0Nv
dW50KTsKLSAgICAgICAgc2hvd0dyYXBoaWNzTGF5ZXJUcmVlKG1fcm9vdENvbnRlbnRMYXllci5n
ZXQoKSk7CisgICAgICAgIHNob3dHcmFwaGljc0xheWVyVHJlZShtX3Jvb3RDb250ZW50c0xheWVy
LmdldCgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtMTUxNSw3ICsxNTE1LDcgQEAgc3RhdGljIFJl
bmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyRgogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dXBkYXRlUm9vdENvbnRlbnRMYXllckNsaXBwaW5nKCkKIHsKLSAgICBtX3Jvb3RDb250
ZW50TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMoIW1fcmVuZGVyVmlldy5zZXR0aW5ncygpLmJhY2tn
cm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkpOworICAgIG1fcm9vdENvbnRlbnRzTGF5ZXIt
PnNldE1hc2tzVG9Cb3VuZHMoIW1fcmVuZGVyVmlldy5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91
bGRFeHRlbmRCZXlvbmRQYWdlKCkpOwogfQogCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYgbGF5ZXIsIFJlcXVpcmVzQ29tcG9zaXRpbmdEYXRh
JiBxdWVyeURhdGEsIENvbXBvc2l0aW5nQ2hhbmdlUmVwYWludCBzaG91bGRSZXBhaW50LCBCYWNr
aW5nUmVxdWlyZWQgYmFja2luZ1JlcXVpcmVkKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgU3RyaW5n
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJUcmVlQQogewogICAgIHVwZGF0ZUNvbXBvc2l0
aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZTo6QWZ0ZXJMYXlvdXQpOwogCi0gICAgaWYg
KCFtX3Jvb3RDb250ZW50TGF5ZXIpCisgICAgaWYgKCFtX3Jvb3RDb250ZW50c0xheWVyKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXModHJ1
ZSk7CkBAIC0xOTE0LDcgKzE5MTQsNyBAQCBTdHJpbmcgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjps
YXllclRyZWVBCiAKICAgICAvLyBXZSBza2lwIGR1bXBpbmcgdGhlIHNjcm9sbCBhbmQgY2xpcCBs
YXllcnMgdG8ga2VlcCBsYXllclRyZWVBc1RleHQgb3V0cHV0CiAgICAgLy8gc2ltaWxhciBiZXR3
ZWVuIHBsYXRmb3Jtcy4KLSAgICBTdHJpbmcgbGF5ZXJUcmVlVGV4dCA9IG1fcm9vdENvbnRlbnRM
YXllci0+bGF5ZXJUcmVlQXNUZXh0KGxheWVyVHJlZUJlaGF2aW9yKTsKKyAgICBTdHJpbmcgbGF5
ZXJUcmVlVGV4dCA9IG1fcm9vdENvbnRlbnRzTGF5ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRy
ZWVCZWhhdmlvcik7CiAKICAgICAvLyBEdW1wIGFuIGVtcHR5IGxheWVyIHRyZWUgb25seSBpZiB0
aGUgb25seSBjb21wb3NpdGVkIGxheWVyIGlzIHRoZSBtYWluIGZyYW1lJ3MgdGlsZWQgYmFja2lu
ZywKICAgICAvLyBzbyB0aGF0IHRlc3RzIGV4cGVjdGluZyB1cyB0byBkcm9wIG91dCBvZiBhY2Nl
bGVyYXRlZCBjb21wb3NpdGluZyB3aGVuIHRoZXJlIGFyZSBubyBsYXllcnMgc3VjY2VlZC4KQEAg
LTIwMTEsNyArMjAxMSw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cm8KIHsKICAgICBpZiAobV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyKQogICAgICAgICByZXR1
cm4gbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExheWVyLmdldCgpOwotICAgIHJldHVybiBtX3Jvb3RD
b250ZW50TGF5ZXIuZ2V0KCk7CisgICAgcmV0dXJuIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCk7
CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXRJc0luV2luZG93KGJvb2wgaXNJ
bldpbmRvdykKQEAgLTIwNjksMTggKzIwNjksMTggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmNsZWFyQmFja2luZwogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9v
dExheWVyUG9zaXRpb24oKQogewotICAgIGlmIChtX3Jvb3RDb250ZW50TGF5ZXIpIHsKLSAgICAg
ICAgbV9yb290Q29udGVudExheWVyLT5zZXRTaXplKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5j
b250ZW50c1NpemUoKSk7Ci0gICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0UG9zaXRpb24o
bV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBvc2l0aW9uRm9yUm9vdENvbnRlbnRMYXllcigpKTsK
LSAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0Qo
KSk7CisgICAgaWYgKG1fcm9vdENvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9yb290Q29udGVu
dHNMYXllci0+c2V0U2l6ZShtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuY29udGVudHNTaXplKCkp
OworICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihtX3JlbmRlclZpZXcu
ZnJhbWVWaWV3KCkucG9zaXRpb25Gb3JSb290Q29udGVudExheWVyKCkpOworICAgICAgICBtX3Jv
b3RDb250ZW50c0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgfQog
CiAgICAgdXBkYXRlU2Nyb2xsTGF5ZXJDbGlwcGluZygpOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9C
QU5ESU5HKQotICAgIGlmIChtX2NvbnRlbnRTaGFkb3dMYXllciAmJiBtX3Jvb3RDb250ZW50TGF5
ZXIpIHsKLSAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXItPnNldFBvc2l0aW9uKG1fcm9vdENv
bnRlbnRMYXllci0+cG9zaXRpb24oKSk7Ci0gICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5z
ZXRTaXplKG1fcm9vdENvbnRlbnRMYXllci0+c2l6ZSgpKTsKKyAgICBpZiAobV9jb250ZW50U2hh
ZG93TGF5ZXIgJiYgbV9yb290Q29udGVudHNMYXllcikgeworICAgICAgICBtX2NvbnRlbnRTaGFk
b3dMYXllci0+c2V0UG9zaXRpb24obV9yb290Q29udGVudHNMYXllci0+cG9zaXRpb24oKSk7Cisg
ICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5zZXRTaXplKG1fcm9vdENvbnRlbnRzTGF5ZXIt
PnNpemUoKSk7CiAgICAgfQogCiAgICAgdXBkYXRlTGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEobV9s
YXllckZvclRvcE92ZXJoYW5nQXJlYSAhPSBudWxscHRyKTsKQEAgLTMxMTksNyArMzExOSw3IEBA
IEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXAKICAgICBpZiAoIW1fbGF5
ZXJGb3JUb3BPdmVyaGFuZ0FyZWEpIHsKICAgICAgICAgbV9sYXllckZvclRvcE92ZXJoYW5nQXJl
YSA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7
CiAgICAgICAgIG1fbGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEtPnNldE5hbWUoInRvcCBvdmVyaGFu
ZyIpOwotICAgICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGlsZEJlbG93KCptX2xheWVyRm9yVG9w
T3ZlcmhhbmdBcmVhLCBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCkpOworICAgICAgICBtX3Njcm9s
bExheWVyLT5hZGRDaGlsZEJlbG93KCptX2xheWVyRm9yVG9wT3ZlcmhhbmdBcmVhLCBtX3Jvb3RD
b250ZW50c0xheWVyLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9sYXllckZvclRvcE92
ZXJoYW5nQXJlYS5nZXQoKTsKQEAgLTMxMzgsMTAgKzMxMzgsMTAgQEAgR3JhcGhpY3NMYXllciog
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cAogICAgIGlmICghbV9sYXllckZvckJvdHRvbU92ZXJo
YW5nQXJlYSkgewogICAgICAgICBtX2xheWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhID0gR3JhcGhp
Y3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICAgICAgICAg
bV9sYXllckZvckJvdHRvbU92ZXJoYW5nQXJlYS0+c2V0TmFtZSgiYm90dG9tIG92ZXJoYW5nIik7
Ci0gICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkQmVsb3coKm1fbGF5ZXJGb3JCb3R0b21P
dmVyaGFuZ0FyZWEsIG1fcm9vdENvbnRlbnRMYXllci5nZXQoKSk7CisgICAgICAgIG1fc2Nyb2xs
TGF5ZXItPmFkZENoaWxkQmVsb3coKm1fbGF5ZXJGb3JCb3R0b21PdmVyaGFuZ0FyZWEsIG1fcm9v
dENvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAgIH0KIAotICAgIG1fbGF5ZXJGb3JCb3R0b21PdmVy
aGFuZ0FyZWEtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgbV9yb290Q29udGVudExheWVyLT5z
aXplKCkuaGVpZ2h0KCkgKyBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaGVhZGVySGVpZ2h0KCkK
KyAgICBtX2xheWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50
KDAsIG1fcm9vdENvbnRlbnRzTGF5ZXItPnNpemUoKS5oZWlnaHQoKSArIG1fcmVuZGVyVmlldy5m
cmFtZVZpZXcoKS5oZWFkZXJIZWlnaHQoKQogICAgICAgICArIG1fcmVuZGVyVmlldy5mcmFtZVZp
ZXcoKS5mb290ZXJIZWlnaHQoKSArIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS50b3BDb250ZW50
SW5zZXQoKSkpOwogICAgIHJldHVybiBtX2xheWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhLmdldCgp
OwogfQpAQCAtMzE2Niw3ICszMTY2LDcgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cAogICAgIGlmICghbV9sYXllckZvckhlYWRlcikgewogICAgICAgICBtX2xheWVy
Rm9ySGVhZGVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCks
ICp0aGlzKTsKICAgICAgICAgbV9sYXllckZvckhlYWRlci0+c2V0TmFtZSgiaGVhZGVyIik7Ci0g
ICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkQWJvdmUoKm1fbGF5ZXJGb3JIZWFkZXIsIG1f
cm9vdENvbnRlbnRMYXllci5nZXQoKSk7CisgICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxk
QWJvdmUoKm1fbGF5ZXJGb3JIZWFkZXIsIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAg
ICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuYWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhE
aWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5ZXIpOwogICAgIH0KIApAQCAtMzIwMywxMCArMzIwMywx
MCBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwCiAgICAgaWYgKCFt
X2xheWVyRm9yRm9vdGVyKSB7CiAgICAgICAgIG1fbGF5ZXJGb3JGb290ZXIgPSBHcmFwaGljc0xh
eWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwogICAgICAgICBtX2xh
eWVyRm9yRm9vdGVyLT5zZXROYW1lKCJmb290ZXIiKTsKLSAgICAgICAgbV9zY3JvbGxMYXllci0+
YWRkQ2hpbGRBYm92ZSgqbV9sYXllckZvckZvb3RlciwgbV9yb290Q29udGVudExheWVyLmdldCgp
KTsKKyAgICAgICAgbV9zY3JvbGxMYXllci0+YWRkQ2hpbGRBYm92ZSgqbV9sYXllckZvckZvb3Rl
ciwgbV9yb290Q29udGVudHNMYXllci5nZXQoKSk7CiAgICAgfQogCi0gICAgZmxvYXQgdG90YWxD
b250ZW50SGVpZ2h0ID0gbV9yb290Q29udGVudExheWVyLT5zaXplKCkuaGVpZ2h0KCkgKyBtX3Jl
bmRlclZpZXcuZnJhbWVWaWV3KCkuaGVhZGVySGVpZ2h0KCkgKyBtX3JlbmRlclZpZXcuZnJhbWVW
aWV3KCkuZm9vdGVySGVpZ2h0KCk7CisgICAgZmxvYXQgdG90YWxDb250ZW50SGVpZ2h0ID0gbV9y
b290Q29udGVudHNMYXllci0+c2l6ZSgpLmhlaWdodCgpICsgbV9yZW5kZXJWaWV3LmZyYW1lVmll
dygpLmhlYWRlckhlaWdodCgpICsgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmZvb3RlckhlaWdo
dCgpOwogICAgIG1fbGF5ZXJGb3JGb290ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgRnJh
bWVWaWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJMYXllcihtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCku
c2Nyb2xsUG9zaXRpb24oKSwKICAgICAgICAgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnRvcENv
bnRlbnRJbnNldCgpLCB0b3RhbENvbnRlbnRIZWlnaHQsIG1fcmVuZGVyVmlldy5mcmFtZVZpZXco
KS5mb290ZXJIZWlnaHQoKSkpKTsKICAgICBtX2xheWVyRm9yRm9vdGVyLT5zZXRBbmNob3JQb2lu
dChGbG9hdFBvaW50M0QoKSk7CkBAIC0zMzMyLDEyICszMzMyLDEyIEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVPdmVyZmwKICAgICAgICAgaWYgKCFtX2NvbnRlbnRTaGFkb3dM
YXllcikgewogICAgICAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXIgPSBHcmFwaGljc0xheWVy
OjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwogICAgICAgICAgICAgbV9j
b250ZW50U2hhZG93TGF5ZXItPnNldE5hbWUoImNvbnRlbnQgc2hhZG93Iik7Ci0gICAgICAgICAg
ICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0U2l6ZShtX3Jvb3RDb250ZW50TGF5ZXItPnNpemUo
KSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0UG9zaXRpb24obV9yb290
Q29udGVudExheWVyLT5wb3NpdGlvbigpKTsKKyAgICAgICAgICAgIG1fY29udGVudFNoYWRvd0xh
eWVyLT5zZXRTaXplKG1fcm9vdENvbnRlbnRzTGF5ZXItPnNpemUoKSk7CisgICAgICAgICAgICBt
X2NvbnRlbnRTaGFkb3dMYXllci0+c2V0UG9zaXRpb24obV9yb290Q29udGVudHNMYXllci0+cG9z
aXRpb24oKSk7CiAgICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludDNEKCkpOwogICAgICAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXItPnNl
dEN1c3RvbUFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6U2Nyb2xs
aW5nU2hhZG93KTsKIAotICAgICAgICAgICAgbV9zY3JvbGxMYXllci0+YWRkQ2hpbGRCZWxvdygq
bV9jb250ZW50U2hhZG93TGF5ZXIsIG1fcm9vdENvbnRlbnRMYXllci5nZXQoKSk7CisgICAgICAg
ICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGlsZEJlbG93KCptX2NvbnRlbnRTaGFkb3dMYXllciwg
bV9yb290Q29udGVudHNMYXllci5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAg
ICAgR3JhcGhpY3NMYXllcjo6dW5wYXJlbnRBbmRDbGVhcihtX2NvbnRlbnRTaGFkb3dMYXllcik7
CkBAIC0zNDA4LDE4ICszNDA4LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1
cmVSb290TGEKICAgICBpZiAoZXhwZWN0ZWRBdHRhY2htZW50ID09IG1fcm9vdExheWVyQXR0YWNo
bWVudCkKICAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9yb290Q29udGVudExheWVyKSB7
Ci0gICAgICAgIG1fcm9vdENvbnRlbnRMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFw
aGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7Ci0gICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+
c2V0TmFtZSgiY29udGVudCByb290Iik7CisgICAgaWYgKCFtX3Jvb3RDb250ZW50c0xheWVyKSB7
CisgICAgICAgIG1fcm9vdENvbnRlbnRzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3Jh
cGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOworICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVy
LT5zZXROYW1lKCJjb250ZW50IHJvb3QiKTsKICAgICAgICAgSW50UmVjdCBvdmVyZmxvd1JlY3Qg
PSBzbmFwcGVkSW50UmVjdChtX3JlbmRlclZpZXcubGF5b3V0T3ZlcmZsb3dSZWN0KCkpOwotICAg
ICAgICBtX3Jvb3RDb250ZW50TGF5ZXItPnNldFNpemUoRmxvYXRTaXplKG92ZXJmbG93UmVjdC5t
YXhYKCksIG92ZXJmbG93UmVjdC5tYXhZKCkpKTsKLSAgICAgICAgbV9yb290Q29udGVudExheWVy
LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOworICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVy
LT5zZXRTaXplKEZsb2F0U2l6ZShvdmVyZmxvd1JlY3QubWF4WCgpLCBvdmVyZmxvd1JlY3QubWF4
WSgpKSk7CisgICAgICAgIG1fcm9vdENvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAvLyBQYWdlIHNjYWxl
IGlzIGFwcGxpZWQgYWJvdmUgdGhpcyBvbiBpT1MsIHNvIHdlJ2xsIGp1c3Qgc2F5IHRoYXQgb3Vy
IHJvb3QgbGF5ZXIgYXBwbGllcyBpdC4KICAgICAgICAgYXV0byYgZnJhbWUgPSBtX3JlbmRlclZp
ZXcuZnJhbWVWaWV3KCkuZnJhbWUoKTsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgICAgICBtX3Jvb3RDb250ZW50TGF5ZXItPnNldEFwcGxpZXNQYWdlU2NhbGUoKTsK
KyAgICAgICAgICAgIG1fcm9vdENvbnRlbnRzTGF5ZXItPnNldEFwcGxpZXNQYWdlU2NhbGUoKTsK
ICNlbmRpZgogCiAgICAgICAgIC8vIE5lZWQgdG8gY2xpcCB0byBwcmV2ZW50IHRyYW5zZm9ybWVk
IGNvbnRlbnQgc2hvd2luZyBvdXRzaWRlIHRoaXMgZnJhbWUKQEAgLTM0NTcsNyArMzQ1Nyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGEKICAgICAgICAgICAgICAg
ICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPmFkZENoaWxkKCptX2NsaXBMYXllcik7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkKCptX3Jv
b3RDb250ZW50TGF5ZXIpOworICAgICAgICAgICAgbV9zY3JvbGxMYXllci0+YWRkQ2hpbGQoKm1f
cm9vdENvbnRlbnRzTGF5ZXIpOwogCiAgICAgICAgICAgICB1cGRhdGVTY3JvbGxMYXllckNsaXBw
aW5nKCk7CiAgICAgICAgICAgICB1cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCk7CkBAIC0z
NDg0LDcgKzM0ODQsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9vdExh
CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9vdExheWVyKCkKIHsKLSAg
ICBpZiAoIW1fcm9vdENvbnRlbnRMYXllcikKKyAgICBpZiAoIW1fcm9vdENvbnRlbnRzTGF5ZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGRldGFjaFJvb3RMYXllcigpOwpAQCAtMzUyMCwxNCAr
MzUyMCwxNCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMCiAgICAg
ICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50QW5kQ2xlYXIobV9zY3JvbGxMYXllcik7CiAgICAg
fQogICAgIEFTU0VSVCghbV9zY3JvbGxMYXllcik7Ci0gICAgR3JhcGhpY3NMYXllcjo6dW5wYXJl
bnRBbmRDbGVhcihtX3Jvb3RDb250ZW50TGF5ZXIpOworICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFy
ZW50QW5kQ2xlYXIobV9yb290Q29udGVudHNMYXllcik7CiAKICAgICBtX2xheWVyVXBkYXRlciA9
IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphdHRhY2hSb290TGF5
ZXIoUm9vdExheWVyQXR0YWNobWVudCBhdHRhY2htZW50KQogewotICAgIGlmICghbV9yb290Q29u
dGVudExheWVyKQorICAgIGlmICghbV9yb290Q29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTE9HKENvbXBvc2l0aW5nLCAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yICVwIGF0dGFj
aFJvb3RMYXllciAlZCIsIHRoaXMsIGF0dGFjaG1lbnQpOwpAQCAtMzU2Myw3ICszNTYzLDcgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmF0dGFjaFJvb3RMYQogCiB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6ZGV0YWNoUm9vdExheWVyKCkKIHsKLSAgICBpZiAoIW1fcm9vdENvbnRl
bnRMYXllciB8fCBtX3Jvb3RMYXllckF0dGFjaG1lbnQgPT0gUm9vdExheWVyVW5hdHRhY2hlZCkK
KyAgICBpZiAoIW1fcm9vdENvbnRlbnRzTGF5ZXIgfHwgbV9yb290TGF5ZXJBdHRhY2htZW50ID09
IFJvb3RMYXllclVuYXR0YWNoZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9y
b290TGF5ZXJBdHRhY2htZW50KSB7CkBAIC0zNTczLDcgKzM1NzMsNyBAQCB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6ZGV0YWNoUm9vdExhCiAgICAgICAgIGlmIChtX292ZXJmbG93Q29udHJv
bHNIb3N0TGF5ZXIpCiAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPnJl
bW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yb290Q29udGVu
dExheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgICAgICBtX3Jvb3RDb250ZW50c0xh
eWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAKICAgICAgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVu
dCA9IG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAg
b3duZXJFbGVtZW50LT5zY2hlZHVsZUludmFsaWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24o
KTsKQEAgLTM2MjYsNyArMzYyNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290
TGF5ZXJBdHQKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEdyYXBoaWNzTGF5ZXI+IG92ZXJs
YXlIb3N0ID0gcGFnZSgpLnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmxheWVyV2l0aERvY3VtZW50
T3ZlcmxheXMoKTsKLSAgICBtX3Jvb3RDb250ZW50TGF5ZXItPmFkZENoaWxkKFdURk1vdmUob3Zl
cmxheUhvc3QpKTsKKyAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5hZGRDaGlsZChXVEZNb3ZlKG92
ZXJsYXlIb3N0KSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlJRnJh
bWVzT2ZDb21wb3NpdGluZ0NoYW5nZSgpCkBAIC00MDAxLDcgKzQwMDEsNyBAQCBTY3JvbGxpbmdO
b2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
Y2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXIpCi0gICAgICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhuZXdOb2RlSUQsIG1fc2Nyb2xsTGF5
ZXIuZ2V0KCksIG1fcm9vdENvbnRlbnRMYXllci5nZXQoKSwgZml4ZWRSb290QmFja2dyb3VuZExh
eWVyKCksIGNsaXBMYXllcigpKTsKKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5z
ZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgbV9zY3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwgZml4
ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVy
LmdldCgpKTsKIAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFn
czo6TGF5ZXJHZW9tZXRyeSkgewogICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNj
cm9sbGluZ0dlb21ldHJ5IHNjcm9sbGluZ0dlb21ldHJ5OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMjQwNzE1
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NM
YXllciogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyLmdldCgpOyB9
CiAgICAgR3JhcGhpY3NMYXllciogY2xpcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwTGF5
ZXIuZ2V0KCk7IH0KLSAgICBHcmFwaGljc0xheWVyKiByb290Q29udGVudExheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yb290Q29udGVudExheWVyLmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciog
cm9vdENvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RDb250ZW50c0xheWVyLmdl
dCgpOyB9CiAKICAgICBHcmFwaGljc0xheWVyKiBsYXllckZvckNsaXBwaW5nKCkgY29uc3QgeyAg
cmV0dXJuIG1fY2xpcExheWVyID8gbV9jbGlwTGF5ZXIuZ2V0KCkgOiBtX3Njcm9sbExheWVyLmdl
dCgpOyAgfQogCkBAIC01MzQsNyArNTM0LDcgQEAgcHJpdmF0ZToKICAgICAKIHByaXZhdGU6CiAg
ICAgUmVuZGVyVmlldyYgbV9yZW5kZXJWaWV3OwotICAgIFJlZlB0cjxHcmFwaGljc0xheWVyPiBt
X3Jvb3RDb250ZW50TGF5ZXI7CisgICAgUmVmUHRyPEdyYXBoaWNzTGF5ZXI+IG1fcm9vdENvbnRl
bnRzTGF5ZXI7CiAgICAgVGltZXIgbV91cGRhdGVDb21wb3NpdGluZ0xheWVyc1RpbWVyOwogCiAg
ICAgQ2hyb21lQ2xpZW50OjpDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBtX2NvbXBvc2l0aW5nVHJp
Z2dlcnMgeyBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnQ6OkNvbXBvc2l0aW5nVHJpZ2dlckZsYWdz
PihDaHJvbWVDbGllbnQ6OkFsbFRyaWdnZXJzKSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360723</attachid>
            <date>2019-01-31 06:54:35 -0800</date>
            <delta_ts>2019-01-31 11:39:44 -0800</delta_ts>
            <desc>patch</desc>
            <filename>root-content-layer-rename-6.patch</filename>
            <type>text/plain</type>
            <size>32210</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MDc3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE5LTAxLTMxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDYWxsIHRoZSBmcmFtZSBtYWlu
IGNvbnRlbnRzIGxheWVyICJyb290Q29udGVudHNMYXllciIgY29uc2lzdGVudGx5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MDg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBjdXJyZW50
bHkgY2FsbGVkICJyb290Q29udGVudExheWVyIiBpbiB0aGUgY29tcG9zaXRvciBhbmQgInNjcm9s
bGVkQ29udGVudHNMYXllciIgaW4gdGhlIHNjcm9sbGluZyB0cmVlLgorICAgICAgICBXZSB3YW50
IHRvIHJlc2VydmUgdGVybSAic2Nyb2xsZWRDb250ZW50c0xheWVyIiB0byBtZWFuIHRoZSBkaXJl
Y3QgY2hpbGQgbGF5ZXIgb2YgdGhlICBzY3JvbGwgY29udGFpbmVyIGxheWVyCisgICAgICAgIHdp
dGhvdXQgYW55IHBvc2l0aW9uaW5nIG9kZGl0aWVzICh3aGljaCB0aGlzIGlzbid0KS4KKworICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Um9vdExh
eWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OnJlY29uY2lsZVNjcm9sbGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXllcnMpOgorCisgICAgICAgIFNldCB0aGUgcm9v
dENvbnRlbnRzTGF5ZXIgZm9yIGZyYW1lLiBJdCBpcyBvbmx5IHVzZWQgYnkgdGhlIE1hYyBmcmFt
ZSBzY3JvbGxpbmcgY29kZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6cm9v
dENvbnRlbnRzTGF5ZXJGb3JGcmFtZVZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUxheWVycyk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OlNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRBbGxQcm9wZXJ0aWVzQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6c2V0Um9vdENvbnRl
bnRzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGU6OmR1bXBQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oOgorCisgICAgICAgIEludHJvZHVjZSBy
b290Q29udGVudExheWVyIGZvciBmcmFtZXMgb25seS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmg6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpj
b21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorCisgICAg
ICAgIFN3aXRjaCB0byB1c2luZyByb290Q29udGVudHNMYXllci4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpkaWRDaGFuZ2VQbGF0Zm9ybUxheWVyRm9yTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVJvb3RD
b250ZW50TGF5ZXJDbGlwcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmxheWVyVHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJvb3RHcmFwaGljc0xheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvclRvcE92ZXJoYW5n
QXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxh
eWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJGb3JIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllckZvckZvb3Rlcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXN0cm95Um9v
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6YXR0YWNo
Um9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0
YWNoUm9vdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cm9vdExheWVyQXR0YWNobWVudENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVTY3JvbGxpbmdOb2RlRm9yU2Nyb2xsaW5nUm9sZSk6CisKKyAg
ICAgICAgUGFzcyByb290Q29udGVudHNMYXllciBzZXBhcmF0ZWx5IGZvciBmcmFtZXMgb25seS4K
KyAgICAgICAgUGFzcyBudWxsIGFzIGZyYW1lIHNjcm9sbGVkQ29udGVudHNMYXllciB1bnRpbCB0
aGVzZSBhcmUgcmVhcnJhbmdlZCAoaXQgaXMgbm90IHVzZWQpLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorCiAyMDE5LTAxLTMxICBDaHJpcyBGbGVpemFj
aCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogY2Fj
aGUgdW5kZXIgV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRm
b3JtTm90aWZpY2F0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3lu
Y1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkocmV2aXNpb24gMjQw
NzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEFzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmllCiAKICAgICBhdXRvKiBub2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KG1fc2Nyb2xsaW5nU3RhdGVUcmVl
LT5zdGF0ZU5vZGVGb3JJRChmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpKSk7CiAgICAgbm9kZS0+
c2V0TGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7Ci0gICAgbm9kZS0+
c2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHJvb3RDb250ZW50TGF5ZXJGb3JGcmFtZVZpZXcoZnJh
bWVWaWV3KSk7CisgICAgbm9kZS0+c2V0Um9vdENvbnRlbnRzTGF5ZXIocm9vdENvbnRlbnRzTGF5
ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CiAgICAgbm9kZS0+c2V0Q291bnRlclNjcm9sbGlu
Z0xheWVyKGNvdW50ZXJTY3JvbGxpbmdMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKICAg
ICBub2RlLT5zZXRJbnNldENsaXBMYXllcihpbnNldENsaXBMYXllckZvckZyYW1lVmlldyhmcmFt
ZVZpZXcpKTsKICAgICBub2RlLT5zZXRDb250ZW50U2hhZG93TGF5ZXIoY29udGVudFNoYWRvd0xh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVjb25jaWwKICAgICBhdXRvKiBjb3VudGVyU2Nyb2xs
aW5nTGF5ZXIgPSBjb3VudGVyU2Nyb2xsaW5nTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KTsK
ICAgICBhdXRvKiBpbnNldENsaXBMYXllciA9IGluc2V0Q2xpcExheWVyRm9yRnJhbWVWaWV3KGZy
YW1lVmlldyk7CiAgICAgYXV0byogY29udGVudFNoYWRvd0xheWVyID0gY29udGVudFNoYWRvd0xh
eWVyRm9yRnJhbWVWaWV3KGZyYW1lVmlldyk7Ci0gICAgYXV0byogc2Nyb2xsZWRDb250ZW50c0xh
eWVyID0gcm9vdENvbnRlbnRMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpOworICAgIGF1dG8q
IHJvb3RDb250ZW50c0xheWVyID0gcm9vdENvbnRlbnRzTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVW
aWV3KTsKICAgICBhdXRvKiBoZWFkZXJMYXllciA9IGhlYWRlckxheWVyRm9yRnJhbWVWaWV3KGZy
YW1lVmlldyk7CiAgICAgYXV0byogZm9vdGVyTGF5ZXIgPSBmb290ZXJMYXllckZvckZyYW1lVmll
dyhmcmFtZVZpZXcpOwogCkBAIC00NDEsOCArNDQxLDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpyZWNvbmNpbAogICAgICAgICAgICAgaW5zZXRDbGlwTGF5ZXItPnNldFBvc2l0
aW9uKHBvc2l0aW9uRm9ySW5zZXRDbGlwTGF5ZXIpOwogICAgICAgICBpZiAoY29udGVudFNoYWRv
d0xheWVyKQogICAgICAgICAgICAgY29udGVudFNoYWRvd0xheWVyLT5zZXRQb3NpdGlvbihwb3Np
dGlvbkZvckNvbnRlbnRzTGF5ZXIpOwotICAgICAgICBpZiAoc2Nyb2xsZWRDb250ZW50c0xheWVy
KQotICAgICAgICAgICAgc2Nyb2xsZWRDb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlv
bkZvckNvbnRlbnRzTGF5ZXIpOworICAgICAgICBpZiAocm9vdENvbnRlbnRzTGF5ZXIpCisgICAg
ICAgICAgICByb290Q29udGVudHNMYXllci0+c2V0UG9zaXRpb24ocG9zaXRpb25Gb3JDb250ZW50
c0xheWVyKTsKICAgICAgICAgaWYgKGhlYWRlckxheWVyKQogICAgICAgICAgICAgaGVhZGVyTGF5
ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uRm9ySGVhZGVyTGF5ZXIpOwogICAgICAgICBpZiAoZm9v
dGVyTGF5ZXIpCkBAIC00NTUsOCArNDU1LDggQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZWNvbmNpbAogICAgICAgICAgICAgaW5zZXRDbGlwTGF5ZXItPnN5bmNQb3NpdGlvbihw
b3NpdGlvbkZvckluc2V0Q2xpcExheWVyKTsKICAgICAgICAgaWYgKGNvbnRlbnRTaGFkb3dMYXll
cikKICAgICAgICAgICAgIGNvbnRlbnRTaGFkb3dMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9u
Rm9yQ29udGVudHNMYXllcik7Ci0gICAgICAgIGlmIChzY3JvbGxlZENvbnRlbnRzTGF5ZXIpCi0g
ICAgICAgICAgICBzY3JvbGxlZENvbnRlbnRzTGF5ZXItPnN5bmNQb3NpdGlvbihwb3NpdGlvbkZv
ckNvbnRlbnRzTGF5ZXIpOworICAgICAgICBpZiAocm9vdENvbnRlbnRzTGF5ZXIpCisgICAgICAg
ICAgICByb290Q29udGVudHNMYXllci0+c3luY1Bvc2l0aW9uKHBvc2l0aW9uRm9yQ29udGVudHNM
YXllcik7CiAgICAgICAgIGlmIChoZWFkZXJMYXllcikKICAgICAgICAgICAgIGhlYWRlckxheWVy
LT5zeW5jUG9zaXRpb24ocG9zaXRpb25Gb3JIZWFkZXJMYXllcik7CiAgICAgICAgIGlmIChmb290
ZXJMYXllcikKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmVuc3VyZVJvCiAgICAgaW5zZXJ0Tm9kZShTY3JvbGxpbmdOb2RlVHlwZTo6TWFpbkZyYW1l
LCBmcmFtZVZpZXcuc2Nyb2xsTGF5ZXJJRCgpLCAwLCAwKTsKIH0KIAotdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXROb2RlTGF5ZXJzKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIEdy
YXBoaWNzTGF5ZXIqIGxheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5z
ZXRDbGlwTGF5ZXIpCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vZGVMYXll
cnMoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgR3JhcGhpY3NMYXllciogbGF5ZXIsIEdyYXBoaWNz
TGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgR3JhcGhpY3NMYXllciogY291bnRlclNjcm9s
bGluZ0xheWVyLCBHcmFwaGljc0xheWVyKiBpbnNldENsaXBMYXllciwgR3JhcGhpY3NMYXllciog
cm9vdENvbnRlbnRzTGF5ZXIpCiB7CiAgICAgYXV0byogbm9kZSA9IG1fc2Nyb2xsaW5nU3RhdGVU
cmVlLT5zdGF0ZU5vZGVGb3JJRChub2RlSUQpOwogICAgIEFTU0VSVChub2RlKTsKQEAgLTU4MCwx
MiArNTgwLDE0IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0Tm9kZUwKIAog
ICAgIGlmIChpczxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU+KG5vZGUpKSB7CiAgICAgICAg
IGF1dG8mIHNjcm9sbGluZ05vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05v
ZGU+KCpub2RlKTsKKyAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSB1bnVzZWQuCiAgICAgICAg
IHNjcm9sbGluZ05vZGUuc2V0U2Nyb2xsZWRDb250ZW50c0xheWVyKHNjcm9sbGVkQ29udGVudHNM
YXllcik7Ci0gICAgCisKICAgICAgICAgaWYgKGlzPFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlPihub2RlKSkgewogICAgICAgICAgICAgYXV0byYgZnJhbWVTY3JvbGxpbmdOb2RlID0g
ZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU+KCpub2RlKTsKICAgICAg
ICAgICAgIGZyYW1lU2Nyb2xsaW5nTm9kZS5zZXRJbnNldENsaXBMYXllcihpbnNldENsaXBMYXll
cik7CiAgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05vZGUuc2V0Q291bnRlclNjcm9sbGluZ0xh
eWVyKGNvdW50ZXJTY3JvbGxpbmdMYXllcik7CisgICAgICAgICAgICBmcmFtZVNjcm9sbGluZ05v
ZGUuc2V0Um9vdENvbnRlbnRzTGF5ZXIocm9vdENvbnRlbnRzTGF5ZXIpOwogICAgICAgICB9CiAg
ICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VY
UE9SVCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50T2ZOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFNjcm9sbGluZ05vZGVJRD4gY2hp
bGRyZW5PZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCBvdmVycmlkZTsKIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Tm9kZUxheWVycyhTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5
ZXIqIC8qbGF5ZXIqLywgR3JhcGhpY3NMYXllciogLypzY3JvbGxlZENvbnRlbnRzTGF5ZXIqLyA9
IG51bGxwdHIsIEdyYXBoaWNzTGF5ZXIqIC8qY291bnRlclNjcm9sbGluZ0xheWVyKi8gPSBudWxs
cHRyLCBHcmFwaGljc0xheWVyKiAvKmluc2V0Q2xpcExheWVyKi8gPSBudWxscHRyKSBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5vZGVMYXllcnMoU2Nyb2xsaW5nTm9kZUlE
LCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNzTGF5ZXIqIC8qc2Nyb2xsZWRDb250
ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVyKiAvKmNvdW50ZXJTY3JvbGxpbmdM
YXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLyppbnNldENsaXBMYXllciovID0gbnVs
bHB0ciwgR3JhcGhpY3NMYXllciogLypyb290Q29udGVudHNMYXllciovID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxpbmdOb2RlR2VvbWV0cnko
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSYpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRDb25zdHJhaW50ZWROb2RlR2VvbWV0cnko
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBWaWV3cG9ydENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5jcHAJKHJldmlzaW9uIDI0MDcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg3LDEwICsyODcsMTAgQEAgR3JhcGhpY3NMYXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNv
bgogI2VuZGlmCiB9CiAKLUdyYXBoaWNzTGF5ZXIqIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyb290
Q29udGVudExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYgZnJhbWVWaWV3KQorR3JhcGhpY3NM
YXllciogU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJvb3RDb250ZW50c0xheWVyRm9yRnJhbWVWaWV3
KEZyYW1lVmlldyYgZnJhbWVWaWV3KQogewogICAgIGlmIChhdXRvKiByZW5kZXJWaWV3ID0gZnJh
bWVWaWV3LmZyYW1lKCkuY29udGVudFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybiByZW5kZXJW
aWV3LT5jb21wb3NpdG9yKCkucm9vdENvbnRlbnRMYXllcigpOworICAgICAgICByZXR1cm4gcmVu
ZGVyVmlldy0+Y29tcG9zaXRvcigpLnJvb3RDb250ZW50c0xheWVyKCk7CiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI5LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFNjcm9sbGluZ05vZGVJ
RCBwYXJlbnRPZk5vZGUoU2Nyb2xsaW5nTm9kZUlEKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBWZWN0b3I8U2Nyb2xsaW5nTm9kZUlEPiBjaGlsZHJlbk9mTm9kZShTY3JvbGxpbmdO
b2RlSUQpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldE5vZGVM
YXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNz
TGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVy
KiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypp
bnNldENsaXBMYXllciovID0gbnVsbHB0cikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNldE5vZGVM
YXllcnMoU2Nyb2xsaW5nTm9kZUlELCBHcmFwaGljc0xheWVyKiAvKmxheWVyKi8sIEdyYXBoaWNz
TGF5ZXIqIC8qc2Nyb2xsZWRDb250ZW50c0xheWVyKi8gPSBudWxscHRyLCBHcmFwaGljc0xheWVy
KiAvKmNvdW50ZXJTY3JvbGxpbmdMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypp
bnNldENsaXBMYXllciovID0gbnVsbHB0ciwgR3JhcGhpY3NMYXllciogLypyb290Q29udGVudHNM
YXllciovID0gbnVsbHB0cikgeyB9CiAKICAgICBzdHJ1Y3QgU2Nyb2xsaW5nR2VvbWV0cnkgewog
ICAgICAgICBMYXlvdXRSZWN0IHBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Q7CkBAIC0xODks
NyArMTg5LDcgQEAgcHJvdGVjdGVkOgogICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9y
RnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxp
bmdMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAgICBHcmFwaGljc0xheWVyKiBpbnNl
dENsaXBMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKLSAgICBHcmFwaGljc0xheWVyKiBy
b290Q29udGVudExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOworICAgIEdyYXBoaWNzTGF5
ZXIqIHJvb3RDb250ZW50c0xheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyYpOwogICAgIEdyYXBo
aWNzTGF5ZXIqIGNvbnRlbnRTaGFkb3dMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAg
ICBHcmFwaGljc0xheWVyKiBoZWFkZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKICAg
ICBHcmFwaGljc0xheWVyKiBmb290ZXJMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MDcxNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3Jv
bGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsCiAgICAgLCBtX2ZpeGVkRWxlbWVudHNMYXlv
dXRSZWxhdGl2ZVRvRnJhbWUoc3RhdGVOb2RlLmZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRv
RnJhbWUoKSkKICAgICAsIG1fdmlzdWFsVmlld3BvcnRFbmFibGVkKHN0YXRlTm9kZS52aXN1YWxW
aWV3cG9ydEVuYWJsZWQoKSkKIHsKKyAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KFJvb3RDb250
ZW50c0xheWVyKSkKKyAgICAgICAgc2V0Um9vdENvbnRlbnRzTGF5ZXIoc3RhdGVOb2RlLnJvb3RD
b250ZW50c0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRyZWUucHJlZmVycmVkTGF5
ZXJSZXByZXNlbnRhdGlvbigpKSk7CisKICAgICBpZiAoaGFzQ2hhbmdlZFByb3BlcnR5KENvdW50
ZXJTY3JvbGxpbmdMYXllcikpCiAgICAgICAgIHNldENvdW50ZXJTY3JvbGxpbmdMYXllcihzdGF0
ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVyKCkudG9SZXByZXNlbnRhdGlvbihhZG9wdGl2ZVRy
ZWUucHJlZmVycmVkTGF5ZXJSZXByZXNlbnRhdGlvbigpKSk7CiAKQEAgLTk5LDYgKzEwMiw3IEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OnMKICAgICBzZXRQcm9wZXJ0
eUNoYW5nZWRCaXQoRnJhbWVTY2FsZUZhY3Rvcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0
KEV2ZW50VHJhY2tpbmdSZWdpb24pOwogICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSZWFzb25z
Rm9yU3luY2hyb25vdXNTY3JvbGxpbmcpOworICAgIHNldFByb3BlcnR5Q2hhbmdlZEJpdChSb290
Q29udGVudHNMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNjcm9sbGVkQ29udGVu
dHNMYXllcik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KENvdW50ZXJTY3JvbGxpbmdMYXll
cik7CiAgICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KEluc2V0Q2xpcExheWVyKTsKQEAgLTIxMiw2
ICsyMTYsMTUgQEAgdm9pZCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6cwogICAg
IHNldFByb3BlcnR5Q2hhbmdlZChUb3BDb250ZW50SW5zZXQpOwogfQogCit2b2lkIFNjcm9sbGlu
Z1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpzZXRSb290Q29udGVudHNMYXllcihjb25zdCBMYXll
clJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0aW9uKQoreworICAgIGlmIChsYXllclJl
cHJlc2VudGF0aW9uID09IG1fcm9vdENvbnRlbnRzTGF5ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcm9vdENvbnRlbnRzTGF5ZXIgPSBsYXllclJlcHJlc2VudGF0aW9uOworICAgIHNldFBy
b3BlcnR5Q2hhbmdlZChSb290Q29udGVudHNMYXllcik7Cit9CisKIHZvaWQgU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGU6OnNldENvdW50ZXJTY3JvbGxpbmdMYXllcihjb25zdCBMYXll
clJlcHJlc2VudGF0aW9uJiBsYXllclJlcHJlc2VudGF0aW9uKQogewogICAgIGlmIChsYXllclJl
cHJlc2VudGF0aW9uID09IG1fY291bnRlclNjcm9sbGluZ0xheWVyKQpAQCAtMzA3LDYgKzMyMCw3
IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OmQKICAgICBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CiAgICAg
CiAgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNs
dWRlTGF5ZXJJRHMpIHsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb290IGNvbnRlbnRzIGxh
eWVyIElEIiwgbV9yb290Q29udGVudHNMYXllci5sYXllcklEKCkpOwogICAgICAgICB0cy5kdW1w
UHJvcGVydHkoImNvdW50ZXIgc2Nyb2xsaW5nIGxheWVyIElEIiwgbV9jb3VudGVyU2Nyb2xsaW5n
TGF5ZXIubGF5ZXJJRCgpKTsKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJpbnNldCBjbGlwIGxh
eWVyIElEIiwgbV9pbnNldENsaXBMYXllci5sYXllcklEKCkpOwogICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImNvbnRlbnQgc2hhZG93IGxheWVyIElEIiwgbV9jb250ZW50U2hhZG93TGF5ZXIubGF5
ZXJJRCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQwNzE1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgICAgIEZyYW1lU2NhbGVGYWN0b3IgPSBOdW1TY3JvbGxpbmdTdGF0ZU5vZGVCaXRz
LAogICAgICAgICBFdmVudFRyYWNraW5nUmVnaW9uLAogICAgICAgICBSZWFzb25zRm9yU3luY2hy
b25vdXNTY3JvbGxpbmcsCisgICAgICAgIFJvb3RDb250ZW50c0xheWVyLAogICAgICAgICBTY3Jv
bGxlZENvbnRlbnRzTGF5ZXIsCiAgICAgICAgIENvdW50ZXJTY3JvbGxpbmdMYXllciwKICAgICAg
ICAgSW5zZXRDbGlwTGF5ZXIsCkBAIC05OSw2ICsxMDAsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
dG9wQ29udGVudEluc2V0KCkgY29uc3QgeyByZXR1cm4gbV90b3BDb250ZW50SW5zZXQ7IH0KICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFRvcENvbnRlbnRJbnNldChmbG9hdCk7CiAKKyAgICBj
b25zdCBMYXllclJlcHJlc2VudGF0aW9uJiByb290Q29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fcm9vdENvbnRlbnRzTGF5ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJv
b3RDb250ZW50c0xheWVyKGNvbnN0IExheWVyUmVwcmVzZW50YXRpb24mKTsKKwogICAgIC8vIFRo
aXMgaXMgYSBsYXllciBtb3ZlZCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIHNjcm9sbGlu
ZywgZm9yIGV4YW1wbGUgZm9yIGJhY2tncm91bmQtYXR0YWNobWVudDpmaXhlZAogICAgIGNvbnN0
IExheWVyUmVwcmVzZW50YXRpb24mIGNvdW50ZXJTY3JvbGxpbmdMYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fY291bnRlclNjcm9sbGluZ0xheWVyOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDb3VudGVyU2Nyb2xsaW5nTGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwpAQCAt
MTQ3LDYgKzE1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldEFsbFByb3BlcnRpZXNDaGFu
Z2VkKCkgb3ZlcnJpZGU7CiAKKyAgICBMYXllclJlcHJlc2VudGF0aW9uIG1fcm9vdENvbnRlbnRz
TGF5ZXI7CiAgICAgTGF5ZXJSZXByZXNlbnRhdGlvbiBtX2NvdW50ZXJTY3JvbGxpbmdMYXllcjsK
ICAgICBMYXllclJlcHJlc2VudGF0aW9uIG1faW5zZXRDbGlwTGF5ZXI7CiAgICAgTGF5ZXJSZXBy
ZXNlbnRhdGlvbiBtX2NvbnRlbnRTaGFkb3dMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgU2Ny
b2xsQ29udHJvbGxlciBtX3Njcm9sbENvbnRyb2xsZXI7CiAKICAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9zY3JvbGxMYXllcjsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRl
bnRzTGF5ZXI7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fcm9vdENvbnRlbnRzTGF5ZXI7CiAg
ICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY291bnRlclNjcm9sbGluZ0xheWVyOwogICAgIFJldGFp
blB0cjxDQUxheWVyPiBtX2luc2V0Q2xpcExheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBt
X2NvbnRlbnRTaGFkb3dMYXllcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDA3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYzoKICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9sbExheWVyKSkKICAgICAgICAgbV9zY3JvbGxM
YXllciA9IHNjcm9sbGluZ1N0YXRlTm9kZS5sYXllcigpOwogCi0gICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBtX3Njcm9sbGVkQ29udGVudHNMYXllciA9
IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKTsKKyAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZTo6Um9vdENvbnRlbnRzTGF5ZXIpKQorICAgICAgICBtX3Jvb3RDb250ZW50c0xh
eWVyID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJvb3RDb250ZW50c0xheWVyKCk7CiAKICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1l
U2Nyb2xsaW5nTm9kZTo6Q291bnRlclNjcm9sbGluZ0xheWVyKSkKICAgICAgICAgbV9jb3VudGVy
U2Nyb2xsaW5nTGF5ZXIgPSBzY3JvbGxpbmdTdGF0ZU5vZGUuY291bnRlclNjcm9sbGluZ0xheWVy
KCk7CkBAIC00MzksMTEgKzQzOSwxMSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVNYWM6CiAgICAgICAgIG1fY291bnRlclNjcm9sbGluZ0xheWVyLmdldCgpLnBvc2l0aW9u
ID0gZml4ZWRQb3NpdGlvblJlY3QubG9jYXRpb24oKTsKIAogICAgIGZsb2F0IHRvcENvbnRlbnRJ
bnNldCA9IHRoaXMtPnRvcENvbnRlbnRJbnNldCgpOwotICAgIGlmIChtX2luc2V0Q2xpcExheWVy
ICYmIG1fc2Nyb2xsZWRDb250ZW50c0xheWVyICYmIHRvcENvbnRlbnRJbnNldCkgeworICAgIGlm
IChtX2luc2V0Q2xpcExheWVyICYmIG1fcm9vdENvbnRlbnRzTGF5ZXIgJiYgdG9wQ29udGVudElu
c2V0KSB7CiAgICAgICAgIG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCkucG9zaXRpb24gPSBGbG9hdFBv
aW50KG1faW5zZXRDbGlwTGF5ZXIuZ2V0KCkucG9zaXRpb24ueCwgRnJhbWVWaWV3Ojp5UG9zaXRp
b25Gb3JJbnNldENsaXBMYXllcihwb3NpdGlvbiwgdG9wQ29udGVudEluc2V0KSk7Ci0gICAgICAg
IG1fc2Nyb2xsZWRDb250ZW50c0xheWVyLmdldCgpLnBvc2l0aW9uID0gRnJhbWVWaWV3Ojpwb3Np
dGlvbkZvclJvb3RDb250ZW50TGF5ZXIocG9zaXRpb24sIHNjcm9sbE9yaWdpbigpLCB0b3BDb250
ZW50SW5zZXQsIGhlYWRlckhlaWdodCgpKTsKKyAgICAgICAgbV9yb290Q29udGVudHNMYXllci5n
ZXQoKS5wb3NpdGlvbiA9IEZyYW1lVmlldzo6cG9zaXRpb25Gb3JSb290Q29udGVudExheWVyKHBv
c2l0aW9uLCBzY3JvbGxPcmlnaW4oKSwgdG9wQ29udGVudEluc2V0LCBoZWFkZXJIZWlnaHQoKSk7
CiAgICAgICAgIGlmIChtX2NvbnRlbnRTaGFkb3dMYXllcikKLSAgICAgICAgICAgIG1fY29udGVu
dFNoYWRvd0xheWVyLmdldCgpLnBvc2l0aW9uID0gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXIuZ2V0
KCkucG9zaXRpb247CisgICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci5nZXQoKS5wb3Np
dGlvbiA9IG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkucG9zaXRpb247CiAgICAgfQogCiAgICAg
aWYgKG1faGVhZGVyTGF5ZXIgfHwgbV9mb290ZXJMYXllcikgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAJKHJldmlzaW9u
IDI0MDcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDgsOSArNTQ4LDEwIEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpkaWRDaGFuZ2VQbGEKIAogICAgIGlmIChhdXRvIG5vZGVJRCA9IGJhY2tp
bmctPnNjcm9sbGluZ05vZGVJREZvclJvbGUoU2Nyb2xsQ29vcmRpbmF0aW9uUm9sZTo6U2Nyb2xs
aW5nKSkgewogICAgICAgICAvLyBGSVhNRTogd291bGQgYmUgbmljZSB0byBub3QgaGF2ZSB0byBz
cGVjaWFsLWNhc2UgdGhlIHJvb3QuCi0gICAgICAgIGlmIChsYXllci5pc1JlbmRlclZpZXdMYXll
cigpKQotICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNldE5vZGVMYXllcnMobm9k
ZUlELCBtX3Njcm9sbExheWVyLmdldCgpLCBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCksIGZpeGVk
Um9vdEJhY2tncm91bmRMYXllcigpLCBjbGlwTGF5ZXIoKSk7Ci0gICAgICAgIGVsc2UKKyAgICAg
ICAgaWYgKGxheWVyLmlzUmVuZGVyVmlld0xheWVyKCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBSZW9yZ2FuaXplIHRoZSBsYXllcnMgYW5kIHBhc3MgdGhlIHNjcm9sbGVkQ29udGVudHNMYXll
ci4KKyAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5vZGVJ
RCwgbV9zY3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwgZml4ZWRSb290QmFja2dyb3VuZExheWVy
KCksIGNsaXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpKTsKKyAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9kZUxheWVycyhub2Rl
SUQsIGJhY2tpbmctPnNjcm9sbGluZ0xheWVyKCksIGJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRz
TGF5ZXIoKSk7CiAgICAgfQogCkBAIC03NjAsOCArNzYxLDggQEAgYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUNvbXBvcwogICAgICAgICAgICAgLy8gY29tcG9zaXRlZCBsYXllcnMg
dGhhdCB3ZSBkaWRuJ3QgaGl0IGluIG91ciB0cmF2ZXJzYWwgKGUuZy4gYmVjYXVzZSBvZiB2aXNp
YmlsaXR5OmhpZGRlbikuCiAgICAgICAgICAgICBpZiAoY2hpbGRMaXN0LmlzRW1wdHkoKSAmJiAh
bmVlZHNDb21wb3NpdGluZ0ZvckNvbnRlbnRPck92ZXJsYXlzKCkpCiAgICAgICAgICAgICAgICAg
ZGVzdHJveVJvb3RMYXllcigpOwotICAgICAgICAgICAgZWxzZSBpZiAobV9yb290Q29udGVudExh
eWVyKQotICAgICAgICAgICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0Q2hpbGRyZW4oV1RG
TW92ZShjaGlsZExpc3QpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fcm9vdENvbnRlbnRzTGF5
ZXIpCisgICAgICAgICAgICAgICAgbV9yb290Q29udGVudHNMYXllci0+c2V0Q2hpbGRyZW4oV1RG
TW92ZShjaGlsZExpc3QpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzg0LDcgKzc4NSw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3MKICAgICAgICAgTE9HKENv
bXBvc2l0aW5nLCAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVy
cyAtIHBvc3QiKTsKICAgICAgICAgc2hvd1BhaW50T3JkZXJUcmVlKG1fcmVuZGVyVmlldy5sYXll
cigpKTsKICAgICAgICAgTE9HKENvbXBvc2l0aW5nLCAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVDb21wb3NpdGluZ0xheWVycyAtIEdyYXBoaWNzTGF5ZXJzIHBvc3QsIGNvbnRlbnRMYXll
cnNDb3VudCAlZCIsIG1fY29udGVudExheWVyc0NvdW50KTsKLSAgICAgICAgc2hvd0dyYXBoaWNz
TGF5ZXJUcmVlKG1fcm9vdENvbnRlbnRMYXllci5nZXQoKSk7CisgICAgICAgIHNob3dHcmFwaGlj
c0xheWVyVHJlZShtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIApA
QCAtMTUxNSw3ICsxNTE2LDcgQEAgc3RhdGljIFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRl
cmVyRgogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdENvbnRlbnRMYXll
ckNsaXBwaW5nKCkKIHsKLSAgICBtX3Jvb3RDb250ZW50TGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMo
IW1fcmVuZGVyVmlldy5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdl
KCkpOworICAgIG1fcm9vdENvbnRlbnRzTGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMoIW1fcmVuZGVy
Vmlldy5zZXR0aW5ncygpLmJhY2tncm91bmRTaG91bGRFeHRlbmRCZXlvbmRQYWdlKCkpOwogfQog
CiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciYg
bGF5ZXIsIFJlcXVpcmVzQ29tcG9zaXRpbmdEYXRhJiBxdWVyeURhdGEsIENvbXBvc2l0aW5nQ2hh
bmdlUmVwYWludCBzaG91bGRSZXBhaW50LCBCYWNraW5nUmVxdWlyZWQgYmFja2luZ1JlcXVpcmVk
KQpAQCAtMTg4OSw3ICsxODkwLDcgQEAgU3RyaW5nIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5
ZXJUcmVlQQogewogICAgIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRl
VHlwZTo6QWZ0ZXJMYXlvdXQpOwogCi0gICAgaWYgKCFtX3Jvb3RDb250ZW50TGF5ZXIpCisgICAg
aWYgKCFtX3Jvb3RDb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXModHJ1ZSk7CkBAIC0xOTE0LDcgKzE5MTUsNyBAQCBT
dHJpbmcgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllclRyZWVBCiAKICAgICAvLyBXZSBza2lw
IGR1bXBpbmcgdGhlIHNjcm9sbCBhbmQgY2xpcCBsYXllcnMgdG8ga2VlcCBsYXllclRyZWVBc1Rl
eHQgb3V0cHV0CiAgICAgLy8gc2ltaWxhciBiZXR3ZWVuIHBsYXRmb3Jtcy4KLSAgICBTdHJpbmcg
bGF5ZXJUcmVlVGV4dCA9IG1fcm9vdENvbnRlbnRMYXllci0+bGF5ZXJUcmVlQXNUZXh0KGxheWVy
VHJlZUJlaGF2aW9yKTsKKyAgICBTdHJpbmcgbGF5ZXJUcmVlVGV4dCA9IG1fcm9vdENvbnRlbnRz
TGF5ZXItPmxheWVyVHJlZUFzVGV4dChsYXllclRyZWVCZWhhdmlvcik7CiAKICAgICAvLyBEdW1w
IGFuIGVtcHR5IGxheWVyIHRyZWUgb25seSBpZiB0aGUgb25seSBjb21wb3NpdGVkIGxheWVyIGlz
IHRoZSBtYWluIGZyYW1lJ3MgdGlsZWQgYmFja2luZywKICAgICAvLyBzbyB0aGF0IHRlc3RzIGV4
cGVjdGluZyB1cyB0byBkcm9wIG91dCBvZiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyB3aGVuIHRo
ZXJlIGFyZSBubyBsYXllcnMgc3VjY2VlZC4KQEAgLTIwMTEsNyArMjAxMiw3IEBAIEdyYXBoaWNz
TGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cm8KIHsKICAgICBpZiAobV9vdmVyZmxvd0Nv
bnRyb2xzSG9zdExheWVyKQogICAgICAgICByZXR1cm4gbV9vdmVyZmxvd0NvbnRyb2xzSG9zdExh
eWVyLmdldCgpOwotICAgIHJldHVybiBtX3Jvb3RDb250ZW50TGF5ZXIuZ2V0KCk7CisgICAgcmV0
dXJuIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKQEAgLTIwNjksMTggKzIwNzAs
MTggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNsZWFyQmFja2luZwogCiB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9zaXRpb24oKQogewotICAgIGlm
IChtX3Jvb3RDb250ZW50TGF5ZXIpIHsKLSAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRT
aXplKG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5jb250ZW50c1NpemUoKSk7Ci0gICAgICAgIG1f
cm9vdENvbnRlbnRMYXllci0+c2V0UG9zaXRpb24obV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnBv
c2l0aW9uRm9yUm9vdENvbnRlbnRMYXllcigpKTsKLSAgICAgICAgbV9yb290Q29udGVudExheWVy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CisgICAgaWYgKG1fcm9vdENvbnRlbnRz
TGF5ZXIpIHsKKyAgICAgICAgbV9yb290Q29udGVudHNMYXllci0+c2V0U2l6ZShtX3JlbmRlclZp
ZXcuZnJhbWVWaWV3KCkuY29udGVudHNTaXplKCkpOworICAgICAgICBtX3Jvb3RDb250ZW50c0xh
eWVyLT5zZXRQb3NpdGlvbihtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkucG9zaXRpb25Gb3JSb290
Q29udGVudExheWVyKCkpOworICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5zZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50M0QoKSk7CiAgICAgfQogCiAgICAgdXBkYXRlU2Nyb2xsTGF5ZXJDbGlw
cGluZygpOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIGlmIChtX2NvbnRlbnRT
aGFkb3dMYXllciAmJiBtX3Jvb3RDb250ZW50TGF5ZXIpIHsKLSAgICAgICAgbV9jb250ZW50U2hh
ZG93TGF5ZXItPnNldFBvc2l0aW9uKG1fcm9vdENvbnRlbnRMYXllci0+cG9zaXRpb24oKSk7Ci0g
ICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5zZXRTaXplKG1fcm9vdENvbnRlbnRMYXllci0+
c2l6ZSgpKTsKKyAgICBpZiAobV9jb250ZW50U2hhZG93TGF5ZXIgJiYgbV9yb290Q29udGVudHNM
YXllcikgeworICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0UG9zaXRpb24obV9yb290
Q29udGVudHNMYXllci0+cG9zaXRpb24oKSk7CisgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVy
LT5zZXRTaXplKG1fcm9vdENvbnRlbnRzTGF5ZXItPnNpemUoKSk7CiAgICAgfQogCiAgICAgdXBk
YXRlTGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEobV9sYXllckZvclRvcE92ZXJoYW5nQXJlYSAhPSBu
dWxscHRyKTsKQEAgLTMxMTksNyArMzEyMCw3IEBAIEdyYXBoaWNzTGF5ZXIqIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXAKICAgICBpZiAoIW1fbGF5ZXJGb3JUb3BPdmVyaGFuZ0FyZWEpIHsKICAg
ICAgICAgbV9sYXllckZvclRvcE92ZXJoYW5nQXJlYSA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShn
cmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7CiAgICAgICAgIG1fbGF5ZXJGb3JUb3BPdmVy
aGFuZ0FyZWEtPnNldE5hbWUoInRvcCBvdmVyaGFuZyIpOwotICAgICAgICBtX3Njcm9sbExheWVy
LT5hZGRDaGlsZEJlbG93KCptX2xheWVyRm9yVG9wT3ZlcmhhbmdBcmVhLCBtX3Jvb3RDb250ZW50
TGF5ZXIuZ2V0KCkpOworICAgICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGlsZEJlbG93KCptX2xh
eWVyRm9yVG9wT3ZlcmhhbmdBcmVhLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbV9sYXllckZvclRvcE92ZXJoYW5nQXJlYS5nZXQoKTsKQEAgLTMxMzgs
MTAgKzMxMzksMTAgQEAgR3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cAog
ICAgIGlmICghbV9sYXllckZvckJvdHRvbU92ZXJoYW5nQXJlYSkgewogICAgICAgICBtX2xheWVy
Rm9yQm90dG9tT3ZlcmhhbmdBcmVhID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5
ZXJGYWN0b3J5KCksICp0aGlzKTsKICAgICAgICAgbV9sYXllckZvckJvdHRvbU92ZXJoYW5nQXJl
YS0+c2V0TmFtZSgiYm90dG9tIG92ZXJoYW5nIik7Ci0gICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFk
ZENoaWxkQmVsb3coKm1fbGF5ZXJGb3JCb3R0b21PdmVyaGFuZ0FyZWEsIG1fcm9vdENvbnRlbnRM
YXllci5nZXQoKSk7CisgICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkQmVsb3coKm1fbGF5
ZXJGb3JCb3R0b21PdmVyaGFuZ0FyZWEsIG1fcm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAg
IH0KIAotICAgIG1fbGF5ZXJGb3JCb3R0b21PdmVyaGFuZ0FyZWEtPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoMCwgbV9yb290Q29udGVudExheWVyLT5zaXplKCkuaGVpZ2h0KCkgKyBtX3JlbmRlclZp
ZXcuZnJhbWVWaWV3KCkuaGVhZGVySGVpZ2h0KCkKKyAgICBtX2xheWVyRm9yQm90dG9tT3Zlcmhh
bmdBcmVhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIG1fcm9vdENvbnRlbnRzTGF5ZXItPnNp
emUoKS5oZWlnaHQoKSArIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5oZWFkZXJIZWlnaHQoKQog
ICAgICAgICArIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5mb290ZXJIZWlnaHQoKSArIG1fcmVu
ZGVyVmlldy5mcmFtZVZpZXcoKS50b3BDb250ZW50SW5zZXQoKSkpOwogICAgIHJldHVybiBtX2xh
eWVyRm9yQm90dG9tT3ZlcmhhbmdBcmVhLmdldCgpOwogfQpAQCAtMzE2Niw3ICszMTY3LDcgQEAg
R3JhcGhpY3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cAogICAgIGlmICghbV9sYXll
ckZvckhlYWRlcikgewogICAgICAgICBtX2xheWVyRm9ySGVhZGVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKICAgICAgICAgbV9sYXllckZv
ckhlYWRlci0+c2V0TmFtZSgiaGVhZGVyIik7Ci0gICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENo
aWxkQWJvdmUoKm1fbGF5ZXJGb3JIZWFkZXIsIG1fcm9vdENvbnRlbnRMYXllci5nZXQoKSk7Cisg
ICAgICAgIG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkQWJvdmUoKm1fbGF5ZXJGb3JIZWFkZXIsIG1f
cm9vdENvbnRlbnRzTGF5ZXIuZ2V0KCkpOwogICAgICAgICBtX3JlbmRlclZpZXcuZnJhbWVWaWV3
KCkuYWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhEaWRGaXJzdEZsdXNoRm9ySGVhZGVyTGF5ZXIp
OwogICAgIH0KIApAQCAtMzIwMywxMCArMzIwNCwxMCBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwCiAgICAgaWYgKCFtX2xheWVyRm9yRm9vdGVyKSB7CiAgICAgICAg
IG1fbGF5ZXJGb3JGb290ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZh
Y3RvcnkoKSwgKnRoaXMpOwogICAgICAgICBtX2xheWVyRm9yRm9vdGVyLT5zZXROYW1lKCJmb290
ZXIiKTsKLSAgICAgICAgbV9zY3JvbGxMYXllci0+YWRkQ2hpbGRBYm92ZSgqbV9sYXllckZvckZv
b3RlciwgbV9yb290Q29udGVudExheWVyLmdldCgpKTsKKyAgICAgICAgbV9zY3JvbGxMYXllci0+
YWRkQ2hpbGRBYm92ZSgqbV9sYXllckZvckZvb3RlciwgbV9yb290Q29udGVudHNMYXllci5nZXQo
KSk7CiAgICAgfQogCi0gICAgZmxvYXQgdG90YWxDb250ZW50SGVpZ2h0ID0gbV9yb290Q29udGVu
dExheWVyLT5zaXplKCkuaGVpZ2h0KCkgKyBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaGVhZGVy
SGVpZ2h0KCkgKyBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZm9vdGVySGVpZ2h0KCk7CisgICAg
ZmxvYXQgdG90YWxDb250ZW50SGVpZ2h0ID0gbV9yb290Q29udGVudHNMYXllci0+c2l6ZSgpLmhl
aWdodCgpICsgbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmhlYWRlckhlaWdodCgpICsgbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpLmZvb3RlckhlaWdodCgpOwogICAgIG1fbGF5ZXJGb3JGb290ZXIt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgRnJhbWVWaWV3Ojp5UG9zaXRpb25Gb3JGb290ZXJM
YXllcihtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuc2Nyb2xsUG9zaXRpb24oKSwKICAgICAgICAg
bV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLnRvcENvbnRlbnRJbnNldCgpLCB0b3RhbENvbnRlbnRI
ZWlnaHQsIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5mb290ZXJIZWlnaHQoKSkpKTsKICAgICBt
X2xheWVyRm9yRm9vdGVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7CkBAIC0zMzMy
LDEyICszMzMzLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVPdmVyZmwK
ICAgICAgICAgaWYgKCFtX2NvbnRlbnRTaGFkb3dMYXllcikgewogICAgICAgICAgICAgbV9jb250
ZW50U2hhZG93TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3Rv
cnkoKSwgKnRoaXMpOwogICAgICAgICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXItPnNldE5hbWUo
ImNvbnRlbnQgc2hhZG93Iik7Ci0gICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0
U2l6ZShtX3Jvb3RDb250ZW50TGF5ZXItPnNpemUoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRT
aGFkb3dMYXllci0+c2V0UG9zaXRpb24obV9yb290Q29udGVudExheWVyLT5wb3NpdGlvbigpKTsK
KyAgICAgICAgICAgIG1fY29udGVudFNoYWRvd0xheWVyLT5zZXRTaXplKG1fcm9vdENvbnRlbnRz
TGF5ZXItPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRTaGFkb3dMYXllci0+c2V0UG9z
aXRpb24obV9yb290Q29udGVudHNMYXllci0+cG9zaXRpb24oKSk7CiAgICAgICAgICAgICBtX2Nv
bnRlbnRTaGFkb3dMYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDNEKCkpOwogICAgICAg
ICAgICAgbV9jb250ZW50U2hhZG93TGF5ZXItPnNldEN1c3RvbUFwcGVhcmFuY2UoR3JhcGhpY3NM
YXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6U2Nyb2xsaW5nU2hhZG93KTsKIAotICAgICAgICAgICAg
bV9zY3JvbGxMYXllci0+YWRkQ2hpbGRCZWxvdygqbV9jb250ZW50U2hhZG93TGF5ZXIsIG1fcm9v
dENvbnRlbnRMYXllci5nZXQoKSk7CisgICAgICAgICAgICBtX3Njcm9sbExheWVyLT5hZGRDaGls
ZEJlbG93KCptX2NvbnRlbnRTaGFkb3dMYXllciwgbV9yb290Q29udGVudHNMYXllci5nZXQoKSk7
CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgR3JhcGhpY3NMYXllcjo6dW5wYXJlbnRB
bmRDbGVhcihtX2NvbnRlbnRTaGFkb3dMYXllcik7CkBAIC0zNDA4LDE4ICszNDA5LDE4IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbnN1cmVSb290TGEKICAgICBpZiAoZXhwZWN0ZWRB
dHRhY2htZW50ID09IG1fcm9vdExheWVyQXR0YWNobWVudCkKICAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghbV9yb290Q29udGVudExheWVyKSB7Ci0gICAgICAgIG1fcm9vdENvbnRlbnRMYXll
ciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCAqdGhpcyk7
Ci0gICAgICAgIG1fcm9vdENvbnRlbnRMYXllci0+c2V0TmFtZSgiY29udGVudCByb290Iik7Cisg
ICAgaWYgKCFtX3Jvb3RDb250ZW50c0xheWVyKSB7CisgICAgICAgIG1fcm9vdENvbnRlbnRzTGF5
ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMp
OworICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5zZXROYW1lKCJjb250ZW50IHJvb3QiKTsK
ICAgICAgICAgSW50UmVjdCBvdmVyZmxvd1JlY3QgPSBzbmFwcGVkSW50UmVjdChtX3JlbmRlclZp
ZXcubGF5b3V0T3ZlcmZsb3dSZWN0KCkpOwotICAgICAgICBtX3Jvb3RDb250ZW50TGF5ZXItPnNl
dFNpemUoRmxvYXRTaXplKG92ZXJmbG93UmVjdC5tYXhYKCksIG92ZXJmbG93UmVjdC5tYXhZKCkp
KTsKLSAgICAgICAgbV9yb290Q29udGVudExheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkp
OworICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5zZXRTaXplKEZsb2F0U2l6ZShvdmVyZmxv
d1JlY3QubWF4WCgpLCBvdmVyZmxvd1JlY3QubWF4WSgpKSk7CisgICAgICAgIG1fcm9vdENvbnRl
bnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICAvLyBQYWdlIHNjYWxlIGlzIGFwcGxpZWQgYWJvdmUgdGhpcyBvbiBp
T1MsIHNvIHdlJ2xsIGp1c3Qgc2F5IHRoYXQgb3VyIHJvb3QgbGF5ZXIgYXBwbGllcyBpdC4KICAg
ICAgICAgYXV0byYgZnJhbWUgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZnJhbWUoKTsKICAg
ICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICBtX3Jvb3RDb250ZW50
TGF5ZXItPnNldEFwcGxpZXNQYWdlU2NhbGUoKTsKKyAgICAgICAgICAgIG1fcm9vdENvbnRlbnRz
TGF5ZXItPnNldEFwcGxpZXNQYWdlU2NhbGUoKTsKICNlbmRpZgogCiAgICAgICAgIC8vIE5lZWQg
dG8gY2xpcCB0byBwcmV2ZW50IHRyYW5zZm9ybWVkIGNvbnRlbnQgc2hvd2luZyBvdXRzaWRlIHRo
aXMgZnJhbWUKQEAgLTM0NTcsNyArMzQ1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjplbnN1cmVSb290TGEKICAgICAgICAgICAgICAgICBtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5
ZXItPmFkZENoaWxkKCptX2NsaXBMYXllcik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG1fc2Nyb2xsTGF5ZXItPmFkZENoaWxkKCptX3Jvb3RDb250ZW50TGF5ZXIpOworICAgICAgICAg
ICAgbV9zY3JvbGxMYXllci0+YWRkQ2hpbGQoKm1fcm9vdENvbnRlbnRzTGF5ZXIpOwogCiAgICAg
ICAgICAgICB1cGRhdGVTY3JvbGxMYXllckNsaXBwaW5nKCk7CiAgICAgICAgICAgICB1cGRhdGVP
dmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCk7CkBAIC0zNDg0LDcgKzM0ODUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6ZW5zdXJlUm9vdExhCiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpkZXN0cm95Um9vdExheWVyKCkKIHsKLSAgICBpZiAoIW1fcm9vdENvbnRlbnRMYXllcikK
KyAgICBpZiAoIW1fcm9vdENvbnRlbnRzTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRl
dGFjaFJvb3RMYXllcigpOwpAQCAtMzUyMCwxNCArMzUyMSwxNCBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6ZGVzdHJveVJvb3RMCiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50
QW5kQ2xlYXIobV9zY3JvbGxMYXllcik7CiAgICAgfQogICAgIEFTU0VSVCghbV9zY3JvbGxMYXll
cik7Ci0gICAgR3JhcGhpY3NMYXllcjo6dW5wYXJlbnRBbmRDbGVhcihtX3Jvb3RDb250ZW50TGF5
ZXIpOworICAgIEdyYXBoaWNzTGF5ZXI6OnVucGFyZW50QW5kQ2xlYXIobV9yb290Q29udGVudHNM
YXllcik7CiAKICAgICBtX2xheWVyVXBkYXRlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjphdHRhY2hSb290TGF5ZXIoUm9vdExheWVyQXR0YWNobWVudCBhdHRh
Y2htZW50KQogewotICAgIGlmICghbV9yb290Q29udGVudExheWVyKQorICAgIGlmICghbV9yb290
Q29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HKENvbXBvc2l0aW5nLCAi
UmVuZGVyTGF5ZXJDb21wb3NpdG9yICVwIGF0dGFjaFJvb3RMYXllciAlZCIsIHRoaXMsIGF0dGFj
aG1lbnQpOwpAQCAtMzU2Myw3ICszNTY0LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmF0dGFjaFJvb3RMYQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoUm9vdExh
eWVyKCkKIHsKLSAgICBpZiAoIW1fcm9vdENvbnRlbnRMYXllciB8fCBtX3Jvb3RMYXllckF0dGFj
aG1lbnQgPT0gUm9vdExheWVyVW5hdHRhY2hlZCkKKyAgICBpZiAoIW1fcm9vdENvbnRlbnRzTGF5
ZXIgfHwgbV9yb290TGF5ZXJBdHRhY2htZW50ID09IFJvb3RMYXllclVuYXR0YWNoZWQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHN3aXRjaCAobV9yb290TGF5ZXJBdHRhY2htZW50KSB7CkBAIC0z
NTczLDcgKzM1NzQsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV0YWNoUm9vdExh
CiAgICAgICAgIGlmIChtX292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXIpCiAgICAgICAgICAgICBt
X292ZXJmbG93Q29udHJvbHNIb3N0TGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgbV9yb290Q29udGVudExheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7
CisgICAgICAgICAgICBtX3Jvb3RDb250ZW50c0xheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAK
ICAgICAgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVudCA9IG1fcmVuZGVyVmlldy5kb2N1bWVudCgp
Lm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgb3duZXJFbGVtZW50LT5zY2hlZHVsZUludmFs
aWRhdGVTdHlsZUFuZExheWVyQ29tcG9zaXRpb24oKTsKQEAgLTM2MjYsNyArMzYyNyw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290TGF5ZXJBdHQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgUmVmPEdyYXBoaWNzTGF5ZXI+IG92ZXJsYXlIb3N0ID0gcGFnZSgpLnBhZ2VPdmVybGF5
Q29udHJvbGxlcigpLmxheWVyV2l0aERvY3VtZW50T3ZlcmxheXMoKTsKLSAgICBtX3Jvb3RDb250
ZW50TGF5ZXItPmFkZENoaWxkKFdURk1vdmUob3ZlcmxheUhvc3QpKTsKKyAgICBtX3Jvb3RDb250
ZW50c0xheWVyLT5hZGRDaGlsZChXVEZNb3ZlKG92ZXJsYXlIb3N0KSk7CiB9CiAKIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpub3RpZnlJRnJhbWVzT2ZDb21wb3NpdGluZ0NoYW5nZSgpCkBA
IC00MDAxLDcgKzQwMDIsNyBAQCBTY3JvbGxpbmdOb2RlSUQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY2hhbmdlcyAmIFNjcm9sbGluZ05vZGVDaGFu
Z2VGbGFnczo6TGF5ZXIpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+c2V0Tm9k
ZUxheWVycyhuZXdOb2RlSUQsIG1fc2Nyb2xsTGF5ZXIuZ2V0KCksIG1fcm9vdENvbnRlbnRMYXll
ci5nZXQoKSwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNsaXBMYXllcigpKTsKKyAgICAg
ICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXROb2RlTGF5ZXJzKG5ld05vZGVJRCwgbV9z
Y3JvbGxMYXllci5nZXQoKSwgbnVsbHB0ciwgZml4ZWRSb290QmFja2dyb3VuZExheWVyKCksIGNs
aXBMYXllcigpLCBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpKTsKIAogICAgICAgICBpZiAoY2hh
bmdlcyAmIFNjcm9sbGluZ05vZGVDaGFuZ2VGbGFnczo6TGF5ZXJHZW9tZXRyeSkgewogICAgICAg
ICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNjcm9sbGluZ0dlb21ldHJ5IHNjcm9sbGluZ0dl
b21ldHJ5OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaAkocmV2aXNpb24gMjQwNzE1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQz
LDcgQEAgcHVibGljOgogCiAgICAgR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbExheWVyLmdldCgpOyB9CiAgICAgR3JhcGhpY3NMYXllciogY2xpcExh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9jbGlwTGF5ZXIuZ2V0KCk7IH0KLSAgICBHcmFwaGljc0xh
eWVyKiByb290Q29udGVudExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290Q29udGVudExheWVy
LmdldCgpOyB9CisgICAgR3JhcGhpY3NMYXllciogcm9vdENvbnRlbnRzTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Jvb3RDb250ZW50c0xheWVyLmdldCgpOyB9CiAKICAgICBHcmFwaGljc0xheWVy
KiBsYXllckZvckNsaXBwaW5nKCkgY29uc3QgeyAgcmV0dXJuIG1fY2xpcExheWVyID8gbV9jbGlw
TGF5ZXIuZ2V0KCkgOiBtX3Njcm9sbExheWVyLmdldCgpOyAgfQogCkBAIC01MzQsNyArNTM0LDcg
QEAgcHJpdmF0ZToKICAgICAKIHByaXZhdGU6CiAgICAgUmVuZGVyVmlldyYgbV9yZW5kZXJWaWV3
OwotICAgIFJlZlB0cjxHcmFwaGljc0xheWVyPiBtX3Jvb3RDb250ZW50TGF5ZXI7CisgICAgUmVm
UHRyPEdyYXBoaWNzTGF5ZXI+IG1fcm9vdENvbnRlbnRzTGF5ZXI7CiAgICAgVGltZXIgbV91cGRh
dGVDb21wb3NpdGluZ0xheWVyc1RpbWVyOwogCiAgICAgQ2hyb21lQ2xpZW50OjpDb21wb3NpdGlu
Z1RyaWdnZXJGbGFncyBtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgeyBzdGF0aWNfY2FzdDxDaHJvbWVD
bGllbnQ6OkNvbXBvc2l0aW5nVHJpZ2dlckZsYWdzPihDaHJvbWVDbGllbnQ6OkFsbFRyaWdnZXJz
KSB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>