<?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>167363</bug_id>
          
          <creation_ts>2017-01-24 01:26:09 -0800</creation_ts>
          <short_desc>Some complex text with initial advances is misplaced</short_desc>
          <delta_ts>2017-01-24 15:53:45 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>166013</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1269368</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-24 01:26:09 -0800</bug_when>
    <thetext>Some complex text with initial advances is misplaced</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269370</commentid>
    <comment_count>1</comment_count>
      <attachid>299585</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-24 01:27:05 -0800</bug_when>
    <thetext>Created attachment 299585
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269374</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-24 01:32:52 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 166013 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269590</commentid>
    <comment_count>3</comment_count>
      <attachid>299585</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-24 15:43:19 -0800</bug_when>
    <thetext>Comment on attachment 299585
WIP

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

&gt; Source/WebCore/platform/graphics/mac/ComplexTextController.h:94
&gt;          const UChar* characters() const { return m_characters; }

No need for ComplexTextRun to be RefCounted (Probably)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269599</commentid>
    <comment_count>4</comment_count>
      <attachid>299585</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-24 15:53:45 -0800</bug_when>
    <thetext>Comment on attachment 299585
WIP

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

&gt; Source/WebCore/platform/graphics/mac/ComplexTextController.h:100
&gt;          CFIndex endOffsetAt(size_t i) const { ASSERT(!m_isMonotonic); return m_glyphEndOffsets[i]; }

m_isMonotonic { true }</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299585</attachid>
            <date>2017-01-24 01:27:05 -0800</date>
            <delta_ts>2017-01-24 01:27:05 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-167363-20170124012506.patch</filename>
            <type>text/plain</type>
            <size>22476</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiNjU5MmY1ZDhlMzY5M2MzNjBiYzJl
ODM1NTM0Y2I0MzkyOTg3OGYuLmNhMjEyNzYxYmExZjk0OWY5NjI4MDdhMWU3YjJiMjNmZGNlZmMy
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDEtMjQgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIGNvbXBsZXggdGV4dCB3aXRoIGlu
aXRpYWwgYWR2YW5jZXMgaXMgbWlzcGxhY2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjczNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDE3LTAxLTIwICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIG91dGRh
dGVkIEVOQUJMRShDU1BfTkVYVCkgYnVpbGQgZmxhZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ4YTJhOWU0NDBk
YmI3ZTg1Mzk3NGZhMDJiYWE5N2U5Y2MwZWIyNTcuLmVmMDk5YmU4MTlhMjJhMzk2NDVmNjZkZDhh
ZDViZTIyZjY4OWM2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxNy0wMS0yNCAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUg
Y29tcGxleCB0ZXh0IHdpdGggaW5pdGlhbCBhZHZhbmNlcyBpcyBtaXNwbGFjZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzM2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNl
dEZvclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6
Q29tcGxleFRleHRSdW46OnN0cmluZ09mZnNldEF0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW46OnNldElzTm9uTW9ub3RvbmljKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2Vz
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRS
dW46OmluZGV4QXQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b21wbGV4VGV4dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW06CisgICAgICAgIChXZWJDb3JlOjpDb21w
bGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bik6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1
bnNGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Ojp3aWR0aCk6CisKIDIwMTctMDEtMjMgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBQcm92aWRlIGEgd2F5IHRvIHRyaWdnZXIgYSBHYXJiYWdlIENvbGxlY3Rpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CmluZGV4IGMyZDc4ZTU1NGQyMTYxNWVhYmFhNzRkNWVjYWYzODAwOWI1ODc4ZDIuLjU0YmY3Y2E0
ZWIyZjkzMDUwNTEyYzFhYzAyNjBiMDMxNzc1NmM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTIxNCw3
ICsxMjE0LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMjAxICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMjAwCi0jZGVmaW5lIEhBVkVfVE9VQ0hfQkFSIDEKKyNkZWZpbmUgSEFWRV9U
T1VDSF9CQVIgMAogI2RlZmluZSBIQVZFX0FEVkFOQ0VEX1NQRUxMX0NIRUNLSU5HIDEKIAogI2lm
IGRlZmluZWQoX19MUDY0X18pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCmluZGV4IGNmYjU2
NzFkNzAzNTlhODkwODEyMThjMzhjNGI4OGJiOWRiOWIzODEuLmMzYjRlOGU2ZGM4OGM2ZmRiYTA3
MDg2MDg5ZWVjMTQ5MmRhOThlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCkBAIC0x
NjYsMTIgKzE2NiwxMiBAQCB1bnNpZ25lZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZv
clBvc2l0aW9uKGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbAogICAgICAgICAgICAgaWYg
KCFpbmRleCkKICAgICAgICAgICAgICAgICBhZGp1c3RlZEFkdmFuY2UgKz0gY29tcGxleFRleHRS
dW4uaW5pdGlhbEFkdmFuY2UoKS53aWR0aDsKICAgICAgICAgICAgIGlmICh4IDwgYWRqdXN0ZWRB
ZHZhbmNlKSB7Ci0gICAgICAgICAgICAgICAgQ0ZJbmRleCBoaXRHbHlwaFN0YXJ0ID0gY29tcGxl
eFRleHRSdW4uaW5kZXhBdChqKTsKKyAgICAgICAgICAgICAgICBDRkluZGV4IGhpdEdseXBoU3Rh
cnQgPSBjb21wbGV4VGV4dFJ1bi5zdHJpbmdPZmZzZXRBdChqKTsKICAgICAgICAgICAgICAgICBD
RkluZGV4IGhpdEdseXBoRW5kOwogICAgICAgICAgICAgICAgIGlmIChtX3J1bi5sdHIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgaGl0R2x5cGhFbmQgPSBzdGQ6Om1heDxDRkluZGV4PihoaXRHbHlw
aFN0YXJ0LCBqICsgMSA8IGNvbXBsZXhUZXh0UnVuLmdseXBoQ291bnQoKSA/IGNvbXBsZXhUZXh0
UnVuLmluZGV4QXQoaiArIDEpIDogc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oY29tcGxleFRleHRSdW4u
aW5kZXhFbmQoKSkpOworICAgICAgICAgICAgICAgICAgICBoaXRHbHlwaEVuZCA9IHN0ZDo6bWF4
PENGSW5kZXg+KGhpdEdseXBoU3RhcnQsIGogKyAxIDwgY29tcGxleFRleHRSdW4uZ2x5cGhDb3Vu
dCgpID8gY29tcGxleFRleHRSdW4uc3RyaW5nT2Zmc2V0QXQoaiArIDEpIDogc3RhdGljX2Nhc3Q8
Q0ZJbmRleD4oY29tcGxleFRleHRSdW4uaW5kZXhFbmQoKSkpOwogICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgaGl0R2x5cGhFbmQgPSBzdGQ6Om1heDxDRkluZGV4Piho
aXRHbHlwaFN0YXJ0LCBqID4gMCA/IGNvbXBsZXhUZXh0UnVuLmluZGV4QXQoaiAtIDEpIDogc3Rh
dGljX2Nhc3Q8Q0ZJbmRleD4oY29tcGxleFRleHRSdW4uaW5kZXhFbmQoKSkpOworICAgICAgICAg
ICAgICAgICAgICBoaXRHbHlwaEVuZCA9IHN0ZDo6bWF4PENGSW5kZXg+KGhpdEdseXBoU3RhcnQs
IGogPiAwID8gY29tcGxleFRleHRSdW4uc3RyaW5nT2Zmc2V0QXQoaiAtIDEpIDogc3RhdGljX2Nh
c3Q8Q0ZJbmRleD4oY29tcGxleFRleHRSdW4uaW5kZXhFbmQoKSkpOwogCiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IEluc3RlYWQgb2YgZGl2aWRpbmcgdGhlIGdseXBoJ3MgYWR2YW5jZSBlcXVh
bGx5IGJldHdlZW4gdGhlIGNoYXJhY3RlcnMsIHRoaXMKICAgICAgICAgICAgICAgICAvLyBjb3Vs
ZCB1c2UgdGhlIGdseXBoJ3MgImxpZ2F0dXJlIGNhcmV0cyIuIFRoaXMgaXMgYXZhaWxhYmxlIGlu
IENvcmVUZXh0IHZpYSBDVEZvbnRHZXRMaWdhdHVyZUNhcmV0UG9zaXRpb25zKCkuCkBAIC0yMDEs
MTQgKzIwMSwxNCBAQCB1bnNpZ25lZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6Om9mZnNldEZvclBv
c2l0aW9uKGZsb2F0IGgsIGJvb2wgaW5jbHVkZVBhcnRpYWxHbAogICAgICAgICAgICAgICAgIGlm
IChjbHVzdGVyRW5kIC0gY2x1c3RlclN0YXJ0ID4gMSkgewogICAgICAgICAgICAgICAgICAgICBj
bHVzdGVyV2lkdGggPSBhZGp1c3RlZEFkdmFuY2U7CiAgICAgICAgICAgICAgICAgICAgIGludCBm
aXJzdEdseXBoQmVmb3JlQ2x1c3RlciA9IGogLSAxOwotICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoZmlyc3RHbHlwaEJlZm9yZUNsdXN0ZXIgPj0gMCAmJiBjb21wbGV4VGV4dFJ1bi5pbmRleEF0
KGZpcnN0R2x5cGhCZWZvcmVDbHVzdGVyKSA+PSBjbHVzdGVyU3RhcnQgJiYgY29tcGxleFRleHRS
dW4uaW5kZXhBdChmaXJzdEdseXBoQmVmb3JlQ2x1c3RlcikgPCBjbHVzdGVyRW5kKSB7CisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlIChmaXJzdEdseXBoQmVmb3JlQ2x1c3RlciA+PSAwICYmIGNv
bXBsZXhUZXh0UnVuLnN0cmluZ09mZnNldEF0KGZpcnN0R2x5cGhCZWZvcmVDbHVzdGVyKSA+PSBj
bHVzdGVyU3RhcnQgJiYgY29tcGxleFRleHRSdW4uc3RyaW5nT2Zmc2V0QXQoZmlyc3RHbHlwaEJl
Zm9yZUNsdXN0ZXIpIDwgY2x1c3RlckVuZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQ0dG
bG9hdCB3aWR0aCA9IG1fYWRqdXN0ZWRCYXNlQWR2YW5jZXNbb2Zmc2V0SW50b0FkanVzdGVkR2x5
cGhzICsgZmlyc3RHbHlwaEJlZm9yZUNsdXN0ZXJdLndpZHRoOwogICAgICAgICAgICAgICAgICAg
ICAgICAgY2x1c3RlcldpZHRoICs9IHdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgeCAr
PSB3aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0R2x5cGhCZWZvcmVDbHVzdGVy
LS07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Zmlyc3RHbHlwaEFmdGVyQ2x1c3RlciA9IGogKyAxOwotICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoZmlyc3RHbHlwaEFmdGVyQ2x1c3RlciA8IGNvbXBsZXhUZXh0UnVuLmdseXBoQ291bnQoKSAm
JiBjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGZpcnN0R2x5cGhBZnRlckNsdXN0ZXIpID49IGNsdXN0
ZXJTdGFydCAmJiBjb21wbGV4VGV4dFJ1bi5pbmRleEF0KGZpcnN0R2x5cGhBZnRlckNsdXN0ZXIp
IDwgY2x1c3RlckVuZCkgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3RHbHlwaEFm
dGVyQ2x1c3RlciA8IGNvbXBsZXhUZXh0UnVuLmdseXBoQ291bnQoKSAmJiBjb21wbGV4VGV4dFJ1
bi5zdHJpbmdPZmZzZXRBdChmaXJzdEdseXBoQWZ0ZXJDbHVzdGVyKSA+PSBjbHVzdGVyU3RhcnQg
JiYgY29tcGxleFRleHRSdW4uc3RyaW5nT2Zmc2V0QXQoZmlyc3RHbHlwaEFmdGVyQ2x1c3Rlcikg
PCBjbHVzdGVyRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyV2lkdGggKz0g
bV9hZGp1c3RlZEJhc2VBZHZhbmNlc1tvZmZzZXRJbnRvQWRqdXN0ZWRHbHlwaHMgKyBmaXJzdEds
eXBoQWZ0ZXJDbHVzdGVyXS53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0R2x5
cGhBZnRlckNsdXN0ZXIrKzsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtNDMzLDExICs0MzMs
MTEgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnMo
KQogICAgICAgICBtX2NvbXBsZXhUZXh0UnVucy5yZXZlcnNlKCk7CiB9CiAKLUNGSW5kZXggQ29t
cGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6aW5kZXhBdChzaXplX3QgaSkgY29u
c3QKK0NGSW5kZXggQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6c3RyaW5n
T2Zmc2V0QXQoc2l6ZV90IGkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGkgPCBtX2dseXBoQ291bnQp
OwogCi0gICAgcmV0dXJuIG1fY29yZVRleHRJbmRpY2VzW2ldOworICAgIHJldHVybiBtX3N0cmlu
Z09mZnNldHNbaV07CiB9CiAKIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4
dFJ1bjo6c2V0SXNOb25Nb25vdG9uaWMoKQpAQCAtNDQ3LDE0ICs0NDcsMTQgQEAgdm9pZCBDb21w
bGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpzZXRJc05vbk1vbm90b25pYygpCiAK
ICAgICBWZWN0b3I8Ym9vbCwgNjQ+IG1hcHBlZEluZGljZXMobV9zdHJpbmdMZW5ndGgsIGZhbHNl
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZ2x5cGhDb3VudDsgKytpKSB7Ci0gICAg
ICAgIEFTU0VSVChpbmRleEF0KGkpIDwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4obV9zdHJpbmdMZW5n
dGgpKTsKLSAgICAgICAgbWFwcGVkSW5kaWNlc1tpbmRleEF0KGkpXSA9IHRydWU7CisgICAgICAg
IEFTU0VSVChzdHJpbmdPZmZzZXRBdChpKSA8IHN0YXRpY19jYXN0PENGSW5kZXg+KG1fc3RyaW5n
TGVuZ3RoKSk7CisgICAgICAgIG1hcHBlZEluZGljZXNbc3RyaW5nT2Zmc2V0QXQoaSldID0gdHJ1
ZTsKICAgICB9CiAKICAgICBtX2dseXBoRW5kT2Zmc2V0cy5ncm93KG1fZ2x5cGhDb3VudCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ2x5cGhDb3VudDsgKytpKSB7CiAgICAgICAg
IENGSW5kZXggbmV4dE1hcHBlZEluZGV4ID0gbV9pbmRleEVuZDsKLSAgICAgICAgZm9yIChzaXpl
X3QgaiA9IGluZGV4QXQoaSkgKyAxOyBqIDwgbV9zdHJpbmdMZW5ndGg7ICsraikgeworICAgICAg
ICBmb3IgKHNpemVfdCBqID0gc3RyaW5nT2Zmc2V0QXQoaSkgKyAxOyBqIDwgbV9zdHJpbmdMZW5n
dGg7ICsraikgewogICAgICAgICAgICAgaWYgKG1hcHBlZEluZGljZXNbal0pIHsKICAgICAgICAg
ICAgICAgICBuZXh0TWFwcGVkSW5kZXggPSBqOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NTU3LDYgKzU1Nyw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2ln
bmVkIG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBoQnVmZmVyLCBHCiAKICAgICB1bnNpZ25lZCBs
ZWZ0bW9zdEdseXBoID0gMDsKICAgICB1bnNpZ25lZCBjdXJyZW50UnVuSW5kZXggPSBpbmRleE9m
Q3VycmVudFJ1bihsZWZ0bW9zdEdseXBoKTsKKyAgICAvLyBJdGVyYXRlIGluIHN0cmluZyBvcmRl
ci4gRmluZGluZyB0aGUgcnVuIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgZ2l2ZW4gc3RyaW5nIHBv
c2l0aW9uIGNhbiBiZSBub250cml2aWFsLgogICAgIHdoaWxlIChtX2N1cnJlbnRSdW4gPCBydW5D
b3VudCkgewogICAgICAgICBjb25zdCBDb21wbGV4VGV4dFJ1biYgY29tcGxleFRleHRSdW4gPSAq
bV9jb21wbGV4VGV4dFJ1bnNbY3VycmVudFJ1bkluZGV4XTsKICAgICAgICAgYm9vbCBsdHIgPSBj
b21wbGV4VGV4dFJ1bi5pc0xUUigpOwpAQCAtNTY3LDggKzU2OCw3IEBAIHZvaWQgQ29tcGxleFRl
eHRDb250cm9sbGVyOjphZHZhbmNlKHVuc2lnbmVkIG9mZnNldCwgR2x5cGhCdWZmZXIqIGdseXBo
QnVmZmVyLCBHCiAgICAgICAgICAgICBmYWxsYmFja0ZvbnRzLT5hZGQoJmNvbXBsZXhUZXh0UnVu
LmZvbnQoKSk7CiAKICAgICAgICAgLy8gV2UgbXVzdCBzdG9yZSB0aGUgaW5pdGlhbCBhZHZhbmNl
IGZvciB0aGUgZmlyc3QgZ2x5cGggd2UgYXJlIGdvaW5nIHRvIGRyYXcuCi0gICAgICAgIC8vIFdo
ZW4gbGVmdG1vc3RHbHlwaCBpcyAwLCBpdCByZXByZXNlbnRzIHRoZSBmaXJzdCBnbHlwaCB0byBk
cmF3LCB0YWtpbmcgaW50bwotICAgICAgICAvLyBhY2NvdW50IHRoZSB0ZXh0IGRpcmVjdGlvbi4K
KyAgICAgICAgLy8gV2hlbiBsZWZ0bW9zdEdseXBoIGlzIDAsIGl0IHJlcHJlc2VudHMgdGhlIGxl
ZnRtb3N0IGdseXBoIHRvIGRyYXcgaW4gdGhlIGVudGlyZSBDb21wbGV4VGV4dENvbnRyb2xsZXIu
CiAgICAgICAgIGlmIChnbHlwaEJ1ZmZlciAmJiAhbGVmdG1vc3RHbHlwaCkgewogICAgICAgICAg
ICAgQ0dTaXplIGluaXRpYWxBZHZhbmNlID0gY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2Uo
KTsKICNpZiBVU0VfTEFZT1VUX1NQRUNJRklDX0FEVkFOQ0VTCkBAIC01ODIsMTMgKzU4MiwxMyBA
QCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWR2YW5jZSh1bnNpZ25lZCBvZmZzZXQsIEds
eXBoQnVmZmVyKiBnbHlwaEJ1ZmZlciwgRwogICAgICAgICB9CiAKICAgICAgICAgd2hpbGUgKG1f
Z2x5cGhJbkN1cnJlbnRSdW4gPCBnbHlwaENvdW50KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBn
bHlwaFN0YXJ0T2Zmc2V0ID0gY29tcGxleFRleHRSdW4uaW5kZXhBdChnKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGdseXBoU3RhcnRPZmZzZXQgPSBjb21wbGV4VGV4dFJ1bi5zdHJpbmdPZmZzZXRB
dChnKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGdseXBoRW5kT2Zmc2V0OwogICAgICAgICAgICAg
aWYgKGNvbXBsZXhUZXh0UnVuLmlzTW9ub3RvbmljKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
bHRyKQotICAgICAgICAgICAgICAgICAgICBnbHlwaEVuZE9mZnNldCA9IHN0ZDo6bWF4PHVuc2ln
bmVkPihnbHlwaFN0YXJ0T2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZyArIDEgPCBnbHlw
aENvdW50ID8gY29tcGxleFRleHRSdW4uaW5kZXhBdChnICsgMSkgOiBjb21wbGV4VGV4dFJ1bi5p
bmRleEVuZCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGdseXBoRW5kT2Zmc2V0ID0gc3RkOjpt
YXg8dW5zaWduZWQ+KGdseXBoU3RhcnRPZmZzZXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihnICsg
MSA8IGdseXBoQ291bnQgPyBjb21wbGV4VGV4dFJ1bi5zdHJpbmdPZmZzZXRBdChnICsgMSkgOiBj
b21wbGV4VGV4dFJ1bi5pbmRleEVuZCgpKSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBnbHlwaEVuZE9mZnNldCA9IHN0ZDo6bWF4PHVuc2lnbmVkPihnbHlwaFN0
YXJ0T2Zmc2V0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZyA+IDAgPyBjb21wbGV4VGV4dFJ1bi5p
bmRleEF0KGcgLSAxKSA6IGNvbXBsZXhUZXh0UnVuLmluZGV4RW5kKCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ2x5cGhFbmRPZmZzZXQgPSBzdGQ6Om1heDx1bnNpZ25lZD4oZ2x5cGhTdGFydE9m
ZnNldCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGcgPiAwID8gY29tcGxleFRleHRSdW4uc3RyaW5n
T2Zmc2V0QXQoZyAtIDEpIDogY29tcGxleFRleHRSdW4uaW5kZXhFbmQoKSkpOwogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgZ2x5cGhFbmRPZmZzZXQgPSBjb21wbGV4VGV4dFJ1
bi5lbmRPZmZzZXRBdChnKTsKIApAQCAtNjAwLDEyICs2MDAsMTQgQEAgdm9pZCBDb21wbGV4VGV4
dENvbnRyb2xsZXI6OmFkdmFuY2UodW5zaWduZWQgb2Zmc2V0LCBHbHlwaEJ1ZmZlciogZ2x5cGhC
dWZmZXIsIEcKICAgICAgICAgICAgIGlmIChnbHlwaEJ1ZmZlciAmJiAhbV9jaGFyYWN0ZXJJbkN1
cnJlbnRHbHlwaCkgewogICAgICAgICAgICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBwYWludEFk
dmFuY2UgPSBhZGp1c3RlZEJhc2VBZHZhbmNlOwogI2lmIFVTRV9MQVlPVVRfU1BFQ0lGSUNfQURW
QU5DRVMKKyAgICAgICAgICAgICAgICBwYWludEFkdmFuY2Uuc2V0V2lkdGgocGFpbnRBZHZhbmNl
LndpZHRoKCkgLSBnbHlwaE9yaWdpbihrKS54KTsKKyAgICAgICAgICAgICAgICBwYWludEFkdmFu
Y2Uuc2V0SGVpZ2h0KHBhaW50QWR2YW5jZS5oZWlnaHQoKSArIGdseXBoT3JpZ2luKGspLnkpOwog
ICAgICAgICAgICAgICAgIGlmIChrICsgMSA8IG1fYWRqdXN0ZWRCYXNlQWR2YW5jZXMuc2l6ZSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRXaWR0aChwYWludEFkdmFu
Y2Uud2lkdGgoKSArIGdseXBoT3JpZ2luKGsgKyAxKS54IC0gZ2x5cGhPcmlnaW4oaykueCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHBhaW50QWR2YW5jZS5zZXRIZWlnaHQocGFpbnRBZHZhbmNlLmhl
aWdodCgpIC0gZ2x5cGhPcmlnaW4oayArIDEpLnkgKyBnbHlwaE9yaWdpbihrKS55KTsKKyAgICAg
ICAgICAgICAgICAgICAgcGFpbnRBZHZhbmNlLnNldFdpZHRoKHBhaW50QWR2YW5jZS53aWR0aCgp
ICsgZ2x5cGhPcmlnaW4oayArIDEpLngpOworICAgICAgICAgICAgICAgICAgICBwYWludEFkdmFu
Y2Uuc2V0SGVpZ2h0KHBhaW50QWR2YW5jZS5oZWlnaHQoKSAtIGdseXBoT3JpZ2luKGsgKyAxKS55
KTsKICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBnbHlwaEJ1ZmZl
ci0+YWRkKG1fYWRqdXN0ZWRHbHlwaHNba10sICZjb21wbGV4VGV4dFJ1bi5mb250KCksIHBhaW50
QWR2YW5jZSwgY29tcGxleFRleHRSdW4uaW5kZXhBdChtX2dseXBoSW5DdXJyZW50UnVuKSk7Cisg
ICAgICAgICAgICAgICAgZ2x5cGhCdWZmZXItPmFkZChtX2FkanVzdGVkR2x5cGhzW2tdLCAmY29t
cGxleFRleHRSdW4uZm9udCgpLCBwYWludEFkdmFuY2UsIGNvbXBsZXhUZXh0UnVuLnN0cmluZ09m
ZnNldEF0KG1fZ2x5cGhJbkN1cnJlbnRSdW4pKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgdW5zaWduZWQgb2xkQ2hhcmFjdGVySW5DdXJyZW50R2x5cGggPSBtX2NoYXJhY3RlckluQ3Vy
cmVudEdseXBoOwpAQCAtNjU5LDcgKzY2MSw2IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpwYWlyPGJv
b2wsIGJvb2w+IGV4cGFuc2lvbkxvY2F0aW9uKGJvb2wgaWRlb2dyYXBoLCBib29sIHRyZWF0CiB2
b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogewog
ICAgIGJvb2wgYWZ0ZXJFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSAmIExl
YWRpbmdFeHBhbnNpb25NYXNrKSA9PSBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uOwotICAgIENHRmxv
YXQgd2lkdGhTaW5jZUxhc3RDb21taXQgPSAwOwogICAgIHNpemVfdCBydW5Db3VudCA9IG1fY29t
cGxleFRleHRSdW5zLnNpemUoKTsKICAgICBib29sIGhhc0V4dHJhU3BhY2luZyA9IChtX2ZvbnQu
bGV0dGVyU3BhY2luZygpIHx8IG1fZm9udC53b3JkU3BhY2luZygpIHx8IG1fZXhwYW5zaW9uKSAm
JiAhbV9ydW4uc3BhY2luZ0Rpc2FibGVkKCk7CiAgICAgYm9vbCBydW5Gb3JjZXNMZWFkaW5nRXhw
YW5zaW9uID0gKG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkgJiBMZWFkaW5nRXhwYW5zaW9uTWFz
aykgPT0gRm9yY2VMZWFkaW5nRXhwYW5zaW9uOwpAQCAtNjY3LDcgKzY2OCw3IEBAIHZvaWQgQ29t
cGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgYm9vbCBy
dW5Gb3JiaWRzTGVhZGluZ0V4cGFuc2lvbiA9IChtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpICYg
TGVhZGluZ0V4cGFuc2lvbk1hc2spID09IEZvcmJpZExlYWRpbmdFeHBhbnNpb247CiAgICAgYm9v
bCBydW5Gb3JiaWRzVHJhaWxpbmdFeHBhbnNpb24gPSAobV9ydW4uZXhwYW5zaW9uQmVoYXZpb3Io
KSAmIFRyYWlsaW5nRXhwYW5zaW9uTWFzaykgPT0gRm9yYmlkVHJhaWxpbmdFeHBhbnNpb247CiAK
LSAgICAvLyBXZSBhcmUgaXRlcmF0aW5nIGluIGdseXBoIG9yZGVyLCBub3Qgc3RyaW5nIG9yZGVy
LiBDb21wYXJlIHRoaXMgdG8gV2lkdGhJdGVyYXRvcjo6YWR2YW5jZUludGVybmFsKCkKKyAgICAv
LyBXZSBhcmUgaXRlcmF0aW5nIGluIGdseXBoIG9yZGVyIChhbHdheXMgTFRSKSwgbm90IHN0cmlu
ZyBvcmRlci4gQ29tcGFyZSB0aGlzIHRvIFdpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRlcm5hbCgp
CiAgICAgZm9yIChzaXplX3QgcnVuSW5kZXggPSAwOyBydW5JbmRleCA8IHJ1bkNvdW50OyArK3J1
bkluZGV4KSB7CiAgICAgICAgIENvbXBsZXhUZXh0UnVuJiBjb21wbGV4VGV4dFJ1biA9ICptX2Nv
bXBsZXhUZXh0UnVuc1tydW5JbmRleF07CiAgICAgICAgIHVuc2lnbmVkIGdseXBoQ291bnQgPSBj
b21wbGV4VGV4dFJ1bi5nbHlwaENvdW50KCk7CkBAIC02NzUsMTMgKzY3NiwxNCBAQCB2b2lkIENv
bXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQogCiAgICAgICAg
IC8vIFJlcHJlc2VudCB0aGUgaW5pdGlhbCBhZHZhbmNlIGZvciBhIHRleHQgcnVuIGJ5IGFkanVz
dGluZyB0aGUgYWR2YW5jZQogICAgICAgICAvLyBvZiB0aGUgbGFzdCBnbHlwaCBvZiB0aGUgcHJl
dmlvdXMgdGV4dCBydW4gaW4gdGhlIGdseXBoIGJ1ZmZlci4KLSAgICAgICAgaWYgKCFjb21wbGV4
VGV4dFJ1bi5nbHlwaE9yaWdpbnMoKSAmJiBydW5JbmRleCAmJiBtX2FkanVzdGVkQmFzZUFkdmFu
Y2VzLnNpemUoKSkgewotICAgICAgICAgICAgQ0dTaXplIHByZXZpb3VzQWR2YW5jZSA9IG1fYWRq
dXN0ZWRCYXNlQWR2YW5jZXMubGFzdCgpOwotICAgICAgICAgICAgcHJldmlvdXNBZHZhbmNlLndp
ZHRoICs9IGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNlKCkud2lkdGg7Ci0gICAgICAgICAg
ICBwcmV2aW91c0FkdmFuY2UuaGVpZ2h0IC09IGNvbXBsZXhUZXh0UnVuLmluaXRpYWxBZHZhbmNl
KCkuaGVpZ2h0OwotICAgICAgICAgICAgbV9hZGp1c3RlZEJhc2VBZHZhbmNlc1ttX2FkanVzdGVk
QmFzZUFkdmFuY2VzLnNpemUoKSAtIDFdID0gcHJldmlvdXNBZHZhbmNlOworICAgICAgICBpZiAo
IWNvbXBsZXhUZXh0UnVuLmdseXBoT3JpZ2lucygpKSB7CisgICAgICAgICAgICBpZiAocnVuSW5k
ZXggJiYgbV9hZGp1c3RlZEJhc2VBZHZhbmNlcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBD
R1NpemUmIHByZXZpb3VzQWR2YW5jZSA9IG1fYWRqdXN0ZWRCYXNlQWR2YW5jZXMubGFzdCgpOwor
ICAgICAgICAgICAgICAgIHByZXZpb3VzQWR2YW5jZS53aWR0aCArPSBjb21wbGV4VGV4dFJ1bi5p
bml0aWFsQWR2YW5jZSgpLndpZHRoOworICAgICAgICAgICAgICAgIHByZXZpb3VzQWR2YW5jZS5o
ZWlnaHQgLT0gY29tcGxleFRleHRSdW4uaW5pdGlhbEFkdmFuY2UoKS5oZWlnaHQ7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBtX3RvdGFsV2lkdGggKz0gY29tcGxleFRleHRSdW4uaW5pdGlh
bEFkdmFuY2UoKS53aWR0aDsKICAgICAgICAgfQotICAgICAgICB3aWR0aFNpbmNlTGFzdENvbW1p
dCArPSBjb21wbGV4VGV4dFJ1bi5pbml0aWFsQWR2YW5jZSgpLndpZHRoOwogCiAgICAgICAgIGlm
ICghY29tcGxleFRleHRSdW4uaXNMVFIoKSkKICAgICAgICAgICAgIG1faXNMVFJPbmx5ID0gZmFs
c2U7CkBAIC02OTcsNyArNjk5LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmFkanVz
dEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgYm9vbCBpc01vbm90b25pYyA9IHRydWU7CiAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdseXBoQ291bnQ7IGkrKykgewotICAg
ICAgICAgICAgQ0ZJbmRleCBjaGFyYWN0ZXJJbmRleCA9IGNvbXBsZXhUZXh0UnVuLmluZGV4QXQo
aSk7CisgICAgICAgICAgICBDRkluZGV4IGNoYXJhY3RlckluZGV4ID0gY29tcGxleFRleHRSdW4u
c3RyaW5nT2Zmc2V0QXQoaSk7CiAgICAgICAgICAgICBpZiAobV9ydW4ubHRyKCkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoY2hhcmFjdGVySW5kZXggPCBsYXN0Q2hhcmFjdGVySW5kZXgpCiAgICAg
ICAgICAgICAgICAgICAgIGlzTW9ub3RvbmljID0gZmFsc2U7CkBAIC03MTEsMTYgKzcxMywxNiBA
QCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5cGhzQW5kQWR2YW5jZXMoKQog
ICAgICAgICAgICAgaWYgKGxhc3RHbHlwaCkKICAgICAgICAgICAgICAgICBuZXh0Q2ggPSAnICc7
CiAgICAgICAgICAgICBlbHNlIGlmIChpICsgMSA8IGdseXBoQ291bnQpCi0gICAgICAgICAgICAg
ICAgbmV4dENoID0gKihjcCArIGNvbXBsZXhUZXh0UnVuLmluZGV4QXQoaSArIDEpKTsKKyAgICAg
ICAgICAgICAgICBuZXh0Q2ggPSAqKGNwICsgY29tcGxleFRleHRSdW4uc3RyaW5nT2Zmc2V0QXQo
aSArIDEpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBuZXh0Q2ggPSAqKG1f
Y29tcGxleFRleHRSdW5zW3J1bkluZGV4ICsgMV0tPmNoYXJhY3RlcnMoKSArIG1fY29tcGxleFRl
eHRSdW5zW3J1bkluZGV4ICsgMV0tPmluZGV4QXQoMCkpOworICAgICAgICAgICAgICAgIG5leHRD
aCA9ICoobV9jb21wbGV4VGV4dFJ1bnNbcnVuSW5kZXggKyAxXS0+Y2hhcmFjdGVycygpICsgbV9j
b21wbGV4VGV4dFJ1bnNbcnVuSW5kZXggKyAxXS0+c3RyaW5nT2Zmc2V0QXQoMCkpOwogCiAgICAg
ICAgICAgICBib29sIHRyZWF0QXNTcGFjZSA9IEZvbnRDYXNjYWRlOjp0cmVhdEFzU3BhY2UoY2gp
OwogICAgICAgICAgICAgQ0dHbHlwaCBnbHlwaCA9IHRyZWF0QXNTcGFjZSA/IGZvbnQuc3BhY2VH
bHlwaCgpIDogZ2x5cGhzW2ldOwogICAgICAgICAgICAgQ0dTaXplIGFkdmFuY2UgPSB0cmVhdEFz
U3BhY2UgPyBDR1NpemVNYWtlKHNwYWNlV2lkdGgsIGFkdmFuY2VzW2ldLmhlaWdodCkgOiBhZHZh
bmNlc1tpXTsKIAogICAgICAgICAgICAgaWYgKGNoID09ICdcdCcgJiYgbV9ydW4uYWxsb3dUYWJz
KCkpCi0gICAgICAgICAgICAgICAgYWR2YW5jZS53aWR0aCA9IG1fZm9udC50YWJXaWR0aChmb250
LCBtX3J1bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxXaWR0aCArIHdpZHRoU2lu
Y2VMYXN0Q29tbWl0KTsKKyAgICAgICAgICAgICAgICBhZHZhbmNlLndpZHRoID0gbV9mb250LnRh
YldpZHRoKGZvbnQsIG1fcnVuLnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgbV90b3RhbFdpZHRo
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKEZvbnRDYXNjYWRlOjp0cmVhdEFzWmVyb1dpZHRoU3Bh
Y2UoY2gpICYmICF0cmVhdEFzU3BhY2UpIHsKICAgICAgICAgICAgICAgICBhZHZhbmNlLndpZHRo
ID0gMDsKICAgICAgICAgICAgICAgICBnbHlwaCA9IGZvbnQuc3BhY2VHbHlwaCgpOwpAQCAtNzgx
LDcgKzc4Myw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RHbHlwaHNBbmRB
ZHZhbmNlcygpCiAgICAgICAgICAgICAgICAgICAgIGFmdGVyRXhwYW5zaW9uID0gZmFsc2U7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHdpZHRoU2luY2VMYXN0Q29tbWl0ICs9IGFkdmFu
Y2Uud2lkdGg7IAorICAgICAgICAgICAgbV90b3RhbFdpZHRoICs9IGFkdmFuY2Uud2lkdGg7CiAK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBDb21iaW5pbmcgbWFya3Mgc2hvdWxkIHJlY2VpdmUgYSB0
ZXh0IGVtcGhhc2lzIG1hcmsgaWYgdGhleSBhcmUgY29tYmluZSB3aXRoIGEgc3BhY2UuCiAgICAg
ICAgICAgICBpZiAobV9mb3JUZXh0RW1waGFzaXMgJiYgKCFGb250Q2FzY2FkZTo6Y2FuUmVjZWl2
ZVRleHRFbXBoYXNpcyhjaCkgfHwgKFVfR0VUX0dDX01BU0soY2gpICYgVV9HQ19NX01BU0spKSkK
QEAgLTgxMyw4ICs4MTUsNiBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6YWRqdXN0R2x5
cGhzQW5kQWR2YW5jZXMoKQogICAgICAgICBpZiAoIWlzTW9ub3RvbmljKQogICAgICAgICAgICAg
Y29tcGxleFRleHRSdW4uc2V0SXNOb25Nb25vdG9uaWMoKTsKICAgICB9Ci0KLSAgICBtX3RvdGFs
V2lkdGggKz0gd2lkdGhTaW5jZUxhc3RDb21taXQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21w
bGV4VGV4dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaAppbmRleCBkNGU3MGYzYzI0NzcxYTU5ZDA4NzhiMTdh
YjNlMGU3NGJhMjkyZTI5Li5lNmY5MjM4YjM2ZTY2YzVkNzMwNTE1NjZhZWRhN2Y1OWNkN2U5ZTNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxl
eFRleHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0
ZXJzOyB9CiAgICAgICAgIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zdHJpbmdMb2NhdGlvbjsgfQogICAgICAgICBzaXplX3Qgc3RyaW5nTGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmdMZW5ndGg7IH0KLSAgICAgICAgQUxXQVlTX0lOTElORSBDRkluZGV4
IGluZGV4QXQoc2l6ZV90IGkpIGNvbnN0OworICAgICAgICBBTFdBWVNfSU5MSU5FIENGSW5kZXgg
c3RyaW5nT2Zmc2V0QXQoc2l6ZV90KSBjb25zdDsKICAgICAgICAgQ0ZJbmRleCBpbmRleEJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleEJlZ2luOyB9CiAgICAgICAgIENGSW5kZXggaW5kZXhF
bmQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4RW5kOyB9CiAgICAgICAgIENGSW5kZXggZW5kT2Zm
c2V0QXQoc2l6ZV90IGkpIGNvbnN0IHsgQVNTRVJUKCFtX2lzTW9ub3RvbmljKTsgcmV0dXJuIG1f
Z2x5cGhFbmRPZmZzZXRzW2ldOyB9CkBAIC0xMjUsMTIgKzEyNSwxMiBAQCBwcml2YXRlOgogICAg
ICAgICBWZWN0b3I8Q0dQb2ludCwgNjQ+IG1fZ2x5cGhPcmlnaW5zOwogICAgICAgICBWZWN0b3I8
Q0dHbHlwaCwgNjQ+IG1fZ2x5cGhzVmVjdG9yOwogICAgICAgICBWZWN0b3I8Q0ZJbmRleCwgNjQ+
IG1fZ2x5cGhFbmRPZmZzZXRzOwotICAgICAgICBWZWN0b3I8Q0ZJbmRleCwgNjQ+IG1fY29yZVRl
eHRJbmRpY2VzVmVjdG9yOworICAgICAgICBWZWN0b3I8Q0ZJbmRleCwgNjQ+IG1fc3RyaW5nT2Zm
c2V0c1ZlY3RvcjsKICAgICAgICAgQ0dTaXplIG1faW5pdGlhbEFkdmFuY2U7CiAgICAgICAgIGNv
bnN0IEZvbnQmIG1fZm9udDsKICAgICAgICAgY29uc3QgVUNoYXIqIG1fY2hhcmFjdGVyczsKICAg
ICAgICAgc2l6ZV90IG1fc3RyaW5nTGVuZ3RoOwotICAgICAgICBjb25zdCBDRkluZGV4KiBtX2Nv
cmVUZXh0SW5kaWNlczsKKyAgICAgICAgY29uc3QgQ0ZJbmRleCogbV9zdHJpbmdPZmZzZXRzOwog
ICAgICAgICBjb25zdCBDR0dseXBoKiBtX2dseXBoczsKICAgICAgICAgY29uc3QgQ0dTaXplKiBt
X2Jhc2VBZHZhbmNlczsKICAgICAgICAgQ0ZJbmRleCBtX2luZGV4QmVnaW47CkBAIC0xNjYsNyAr
MTY2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBpbnRvIExpbmVzLCBlYWNoIG9mIHdoaWNoIGlzIGEg
c2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB3aGljaCBzaG91bGQgdXNlIHRoZSBzYW1lIEZvbnQuIENv
cmUgVGV4dCB0aGVuIHBhcnRpdGlvbnMKICAgICAvLyB0aGUgTGluZSBpbnRvIENvbXBsZXhUZXh0
UnVucy4KICAgICAvLyBDb21wbGV4VGV4dFJ1bjo6c3RyaW5nTG9jYXRpb24oKSBhbmQgQ29tcGxl
eFRleHRSdW46OnN0cmluZ0xlbmd0aCgpIHJlZmVyIHRvIHRoZSBvZmZzZXQgYW5kIGxlbmd0aCBv
ZiB0aGUgTGluZQotICAgIC8vIHJlbGF0aXZlIHRvIG1fcnVuLnN0cmluZygpLiBDb21wbGV4VGV4
dFJ1bjo6aW5kZXhBdCgpIHJldHVybnMgdG8gdGhlIG9mZnNldCBvZiBhIGNvZGVwb2ludCByZWxh
dGl2ZSB0bworICAgIC8vIHJlbGF0aXZlIHRvIG1fcnVuLnN0cmluZygpLiBDb21wbGV4VGV4dFJ1
bjo6c3RyaW5nT2Zmc2V0QXQoKSByZXR1cm5zIHRvIHRoZSBvZmZzZXQgb2YgYSBjb2RlcG9pbnQg
cmVsYXRpdmUgdG8KICAgICAvLyBpdHMgTGluZS4gQ29tcGxleFRleHRSdW46OmdseXBocygpIGFu
ZCBDb21wbGV4VGV4dFJ1bjo6YWR2YW5jZXMoKSByZWZlciB0byBnbHlwaHMgcmVsYXRpdmUgdG8g
dGhlIENvbXBsZXhUZXh0UnVuLgogICAgIC8vIFRoZSBsZW5ndGggb2YgdGhlIGVudGlyZSBUZXh0
UnVuIGlzIG1fcnVuLmxlbmd0aCgpCiAgICAgVmVjdG9yPFJlZlB0cjxDb21wbGV4VGV4dFJ1bj4s
IDE2PiBtX2NvbXBsZXhUZXh0UnVuczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbQppbmRleCA1ODIxNDI5ZDRmZDA5YjBhNWY0ZTAwMTFhNzcxMTE1MDA1ODA0MjQzLi5l
MzE4MmMxYzEzNjRjZmQ3ZWZhOTQyYzNmMDgxYWEyMjU3MGZhMTY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29y
ZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0xMTgsMTEgKzExOCwxMSBAQCBDb21wbGV4
VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bihDVFJ1blJlZiBj
dFJ1biwgY29uc3QgRm9udAogICAgICwgbV9pc01vbm90b25pYyh0cnVlKQogewogICAgIG1fZ2x5
cGhDb3VudCA9IENUUnVuR2V0R2x5cGhDb3VudChjdFJ1bik7Ci0gICAgbV9jb3JlVGV4dEluZGlj
ZXMgPSBDVFJ1bkdldFN0cmluZ0luZGljZXNQdHIoY3RSdW4pOwotICAgIGlmICghbV9jb3JlVGV4
dEluZGljZXMpIHsKLSAgICAgICAgbV9jb3JlVGV4dEluZGljZXNWZWN0b3IuZ3JvdyhtX2dseXBo
Q291bnQpOwotICAgICAgICBDVFJ1bkdldFN0cmluZ0luZGljZXMoY3RSdW4sIENGUmFuZ2VNYWtl
KDAsIDApLCBtX2NvcmVUZXh0SW5kaWNlc1ZlY3Rvci5kYXRhKCkpOwotICAgICAgICBtX2NvcmVU
ZXh0SW5kaWNlcyA9IG1fY29yZVRleHRJbmRpY2VzVmVjdG9yLmRhdGEoKTsKKyAgICBtX3N0cmlu
Z09mZnNldHMgPSBDVFJ1bkdldFN0cmluZ0luZGljZXNQdHIoY3RSdW4pOworICAgIGlmICghbV9z
dHJpbmdPZmZzZXRzKSB7CisgICAgICAgIG1fc3RyaW5nT2Zmc2V0c1ZlY3Rvci5ncm93KG1fZ2x5
cGhDb3VudCk7CisgICAgICAgIENUUnVuR2V0U3RyaW5nSW5kaWNlcyhjdFJ1biwgQ0ZSYW5nZU1h
a2UoMCwgMCksIG1fc3RyaW5nT2Zmc2V0c1ZlY3Rvci5kYXRhKCkpOworICAgICAgICBtX3N0cmlu
Z09mZnNldHMgPSBtX3N0cmluZ09mZnNldHNWZWN0b3IuZGF0YSgpOwogICAgIH0KIAogICAgIG1f
Z2x5cGhzID0gQ1RSdW5HZXRHbHlwaHNQdHIoY3RSdW4pOwpAQCAtMTYzLDE5ICsxNjMsMTkgQEAg
Q29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4oY29u
c3QgRm9udCYgZm9udCwgY29uc3QgVUMKICAgICAsIG1faXNMVFIobHRyKQogICAgICwgbV9pc01v
bm90b25pYyh0cnVlKQogewotICAgIG1fY29yZVRleHRJbmRpY2VzVmVjdG9yLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobV9zdHJpbmdMZW5ndGgpOworICAgIG1fc3RyaW5nT2Zmc2V0c1ZlY3Rvci5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fc3RyaW5nTGVuZ3RoKTsKICAgICB1bnNpZ25lZCByID0g
MDsKICAgICB3aGlsZSAociA8IG1fc3RyaW5nTGVuZ3RoKSB7Ci0gICAgICAgIG1fY29yZVRleHRJ
bmRpY2VzVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChyKTsKKyAgICAgICAgbV9zdHJpbmdPZmZzZXRz
VmVjdG9yLnVuY2hlY2tlZEFwcGVuZChyKTsKICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXI7CiAg
ICAgICAgIFUxNl9ORVhUKG1fY2hhcmFjdGVycywgciwgbV9zdHJpbmdMZW5ndGgsIGNoYXJhY3Rl
cik7CiAgICAgfQotICAgIG1fZ2x5cGhDb3VudCA9IG1fY29yZVRleHRJbmRpY2VzVmVjdG9yLnNp
emUoKTsKKyAgICBtX2dseXBoQ291bnQgPSBtX3N0cmluZ09mZnNldHNWZWN0b3Iuc2l6ZSgpOwog
ICAgIGlmICghbHRyKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgciA9IDAsIGVuZCA9IG1fZ2x5
cGhDb3VudCAtIDE7IHIgPCBtX2dseXBoQ291bnQgLyAyOyArK3IsIC0tZW5kKQotICAgICAgICAg
ICAgc3RkOjpzd2FwKG1fY29yZVRleHRJbmRpY2VzVmVjdG9yW3JdLCBtX2NvcmVUZXh0SW5kaWNl
c1ZlY3RvcltlbmRdKTsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChtX3N0cmluZ09mZnNldHNWZWN0
b3Jbcl0sIG1fc3RyaW5nT2Zmc2V0c1ZlY3RvcltlbmRdKTsKICAgICB9Ci0gICAgbV9jb3JlVGV4
dEluZGljZXMgPSBtX2NvcmVUZXh0SW5kaWNlc1ZlY3Rvci5kYXRhKCk7CisgICAgbV9zdHJpbmdP
ZmZzZXRzID0gbV9zdHJpbmdPZmZzZXRzVmVjdG9yLmRhdGEoKTsKIAogICAgIC8vIFN5bnRoZXNp
emUgYSBydW4gb2YgbWlzc2luZyBnbHlwaHMuCiAgICAgbV9nbHlwaHNWZWN0b3IuZmlsbCgwLCBt
X2dseXBoQ291bnQpOwpAQCAtMjY2LDggKzI2NiwxNCBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNw
LAogCiAgICAgQ0ZJbmRleCBydW5Db3VudCA9IENGQXJyYXlHZXRDb3VudChydW5BcnJheSk7CiAK
LSAgICBmb3IgKENGSW5kZXggciA9IDA7IHIgPCBydW5Db3VudDsgcisrKSB7Ci0gICAgICAgIENU
UnVuUmVmIGN0UnVuID0gc3RhdGljX2Nhc3Q8Q1RSdW5SZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgocnVuQXJyYXksIG1fcnVuLmx0cigpID8gciA6IHJ1bkNvdW50IC0gMSAtIHIpKTsKKyAgICBm
b3IgKENGSW5kZXggcnVuSW5kZXggPSAwOyBydW5JbmRleCA8IHJ1bkNvdW50OyBydW5JbmRleCsr
KSB7CisgICAgICAgIC8vIENvcmUgVGV4dCBnaXZlcyB1cyB0aGUgcnVucyBpbiBMVFIgb3JkZXIg
KHNvIHRoZSBydW5zIGluIGFuIFJUTCBzdHJpbmcgZ28gbG9naWNhbGx5IGZyb20gdGhlIGVuZCBv
ZiB0aGUgc3RyaW5nIHRvIHRoZSBiZWdpbm5pbmcpCisgICAgICAgIC8vIEluIGFkZGl0aW9uLCB0
aGUgZ2x5cGhzIGluIHRoZSBydW5zIGFyZSBhbHNvIGluIExUUiBvcmRlciAod2hpY2ggbWVhbnMg
dGhlIGFkdmFuY2VzIGdlbmVyYWxseSBoYXZlIGEgcG9zaXRpdmUgeCB2YWx1ZSkKKyAgICAgICAg
Ly8gd2hlcmUgInggdmFsdWUiIGluY3JlYXNlcyB0byB0aGUgcmlnaHQuCisgICAgICAgIC8vIEZv
ciBhbiBSVEwgcnVuLCB3ZSBpdGVyYXRlIGJhY2t3YXJkcyB0byBiZSBjb25zaXN0ZW50IHdpdGgg
Y29sbGVjdENvbXBsZXhUZXh0UnVucygpICh3aGljaCB3aWxsIGNhbGwgdXMgaW4gc3RyaW5nCisg
ICAgICAgIC8vIG9yZGVyKS4gVGhlbiwgYXQgdGhlIGVuZCBvZiBjb2xsZWN0Q29tcGxleFRleHRS
dW5zKCksIHdlJ2xsIHJldmVyc2UgdGhlIHdob2xlIGNvbGxlY3Rpb24gb2YgcnVucyB0byBwdXQg
dGhlIHJ1bnMKKyAgICAgICAgLy8gaW4gTFRSIG9yZGVyLgorICAgICAgICBDVFJ1blJlZiBjdFJ1
biA9IHN0YXRpY19jYXN0PENUUnVuUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJ1bkFycmF5
LCBtX3J1bi5sdHIoKSA/IHJ1bkluZGV4IDogcnVuQ291bnQgLSAxIC0gcnVuSW5kZXgpKTsKICAg
ICAgICAgQVNTRVJUKENGR2V0VHlwZUlEKGN0UnVuKSA9PSBDVFJ1bkdldFR5cGVJRCgpKTsKICAg
ICAgICAgQ0ZSYW5nZSBydW5SYW5nZSA9IENUUnVuR2V0U3RyaW5nUmFuZ2UoY3RSdW4pOwogICAg
ICAgICBjb25zdCBGb250KiBydW5Gb250ID0gZm9udDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0LmNwcAppbmRleCAxZjZjNjFiNTZiMWUxMTBmNTdlYjcxNzUwMDdmN2RhZTY3N2Fi
YTAwLi4zYmI3MWRiZDRlNDg0ZmY3OWVkODY0NGY4NTQyMmQ5OTNjYjRmYjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMjk2LDggKzEyOTYsNyBAQCBmbG9h
dCBSZW5kZXJUZXh0Ojp3aWR0aCh1bnNpZ25lZCBmcm9tLCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQ
b3MsIGJvb2wgZmlyc3RMaW5lLAogICAgIGlmIChmcm9tID49IHRleHRMZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoZnJvbSArIGxlbiA+IHRleHRMZW5ndGgoKSkKLSAgICAg
ICAgbGVuID0gdGV4dExlbmd0aCgpIC0gZnJvbTsKKyAgICBsZW4gPSBzdGQ6Om1pbihsZW4sIHRl
eHRMZW5ndGgoKSAtIGZyb20pOwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIGxpbmVTdHlsZSA9
IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHlsZSgpOwogICAgIHJldHVybiB3aWR0
aChmcm9tLCBsZW4sIGxpbmVTdHlsZS5mb250Q2FzY2FkZSgpLCB4UG9zLCBmYWxsYmFja0ZvbnRz
LCBnbHlwaE92ZXJmbG93KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>