<?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>217125</bug_id>
          
          <creation_ts>2020-09-30 07:37:29 -0700</creation_ts>
          <short_desc>[LFC][Integration] Add LineRunIterator</short_desc>
          <delta_ts>2020-10-01 05:17:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>bfulgham</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1693374</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-30 07:37:29 -0700</bug_when>
    <thetext>For iterating line content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693377</commentid>
    <comment_count>1</comment_count>
      <attachid>410118</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-30 07:41:01 -0700</bug_when>
    <thetext>Created attachment 410118
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693685</commentid>
    <comment_count>2</comment_count>
      <attachid>410210</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-01 01:57:51 -0700</bug_when>
    <thetext>Created attachment 410210
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693722</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-01 05:16:47 -0700</bug_when>
    <thetext>Committed r267830: &lt;https://trac.webkit.org/changeset/267830&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410210.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693723</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-01 05:17:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/69833104&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410118</attachid>
            <date>2020-09-30 07:41:01 -0700</date>
            <delta_ts>2020-10-01 01:57:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lineruniterator.patch</filename>
            <type>text/plain</type>
            <size>13833</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMzc0N2Y1ODUzMjEuLjA4MGI1ZjgwNzEwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDIwLTA5LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQWRkIExpbmVSdW5JdGVyYXRvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MTI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExpbmVSdW5J
dGVyYXRvciBpdGVyYXRpbmcgbGluZSBjb250ZW50LgorICAgICAgICBBbHNvIHJlbW92ZSBlbmQg
b2Zmc2V0IGZyb20gbW9kZXJuIHBhdGgsIGluc3RlYWQgc2V0IGluZGV4IHRvIHRoZSBjb250ZW50
IGVuZCBwb3NpdGlvbgorICAgICAgICBpbiB0cmF2ZXJzYWwgZnVuY3Rpb25zLgorCisgICAgICAg
ICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dGV4dFJ1bnNG
b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlv
dXQ6OnJ1bkZvciBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OlRleHRSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlRleHRSdW5JdGVyYXRvcjo6
dHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpMaW5lUnVuSXRlcmF0b3I6OkxpbmVSdW5JdGVyYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZVJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5l
eHRPbkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmxpbmVSdW4p
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yOjp0cmF2
ZXJzZU5leHRUZXh0UnVuSW5WaXN1YWxPcmRlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRSdW5JblRl
eHRPcmRlcik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpUZXh0UnVuOjpsZWdhY3lJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OkxpbmVSdW5JdGVyYXRvcjo6TGluZVJ1bkl0ZXJhdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lUnVuSXRlcmF0b3I6Om9wZXJh
dG9yKyspOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6bGVnYWN5
SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpMZWdhY3lQYXRoOjp0cmF2ZXJzZU5leHRPbkxpbmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxlZ2FjeVBhdGg6OmxlZ2FjeUlubGluZUJveCBj
b25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVu
SXRlcmF0b3JNb2Rlcm5QYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TW9kZXJuUGF0aDo6TW9kZXJuUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TW9kZXJuUGF0aDo6aXNMYXN0VGV4dFJ1bk9uTGluZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6aXNMYXN0VGV4dFJ1biBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6
dHJhdmVyc2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGg6OnRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRl
cik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6dHJh
dmVyc2VOZXh0T25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpN
b2Rlcm5QYXRoOjphdEVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TW9kZXJuUGF0aDo6bGVnYWN5SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpNb2Rlcm5QYXRoOjpzZXRBdEVuZCk6CisKIDIwMjAtMDkt
MjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMg
dXNlIE9wZXJhdGlvblB0clRhZyBmb3IgYWxsIG9wZXJhdGlvbnMgYW5kIGFubm90YXRlIG9wZXJh
dGlvbnMgaW4gQ1NTIEpJVApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCAz
ZGE2NDM4MjYyYmUuLjc4OGUyMmQxOTAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5jcHAKQEAgLTMwMiwyMSArMzAyLDE4IEBAIFRleHRSdW5JdGVyYXRvciBMaW5lTGF5b3V0Ojp0
ZXh0UnVuc0Zvcihjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJUZXh0KSBjb25zdAogICAgIGF1dG8q
IGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZW5kZXJUZXh0KTsK
ICAgICBBU1NFUlQobGF5b3V0Qm94KTsKIAotICAgIE9wdGlvbmFsPHNpemVfdD4gZmlyc3RJbmRl
eDsKLSAgICBzaXplX3QgbGFzdEluZGV4ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGlubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgYXV0byYgcnVuID0g
aW5saW5lQ29udGVudC0+cnVuc1tpXTsKLSAgICAgICAgaWYgKCZydW4ubGF5b3V0Qm94KCkgPT0g
bGF5b3V0Qm94KSB7Ci0gICAgICAgICAgICBpZiAoIWZpcnN0SW5kZXgpCi0gICAgICAgICAgICAg
ICAgZmlyc3RJbmRleCA9IGk7Ci0gICAgICAgICAgICBsYXN0SW5kZXggPSBpOwotICAgICAgICB9
IGVsc2UgaWYgKGZpcnN0SW5kZXgpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9CisgICAgYXV0
byBmaXJzdEluZGV4ID0gWyZdKCkgLT4gT3B0aW9uYWw8c2l6ZV90PiB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ29udGVudC0+cnVucy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKCZpbmxpbmVDb250ZW50LT5ydW5zW2ldLmxheW91dEJveCgpID09IGxheW91
dEJveCkKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4geyB9OworICAgIH0oKTsKKwogICAgIGlmICghZmlyc3RJbmRleCkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAotICAgIHJldHVybiB7IExheW91dEludGVncmF0aW9uOjpNb2Rlcm5QYXRoKCppbmxp
bmVDb250ZW50LCAqZmlyc3RJbmRleCwgbGFzdEluZGV4ICsgMSkgfTsKKyAgICByZXR1cm4geyBM
YXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aCgqaW5saW5lQ29udGVudCwgKmZpcnN0SW5kZXgp
IH07CiB9CiAKIFJ1bkl0ZXJhdG9yIExpbmVMYXlvdXQ6OnJ1bkZvcihjb25zdCBSZW5kZXJFbGVt
ZW50JiByZW5kZXJFbGVtZW50KSBjb25zdApAQCAtMzMwLDcgKzMyNyw3IEBAIFJ1bkl0ZXJhdG9y
IExpbmVMYXlvdXQ6OnJ1bkZvcihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KSBj
b25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ29udGVudC0+cnVucy5zaXpl
KCk7ICsraSkgewogICAgICAgICBhdXRvJiBydW4gPSAgaW5saW5lQ29udGVudC0+cnVuc1tpXTsK
ICAgICAgICAgaWYgKCZydW4ubGF5b3V0Qm94KCkgPT0gbGF5b3V0Qm94KQotICAgICAgICAgICAg
cmV0dXJuIHsgTGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGgoKmlubGluZUNvbnRlbnQsIGks
IGkgKyAxKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgTGF5b3V0SW50ZWdyYXRpb246Ok1vZGVy
blBhdGgoKmlubGluZUNvbnRlbnQsIGkpIH07CiAgICAgfQogCiAgICAgcmV0dXJuIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvblJ1bkl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcAppbmRleCA5OWE2NjE0NGE2YjQuLmY0ZGYw
ODZiNTRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yLmNwcApAQCAtMzgsMjIg
KzM4LDYgQEAgUnVuSXRlcmF0b3I6OlJ1bkl0ZXJhdG9yKFJ1bjo6UGF0aFZhcmlhbnQmJiBwYXRo
VmFyaWFudCkKIHsKIH0KIAotVGV4dFJ1bkl0ZXJhdG9yJiBSdW5JdGVyYXRvcjo6dHJhdmVyc2VO
ZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIoKQotewotICAgIFdURjo6c3dpdGNoT24obV9ydW4ubV9w
YXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNlTmV4dFRl
eHRSdW5JblZpc3VhbE9yZGVyKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGRvd25jYXN0PFRleHRS
dW5JdGVyYXRvcj4oKnRoaXMpOwotfQotCi1UZXh0UnVuSXRlcmF0b3ImIFJ1bkl0ZXJhdG9yOjp0
cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKQotewotICAgIFdURjo6c3dpdGNoT24obV9y
dW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgewotICAgICAgICBwYXRoLnRyYXZlcnNl
TmV4dFRleHRSdW5JblRleHRPcmRlcigpOwotICAgIH0pOwotICAgIHJldHVybiBkb3duY2FzdDxU
ZXh0UnVuSXRlcmF0b3I+KCp0aGlzKTsKLX0KLQogYm9vbCBSdW5JdGVyYXRvcjo6b3BlcmF0b3I9
PShjb25zdCBSdW5JdGVyYXRvciYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKG1fcnVuLm1fcGF0
aFZhcmlhbnQuaW5kZXgoKSAhPSBvdGhlci5tX3J1bi5tX3BhdGhWYXJpYW50LmluZGV4KCkpCkBA
IC03Niw2ICs2MCw0MCBAQCBUZXh0UnVuSXRlcmF0b3I6OlRleHRSdW5JdGVyYXRvcihSdW46OlBh
dGhWYXJpYW50JiYgcGF0aFZhcmlhbnQpCiB7CiB9CiAKK1RleHRSdW5JdGVyYXRvciYgVGV4dFJ1
bkl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5WaXN1YWxPcmRlcigpCit7CisgICAgV1RG
Ojpzd2l0Y2hPbihtX3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAg
IHBhdGgudHJhdmVyc2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIoKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK1RleHRSdW5JdGVyYXRvciYgVGV4dFJ1bkl0ZXJhdG9yOjp0cmF2
ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKQoreworICAgIFdURjo6c3dpdGNoT24obV9ydW4u
bV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICBwYXRoLnRyYXZlcnNlTmV4
dFRleHRSdW5JblRleHRPcmRlcigpOworICAgIH0pOworICAgIHJldHVybiAqdGhpczsKK30KKwor
TGluZVJ1bkl0ZXJhdG9yOjpMaW5lUnVuSXRlcmF0b3IoUnVuOjpQYXRoVmFyaWFudCYmIHBhdGhW
YXJpYW50KQorICAgIDogUnVuSXRlcmF0b3IoV1RGTW92ZShwYXRoVmFyaWFudCkpCit7Cit9CisK
K0xpbmVSdW5JdGVyYXRvcjo6TGluZVJ1bkl0ZXJhdG9yKGNvbnN0IFJ1bkl0ZXJhdG9yJiBydW5J
dGVyYXRvcikKKyAgICA6IFJ1bkl0ZXJhdG9yKHJ1bkl0ZXJhdG9yKQoreworfQorCitMaW5lUnVu
SXRlcmF0b3ImIExpbmVSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0T25MaW5lKCkKK3sKKyAgICBX
VEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAg
ICAgcGF0aC50cmF2ZXJzZU5leHRPbkxpbmUoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoaXM7
Cit9CisKIHN0YXRpYyBjb25zdCBSZW5kZXJCbG9ja0Zsb3cqIGxpbmVMYXlvdXRTeXN0ZW1GbG93
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKIHsKICAgICAvLyBJbiBj
dXJyZW50bHkgc3VwcG9ydGVkIGNhc2VzIHRoZSByZW5kZXJlciBpcyBhbHdheXMgZGlyZWN0IGNo
aWxkIG9mIHRoZSBmbG93LgpAQCAtMTI3LDUgKzE0NSwxMSBAQCBSdW5JdGVyYXRvciBydW5Gb3Io
Y29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJFbGVtZW50KQogICAgIHJldHVybiB7IExlZ2Fj
eVBhdGgocmVuZGVyRWxlbWVudC5pbmxpbmVCb3hXcmFwcGVyKCkpIH07CiB9CiAKK0xpbmVSdW5J
dGVyYXRvciBsaW5lUnVuKGNvbnN0IFJ1bkl0ZXJhdG9yJiBydW5JdGVyYXRvcikKK3sKKyAgICBy
ZXR1cm4gTGluZVJ1bkl0ZXJhdG9yKHJ1bkl0ZXJhdG9yKTsKK30KKworCiB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuaAppbmRleCBhODcxN2NiMTk4ZTguLjAzMmFjODNhZTcyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNz
IFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLWNsYXNzIEVs
ZW1lbnRSdW5JdGVyYXRvcjsKK2NsYXNzIExpbmVSdW5JdGVyYXRvcjsKIGNsYXNzIFRleHRSdW5J
dGVyYXRvcjsKIAogc3RydWN0IEVuZEl0ZXJhdG9yIHsgfTsKQEAgLTY4LDggKzY4LDEyIEBAIHB1
YmxpYzoKICAgICB1bnNpZ25lZCBtaW5pbXVtQ2FyZXRPZmZzZXQoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBtYXhpbXVtQ2FyZXRPZmZzZXQoKSBjb25zdDsKIAorICAgIC8vIEZvciBpbnRlcm1lZGlh
dGUgcG9ydGluZyBzdGVwcyBvbmx5LgorICAgIElubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkg
Y29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgUnVuSXRlcmF0b3I7CisgICAg
ZnJpZW5kIGNsYXNzIExpbmVSdW5JdGVyYXRvcjsKICAgICBmcmllbmQgY2xhc3MgVGV4dFJ1bkl0
ZXJhdG9yOwogCiAgICAgUGF0aFZhcmlhbnQgbV9wYXRoVmFyaWFudDsKQEAgLTg5LDYgKzkzLDgg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xhc3RUZXh0UnVuT25MaW5lKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0xhc3RUZXh0UnVuKCkgY29uc3Q7CisKKyAgICBJbmxpbmVUZXh0Qm94KiBsZWdhY3lJ
bmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihSdW46Omxl
Z2FjeUlubGluZUJveCgpKTsgfQogfTsKIAogY2xhc3MgUnVuSXRlcmF0b3IgewpAQCAtOTYsOSAr
MTAyLDYgQEAgcHVibGljOgogICAgIFJ1bkl0ZXJhdG9yKCkgOiBtX3J1bihMZWdhY3lQYXRoIHsg
bnVsbHB0ciwgeyB9IH0pIHsgfTsKICAgICBSdW5JdGVyYXRvcihSdW46OlBhdGhWYXJpYW50JiYp
OwogCi0gICAgVGV4dFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRUZXh0UnVuSW5WaXN1YWxPcmRl
cigpOwotICAgIFRleHRSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVy
KCk7Ci0KICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5k
KCk7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSdW5JdGVyYXRvciYpIGNvbnN0OwpA
QCAtMTI2LDEwICsxMjksMjQgQEAgcHVibGljOgogICAgIGNvbnN0IFRleHRSdW4mIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CiAgICAgY29uc3QgVGV4dFJ1biogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuICZnZXQoKTsgfQogCisgICAgVGV4dFJ1bkl0ZXJhdG9yJiB0cmF2
ZXJzZU5leHRUZXh0UnVuSW5WaXN1YWxPcmRlcigpOworICAgIFRleHRSdW5JdGVyYXRvciYgdHJh
dmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCk7CisKIHByaXZhdGU6CiAgICAgY29uc3QgVGV4
dFJ1biYgZ2V0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGV4dFJ1bj4obV9ydW4pOyB9CiB9
OwogCitjbGFzcyBMaW5lUnVuSXRlcmF0b3IgOiBwdWJsaWMgUnVuSXRlcmF0b3IgeworcHVibGlj
OgorICAgIExpbmVSdW5JdGVyYXRvcigpIHsgfQorICAgIExpbmVSdW5JdGVyYXRvcihjb25zdCBS
dW5JdGVyYXRvciYpOworICAgIExpbmVSdW5JdGVyYXRvcihSdW46OlBhdGhWYXJpYW50JiYpOwor
CisgICAgTGluZVJ1bkl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0
T25MaW5lKCk7IH0KKworICAgIExpbmVSdW5JdGVyYXRvciYgdHJhdmVyc2VOZXh0T25MaW5lKCk7
Cit9OworCiBjbGFzcyBUZXh0UnVuUmFuZ2UgewogcHVibGljOgogICAgIFRleHRSdW5SYW5nZShU
ZXh0UnVuSXRlcmF0b3IgYmVnaW4pCkBAIC0xNDgsNiArMTY1LDcgQEAgVGV4dFJ1bkl0ZXJhdG9y
IGZpcnN0VGV4dFJ1bkZvcihjb25zdCBSZW5kZXJUZXh0Jik7CiBUZXh0UnVuSXRlcmF0b3IgZmly
c3RUZXh0UnVuSW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogVGV4dFJ1blJhbmdl
IHRleHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIFJ1bkl0ZXJhdG9yIHJ1bkZvcihjb25z
dCBSZW5kZXJMaW5lQnJlYWsmKTsKK0xpbmVSdW5JdGVyYXRvciBsaW5lUnVuKGNvbnN0IFJ1bkl0
ZXJhdG9yJik7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKQEAgLTIyNiw2ICsyNDQsMTMgQEAgaW5saW5lIHVuc2lnbmVkIFJ1bjo6bWF4aW11
bUNhcmV0T2Zmc2V0KCkgY29uc3QKICAgICB9KTsKIH0KIAoraW5saW5lIElubGluZUJveCogUnVu
OjpsZWdhY3lJbmxpbmVCb3goKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1f
cGF0aFZhcmlhbnQsIFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgubGVnYWN5
SW5saW5lQm94KCk7CisgICAgfSk7Cit9CisKIGlubGluZSBib29sIFRleHRSdW46Omhhc0h5cGhl
bigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10o
YXV0byYgcGF0aCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2Fj
eVBhdGguaAppbmRleCA2ZDdjMTNmYWRkMGMuLmUyNmEzZjIwZDFkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0
b3JMZWdhY3lQYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmgKQEAgLTc5LDkgKzc5LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICsrbV9zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXg7CiAgICAg
fQogCisgICAgdm9pZCB0cmF2ZXJzZU5leHRPbkxpbmUoKQorICAgIHsKKyAgICAgICAgbV9pbmxp
bmVCb3ggPSBtX2lubGluZUJveC0+bmV4dExlYWZPbkxpbmUoKTsKKyAgICB9CisKICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTGVnYWN5UGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5s
aW5lQm94ID09IG90aGVyLm1faW5saW5lQm94OyB9CiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsg
cmV0dXJuICFtX2lubGluZUJveDsgfQogCisgICAgSW5saW5lQm94KiBsZWdhY3lJbmxpbmVCb3go
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PElubGluZUJveCo+KG1faW5saW5lQm94KTsgfQor
CiBwcml2YXRlOgogICAgIGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3goKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihtX2lubGluZUJveCk7IH0KICAgICBj
b25zdCBJbmxpbmVUZXh0Qm94KiBuZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCmluZGV4
IDc1MzRkMmMyOWJlMS4uOWJhYzE0OWYyZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGgu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvck1vZGVyblBhdGguaApAQCAtNDAsMTEgKzQwLDEyIEBAIHN0YXRpYyBGbG9h
dFBvaW50IGxpbmVQb3NpdGlvbihmbG9hdCBsZWZ0LCBmbG9hdCB0b3ApCiAKIGNsYXNzIE1vZGVy
blBhdGggewogcHVibGljOgotICAgIE1vZGVyblBhdGgoY29uc3QgRGlzcGxheTo6SW5saW5lQ29u
dGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0SW5kZXgsIHNpemVfdCBlbmRJbmRleCkK
KyAgICBNb2Rlcm5QYXRoKGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRlbnQmIGlubGluZUNvbnRl
bnQsIHNpemVfdCBzdGFydEluZGV4KQogICAgICAgICA6IG1faW5saW5lQ29udGVudCgmaW5saW5l
Q29udGVudCkKLSAgICAgICAgLCBtX2VuZEluZGV4KGVuZEluZGV4KQogICAgICAgICAsIG1fcnVu
SW5kZXgoc3RhcnRJbmRleCkKLSAgICB7IH0KKyAgICB7CisKKyAgICB9CiAgICAgTW9kZXJuUGF0
aChNb2Rlcm5QYXRoJiYpID0gZGVmYXVsdDsKICAgICBNb2Rlcm5QYXRoKGNvbnN0IE1vZGVyblBh
dGgmKSA9IGRlZmF1bHQ7CiAgICAgTW9kZXJuUGF0aCYgb3BlcmF0b3I9KGNvbnN0IE1vZGVyblBh
dGgmKSA9IGRlZmF1bHQ7CkBAIC04MiwzMSArODMsNjggQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKGlzTGFzdFRleHRSdW4oKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAg
ICAgIGF1dG8mIG5leHQgPSBydW5zKClbbV9ydW5JbmRleCArIDFdOwogICAgICAgICByZXR1cm4g
cnVuKCkubGluZUluZGV4KCkgIT0gbmV4dC5saW5lSW5kZXgoKTsKICAgICB9CisKICAgICBib29s
IGlzTGFzdFRleHRSdW4oKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcnVuSW5kZXgg
KyAxID09IG1fZW5kSW5kZXg7CisgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgICAgIEFT
U0VSVChydW4oKS50ZXh0Q29udGVudCgpKTsKKworICAgICAgICBpZiAobV9ydW5JbmRleCArIDEg
PT0gcnVucygpLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gJnJ1bigpLmxheW91dEJveCgpICE9ICZydW5zKClbbV9ydW5JbmRleCArIDFdLmxheW91dEJv
eCgpOwogICAgIH07CiAKICAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW5JblZpc3VhbE9yZGVy
KCkKICAgICB7CiAgICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CisgICAgICAgIEFTU0VSVChydW4o
KS50ZXh0Q29udGVudCgpKTsKKworICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4oKS5sYXlv
dXRCb3goKTsKKwogICAgICAgICArK21fcnVuSW5kZXg7CisKKyAgICAgICAgaWYgKCFhdEVuZCgp
ICYmICZsYXlvdXRCb3ggIT0gJnJ1bigpLmxheW91dEJveCgpKQorICAgICAgICAgICAgc2V0QXRF
bmQoKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcigp
CisgICAgeworICAgICAgICAvLyBGSVhNRTogTm8gUlRMIGluIExGQy4KKyAgICAgICAgdHJhdmVy
c2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIoKTsKKyAgICB9CisKKyAgICB2b2lkIHRyYXZlcnNl
TmV4dE9uTGluZSgpCisgICAgeworICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOworCisgICAgICAg
IGF1dG8gcHJldmlvdXNsaW5lSW5kZXggPSBydW4oKS5saW5lSW5kZXgoKTsKKworICAgICAgICAr
K21fcnVuSW5kZXg7CisKKyAgICAgICAgaWYgKCFhdEVuZCgpICYmIHByZXZpb3VzbGluZUluZGV4
ICE9IHJ1bigpLmxpbmVJbmRleCgpKQorICAgICAgICAgICAgc2V0QXRFbmQoKTsKICAgICB9Ci0g
ICAgdm9pZCB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKSB7ICB0cmF2ZXJzZU5leHRU
ZXh0UnVuSW5WaXN1YWxPcmRlcigpOyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTW9k
ZXJuUGF0aCYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudCA9PSBvdGhlci5t
X2lubGluZUNvbnRlbnQgJiYgbV9ydW5JbmRleCA9PSBvdGhlci5tX3J1bkluZGV4OyB9Ci0gICAg
Ym9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fcnVuSW5kZXggPT0gbV9lbmRJbmRleDsgfQor
ICAgIGJvb2wgYXRFbmQoKSBjb25zdCB7IHJldHVybiBtX3J1bkluZGV4ID09IHJ1bnMoKS5zaXpl
KCk7IH0KKworICAgIElubGluZUJveCogbGVnYWN5SW5saW5lQm94KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CiAKIHByaXZhdGU6CiAgICAgY29uc3QgRGlzcGxheTo6SW5saW5lQ29udGVudDo6UnVucyYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+cnVuczsgfQogICAgIGNvbnN0
IERpc3BsYXk6OlJ1biYgcnVuKCkgY29uc3QgeyByZXR1cm4gcnVucygpW21fcnVuSW5kZXhdOyB9
CiAgICAgY29uc3QgRGlzcGxheTo6TGluZSYgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5l
Q29udGVudC0+bGluZUZvclJ1bihydW4oKSk7IH0KKyAgICB2b2lkIHNldEF0RW5kKCkgeyBtX3J1
bkluZGV4ID0gcnVucygpLnNpemUoKTsgfQogCiAgICAgUmVmUHRyPGNvbnN0IERpc3BsYXk6Oklu
bGluZUNvbnRlbnQ+IG1faW5saW5lQ29udGVudDsKLSAgICBzaXplX3QgbV9lbmRJbmRleCB7IDAg
fTsKICAgICBzaXplX3QgbV9ydW5JbmRleCB7IDAgfTsKIH07CiAK
</data>
<flag name="review"
          id="425998"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="425981"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410210</attachid>
            <date>2020-10-01 01:57:51 -0700</date>
            <delta_ts>2020-10-01 05:16:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lineruniterator-2.patch</filename>
            <type>text/plain</type>
            <size>14698</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMzc0N2Y1ODUzMjEuLjhjOWM1ODYwZTQzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDIwLTA5LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gQWRkIExpbmVSdW5JdGVyYXRvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MTI1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAgICAgIEFkZCBMaW5lUnVuSXRl
cmF0b3IgaXRlcmF0aW5nIGxpbmUgY29udGVudC4KKyAgICAgICAgQWxzbyByZW1vdmUgZW5kIG9m
ZnNldCBmcm9tIG1vZGVybiBwYXRoLCBpbnN0ZWFkIHNldCBpbmRleCB0byB0aGUgY29udGVudCBl
bmQgcG9zaXRpb24KKyAgICAgICAgaW4gdHJhdmVyc2FsIGZ1bmN0aW9ucy4KKworICAgICAgICAq
IGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnRleHRSdW5zRm9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0
OjpydW5Gb3IgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpUZXh0UnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRSdW5JblZpc3VhbE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpUZXh0UnVuSXRlcmF0b3I6OnRy
YXZlcnNlTmV4dFRleHRSdW5JblRleHRPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZVJ1bkl0ZXJhdG9yOjpMaW5lUnVuSXRlcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0
T25MaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsaW5lUnVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvcjo6dHJhdmVy
c2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0
T3JkZXIpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvblJ1bkl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6VGV4dFJ1bjo6bGVnYWN5SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lUnVuSXRlcmF0b3I6OkxpbmVSdW5JdGVyYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZVJ1bkl0ZXJhdG9yOjpvcGVyYXRv
cisrKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW46OmxlZ2FjeUlu
bGluZUJveCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3JMZWdhY3lQYXRoLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGVnYWN5UGF0aDo6dHJhdmVyc2VOZXh0T25MaW5lKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMZWdhY3lQYXRoOjpsZWdhY3lJbmxpbmVCb3ggY29u
c3QpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
Ok1vZGVyblBhdGg6Ok1vZGVyblBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246Ok1vZGVyblBhdGg6OmlzTGFzdFRleHRSdW5PbkxpbmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGg6OmlzTGFzdFRleHRSdW4gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGg6OnRy
YXZlcnNlTmV4dFRleHRSdW5JblZpc3VhbE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dEludGVncmF0aW9uOjpNb2Rlcm5QYXRoOjp0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Ok1vZGVyblBhdGg6OnRyYXZl
cnNlTmV4dE9uTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9k
ZXJuUGF0aDo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246Ok1vZGVyblBhdGg6OmxlZ2FjeUlubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aDo6c2V0QXRFbmQpOgorCiAyMDIwLTA5LTI5
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgQWx3YXlzIHVz
ZSBPcGVyYXRpb25QdHJUYWcgZm9yIGFsbCBvcGVyYXRpb25zIGFuZCBhbm5vdGF0ZSBvcGVyYXRp
b25zIGluIENTUyBKSVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5
dHJlZS9EaXNwbGF5UnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheVJ1bi5oCmluZGV4IDJjNjQ4YTkyZDRlOS4uYzFiMDE1OTYwMTJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVJ1bi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UnVuLmgKQEAgLTc3LDYgKzc3LDgg
QEAgc3RydWN0IFJ1biB7CiAKICAgICBDYWNoZWRJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2NhY2hlZEltYWdlOyB9CiAKKyAgICBib29sIGhhc1VuZGVybHlpbmdMYXlvdXQoKSBjb25z
dCB7IHJldHVybiAhIW1fbGF5b3V0Qm94OyB9CisgICAgCiAgICAgY29uc3QgTGF5b3V0OjpCb3gm
IGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQogICAgIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggM2RhNjQzODI2MmJlLi43
ODhlMjJkMTkwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0zMDIs
MjEgKzMwMiwxOCBAQCBUZXh0UnVuSXRlcmF0b3IgTGluZUxheW91dDo6dGV4dFJ1bnNGb3IoY29u
c3QgUmVuZGVyVGV4dCYgcmVuZGVyVGV4dCkgY29uc3QKICAgICBhdXRvKiBsYXlvdXRCb3ggPSBt
X2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVyVGV4dCk7CiAgICAgQVNTRVJUKGxh
eW91dEJveCk7CiAKLSAgICBPcHRpb25hbDxzaXplX3Q+IGZpcnN0SW5kZXg7Ci0gICAgc2l6ZV90
IGxhc3RJbmRleCA9IDA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxpbmVDb250ZW50
LT5ydW5zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIHJ1biA9IGlubGluZUNvbnRlbnQt
PnJ1bnNbaV07Ci0gICAgICAgIGlmICgmcnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkgewot
ICAgICAgICAgICAgaWYgKCFmaXJzdEluZGV4KQotICAgICAgICAgICAgICAgIGZpcnN0SW5kZXgg
PSBpOwotICAgICAgICAgICAgbGFzdEluZGV4ID0gaTsKLSAgICAgICAgfSBlbHNlIGlmIChmaXJz
dEluZGV4KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQorICAgIGF1dG8gZmlyc3RJbmRleCA9
IFsmXSgpIC0+IE9wdGlvbmFsPHNpemVfdD4geworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGlubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICgm
aW5saW5lQ29udGVudC0+cnVuc1tpXS5sYXlvdXRCb3goKSA9PSBsYXlvdXRCb3gpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
KCk7CisKICAgICBpZiAoIWZpcnN0SW5kZXgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBy
ZXR1cm4geyBMYXlvdXRJbnRlZ3JhdGlvbjo6TW9kZXJuUGF0aCgqaW5saW5lQ29udGVudCwgKmZp
cnN0SW5kZXgsIGxhc3RJbmRleCArIDEpIH07CisgICAgcmV0dXJuIHsgTGF5b3V0SW50ZWdyYXRp
b246Ok1vZGVyblBhdGgoKmlubGluZUNvbnRlbnQsICpmaXJzdEluZGV4KSB9OwogfQogCiBSdW5J
dGVyYXRvciBMaW5lTGF5b3V0OjpydW5Gb3IoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxl
bWVudCkgY29uc3QKQEAgLTMzMCw3ICszMjcsNyBAQCBSdW5JdGVyYXRvciBMaW5lTGF5b3V0Ojpy
dW5Gb3IoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCkgY29uc3QKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNvbnRlbnQtPnJ1bnMuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgYXV0byYgcnVuID0gIGlubGluZUNvbnRlbnQtPnJ1bnNbaV07CiAgICAgICAgIGlmICgm
cnVuLmxheW91dEJveCgpID09IGxheW91dEJveCkKLSAgICAgICAgICAgIHJldHVybiB7IExheW91
dEludGVncmF0aW9uOjpNb2Rlcm5QYXRoKCppbmxpbmVDb250ZW50LCBpLCBpICsgMSkgfTsKKyAg
ICAgICAgICAgIHJldHVybiB7IExheW91dEludGVncmF0aW9uOjpNb2Rlcm5QYXRoKCppbmxpbmVD
b250ZW50LCBpKSB9OwogICAgIH0KIAogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW5JdGVyYXRvci5jcHAKaW5kZXggOTlhNjYxNDRhNmI0Li40MjNlYjRkN2NlNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
blJ1bkl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvci5jcHAKQEAgLTM4LDIyICszOCw2IEBAIFJ1bkl0
ZXJhdG9yOjpSdW5JdGVyYXRvcihSdW46OlBhdGhWYXJpYW50JiYgcGF0aFZhcmlhbnQpCiB7CiB9
CiAKLVRleHRSdW5JdGVyYXRvciYgUnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRSdW5JblZp
c3VhbE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQsIFtd
KGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZU5leHRUZXh0UnVuSW5WaXN1YWxP
cmRlcigpOwotICAgIH0pOwotICAgIHJldHVybiBkb3duY2FzdDxUZXh0UnVuSXRlcmF0b3I+KCp0
aGlzKTsKLX0KLQotVGV4dFJ1bkl0ZXJhdG9yJiBSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0VGV4
dFJ1bkluVGV4dE9yZGVyKCkKLXsKLSAgICBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlh
bnQsIFtdKGF1dG8mIHBhdGgpIHsKLSAgICAgICAgcGF0aC50cmF2ZXJzZU5leHRUZXh0UnVuSW5U
ZXh0T3JkZXIoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gZG93bmNhc3Q8VGV4dFJ1bkl0ZXJhdG9y
PigqdGhpcyk7Ci19Ci0KIGJvb2wgUnVuSXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgUnVuSXRl
cmF0b3ImIG90aGVyKSBjb25zdAogewogICAgIGlmIChtX3J1bi5tX3BhdGhWYXJpYW50LmluZGV4
KCkgIT0gb3RoZXIubV9ydW4ubV9wYXRoVmFyaWFudC5pbmRleCgpKQpAQCAtNzYsNiArNjAsNDAg
QEAgVGV4dFJ1bkl0ZXJhdG9yOjpUZXh0UnVuSXRlcmF0b3IoUnVuOjpQYXRoVmFyaWFudCYmIHBh
dGhWYXJpYW50KQogewogfQogCitUZXh0UnVuSXRlcmF0b3ImIFRleHRSdW5JdGVyYXRvcjo6dHJh
dmVyc2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIoKQoreworICAgIFdURjo6c3dpdGNoT24obV9y
dW4ubV9wYXRoVmFyaWFudCwgW10oYXV0byYgcGF0aCkgeworICAgICAgICBwYXRoLnRyYXZlcnNl
TmV4dFRleHRSdW5JblZpc3VhbE9yZGVyKCk7CisgICAgfSk7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCitUZXh0UnVuSXRlcmF0b3ImIFRleHRSdW5JdGVyYXRvcjo6dHJhdmVyc2VOZXh0VGV4dFJ1
bkluVGV4dE9yZGVyKCkKK3sKKyAgICBXVEY6OnN3aXRjaE9uKG1fcnVuLm1fcGF0aFZhcmlhbnQs
IFtdKGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcGF0aC50cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0
T3JkZXIoKTsKKyAgICB9KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK0xpbmVSdW5JdGVyYXRv
cjo6TGluZVJ1bkl0ZXJhdG9yKFJ1bjo6UGF0aFZhcmlhbnQmJiBwYXRoVmFyaWFudCkKKyAgICA6
IFJ1bkl0ZXJhdG9yKFdURk1vdmUocGF0aFZhcmlhbnQpKQoreworfQorCitMaW5lUnVuSXRlcmF0
b3I6OkxpbmVSdW5JdGVyYXRvcihjb25zdCBSdW5JdGVyYXRvciYgcnVuSXRlcmF0b3IpCisgICAg
OiBSdW5JdGVyYXRvcihydW5JdGVyYXRvcikKK3sKK30KKworTGluZVJ1bkl0ZXJhdG9yJiBMaW5l
UnVuSXRlcmF0b3I6OnRyYXZlcnNlTmV4dE9uTGluZSgpCit7CisgICAgV1RGOjpzd2l0Y2hPbiht
X3J1bi5tX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CisgICAgICAgIHBhdGgudHJhdmVy
c2VOZXh0T25MaW5lKCk7CisgICAgfSk7CisgICAgcmV0dXJuICp0aGlzOworfQorCiBzdGF0aWMg
Y29uc3QgUmVuZGVyQmxvY2tGbG93KiBsaW5lTGF5b3V0U3lzdGVtRmxvd0ZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCiB7CiAgICAgLy8gSW4gY3VycmVudGx5IHN1cHBv
cnRlZCBjYXNlcyB0aGUgcmVuZGVyZXIgaXMgYWx3YXlzIGRpcmVjdCBjaGlsZCBvZiB0aGUgZmxv
dy4KQEAgLTEyNyw1ICsxNDUsMjAgQEAgUnVuSXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckxp
bmVCcmVhayYgcmVuZGVyRWxlbWVudCkKICAgICByZXR1cm4geyBMZWdhY3lQYXRoKHJlbmRlckVs
ZW1lbnQuaW5saW5lQm94V3JhcHBlcigpKSB9OwogfQogCitMaW5lUnVuSXRlcmF0b3IgbGluZVJ1
bihjb25zdCBSdW5JdGVyYXRvciYgcnVuSXRlcmF0b3IpCit7CisgICAgcmV0dXJuIExpbmVSdW5J
dGVyYXRvcihydW5JdGVyYXRvcik7Cit9CisKK01vZGVyblBhdGgmIFJ1bjo6bW9kZXJuUGF0aCgp
Cit7CisgICAgcmV0dXJuIFdURjo6Z2V0PE1vZGVyblBhdGg+KG1fcGF0aFZhcmlhbnQpOworfQor
CitMZWdhY3lQYXRoJiBSdW46OmxlZ2FjeVBhdGgoKQoreworICAgIHJldHVybiBXVEY6OmdldDxM
ZWdhY3lQYXRoPihtX3BhdGhWYXJpYW50KTsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuSXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1
bkl0ZXJhdG9yLmgKaW5kZXggYTg3MTdjYjE5OGU4Li5kN2E5ZjdkNTQ5MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uUnVuSXRlcmF0b3IuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFzcyBSZW5kZXJUZXh0
OwogCiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1jbGFzcyBFbGVtZW50UnVuSXRl
cmF0b3I7CitjbGFzcyBMaW5lUnVuSXRlcmF0b3I7CiBjbGFzcyBUZXh0UnVuSXRlcmF0b3I7CiAK
IHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CkBAIC02OCwxMCArNjgsMTggQEAgcHVibGljOgogICAg
IHVuc2lnbmVkIG1pbmltdW1DYXJldE9mZnNldCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIG1heGlt
dW1DYXJldE9mZnNldCgpIGNvbnN0OwogCisgICAgLy8gRm9yIGludGVybWVkaWF0ZSBwb3J0aW5n
IHN0ZXBzIG9ubHkuCisgICAgSW5saW5lQm94KiBsZWdhY3lJbmxpbmVCb3goKSBjb25zdDsKKwog
cHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBSdW5JdGVyYXRvcjsKKyAgICBmcmllbmQgY2xh
c3MgTGluZVJ1bkl0ZXJhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBUZXh0UnVuSXRlcmF0b3I7CiAK
KyAgICAvLyBUbyBoZWxwIHdpdGggZGVidWdnaW5nLgorICAgIE1vZGVyblBhdGgmIG1vZGVyblBh
dGgoKTsKKyAgICBMZWdhY3lQYXRoJiBsZWdhY3lQYXRoKCk7CisKICAgICBQYXRoVmFyaWFudCBt
X3BhdGhWYXJpYW50OwogfTsKIApAQCAtODksNiArOTcsOCBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzTGFzdFRleHRSdW5PbkxpbmUoKSBjb25zdDsKICAgICBib29sIGlzTGFzdFRleHRSdW4oKSBj
b25zdDsKKworICAgIElubGluZVRleHRCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0IHsgcmV0
dXJuIGRvd25jYXN0PElubGluZVRleHRCb3g+KFJ1bjo6bGVnYWN5SW5saW5lQm94KCkpOyB9CiB9
OwogCiBjbGFzcyBSdW5JdGVyYXRvciB7CkBAIC05Niw5ICsxMDYsNiBAQCBwdWJsaWM6CiAgICAg
UnVuSXRlcmF0b3IoKSA6IG1fcnVuKExlZ2FjeVBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9Owog
ICAgIFJ1bkl0ZXJhdG9yKFJ1bjo6UGF0aFZhcmlhbnQmJik7CiAKLSAgICBUZXh0UnVuSXRlcmF0
b3ImIHRyYXZlcnNlTmV4dFRleHRSdW5JblZpc3VhbE9yZGVyKCk7Ci0gICAgVGV4dFJ1bkl0ZXJh
dG9yJiB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0T3JkZXIoKTsKLQogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFJ1bkl0ZXJhdG9yJikgY29uc3Q7CkBAIC0xMjYsMTAgKzEzMywyNCBAQCBw
dWJsaWM6CiAgICAgY29uc3QgVGV4dFJ1biYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gZ2V0
KCk7IH0KICAgICBjb25zdCBUZXh0UnVuKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJmdl
dCgpOyB9CiAKKyAgICBUZXh0UnVuSXRlcmF0b3ImIHRyYXZlcnNlTmV4dFRleHRSdW5JblZpc3Vh
bE9yZGVyKCk7CisgICAgVGV4dFJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRUZXh0UnVuSW5UZXh0
T3JkZXIoKTsKKwogcHJpdmF0ZToKICAgICBjb25zdCBUZXh0UnVuJiBnZXQoKSBjb25zdCB7IHJl
dHVybiBkb3duY2FzdDxUZXh0UnVuPihtX3J1bik7IH0KIH07CiAKK2NsYXNzIExpbmVSdW5JdGVy
YXRvciA6IHB1YmxpYyBSdW5JdGVyYXRvciB7CitwdWJsaWM6CisgICAgTGluZVJ1bkl0ZXJhdG9y
KCkgeyB9CisgICAgTGluZVJ1bkl0ZXJhdG9yKGNvbnN0IFJ1bkl0ZXJhdG9yJik7CisgICAgTGlu
ZVJ1bkl0ZXJhdG9yKFJ1bjo6UGF0aFZhcmlhbnQmJik7CisKKyAgICBMaW5lUnVuSXRlcmF0b3Im
IG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHRPbkxpbmUoKTsgfQorCisgICAgTGlu
ZVJ1bkl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRPbkxpbmUoKTsKK307CisKIGNsYXNzIFRleHRSdW5S
YW5nZSB7CiBwdWJsaWM6CiAgICAgVGV4dFJ1blJhbmdlKFRleHRSdW5JdGVyYXRvciBiZWdpbikK
QEAgLTE0OCw2ICsxNjksNyBAQCBUZXh0UnVuSXRlcmF0b3IgZmlyc3RUZXh0UnVuRm9yKGNvbnN0
IFJlbmRlclRleHQmKTsKIFRleHRSdW5JdGVyYXRvciBmaXJzdFRleHRSdW5JblRleHRPcmRlckZv
cihjb25zdCBSZW5kZXJUZXh0Jik7CiBUZXh0UnVuUmFuZ2UgdGV4dFJ1bnNGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOwogUnVuSXRlcmF0b3IgcnVuRm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpOwor
TGluZVJ1bkl0ZXJhdG9yIGxpbmVSdW4oY29uc3QgUnVuSXRlcmF0b3ImKTsKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjI2LDYgKzI0
OCwxMyBAQCBpbmxpbmUgdW5zaWduZWQgUnVuOjptYXhpbXVtQ2FyZXRPZmZzZXQoKSBjb25zdAog
ICAgIH0pOwogfQogCitpbmxpbmUgSW5saW5lQm94KiBSdW46OmxlZ2FjeUlubGluZUJveCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oYXV0byYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5sZWdhY3lJbmxpbmVCb3goKTsKKyAgICB9KTsK
K30KKwogaW5saW5lIGJvb2wgVGV4dFJ1bjo6aGFzSHlwaGVuKCkgY29uc3QKIHsKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBbXShhdXRvJiBwYXRoKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25S
dW5JdGVyYXRvckxlZ2FjeVBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTGVnYWN5UGF0aC5oCmluZGV4IDZkN2MxM2Zh
ZGQwYy4uZTI2YTNmMjBkMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvckxlZ2FjeVBhdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVy
YXRvckxlZ2FjeVBhdGguaApAQCAtNzksOSArNzksMTYgQEAgcHVibGljOgogICAgICAgICAgICAg
KyttX3NvcnRlZElubGluZVRleHRCb3hJbmRleDsKICAgICB9CiAKKyAgICB2b2lkIHRyYXZlcnNl
TmV4dE9uTGluZSgpCisgICAgeworICAgICAgICBtX2lubGluZUJveCA9IG1faW5saW5lQm94LT5u
ZXh0TGVhZk9uTGluZSgpOworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMZWdh
Y3lQYXRoJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVCb3ggPT0gb3RoZXIubV9pbmxp
bmVCb3g7IH0KICAgICBib29sIGF0RW5kKCkgY29uc3QgeyByZXR1cm4gIW1faW5saW5lQm94OyB9
CiAKKyAgICBJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0
X2Nhc3Q8SW5saW5lQm94Kj4obV9pbmxpbmVCb3gpOyB9CisKIHByaXZhdGU6CiAgICAgY29uc3Qg
SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PElu
bGluZVRleHRCb3g+KG1faW5saW5lQm94KTsgfQogICAgIGNvbnN0IElubGluZVRleHRCb3gqIG5l
eHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9k
ZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUnVuSXRlcmF0b3JNb2Rlcm5QYXRoLmgKaW5kZXggNzUzNGQyYzI5YmUxLi5kZmJhNTkw
ZmVmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0
aC5oCkBAIC00MCwxMSArNDAsMTIgQEAgc3RhdGljIEZsb2F0UG9pbnQgbGluZVBvc2l0aW9uKGZs
b2F0IGxlZnQsIGZsb2F0IHRvcCkKIAogY2xhc3MgTW9kZXJuUGF0aCB7CiBwdWJsaWM6Ci0gICAg
TW9kZXJuUGF0aChjb25zdCBEaXNwbGF5OjpJbmxpbmVDb250ZW50JiBpbmxpbmVDb250ZW50LCBz
aXplX3Qgc3RhcnRJbmRleCwgc2l6ZV90IGVuZEluZGV4KQorICAgIE1vZGVyblBhdGgoY29uc3Qg
RGlzcGxheTo6SW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCwgc2l6ZV90IHN0YXJ0SW5kZXgp
CiAgICAgICAgIDogbV9pbmxpbmVDb250ZW50KCZpbmxpbmVDb250ZW50KQotICAgICAgICAsIG1f
ZW5kSW5kZXgoZW5kSW5kZXgpCiAgICAgICAgICwgbV9ydW5JbmRleChzdGFydEluZGV4KQotICAg
IHsgfQorICAgIHsKKworICAgIH0KICAgICBNb2Rlcm5QYXRoKE1vZGVyblBhdGgmJikgPSBkZWZh
dWx0OwogICAgIE1vZGVyblBhdGgoY29uc3QgTW9kZXJuUGF0aCYpID0gZGVmYXVsdDsKICAgICBN
b2Rlcm5QYXRoJiBvcGVyYXRvcj0oY29uc3QgTW9kZXJuUGF0aCYpID0gZGVmYXVsdDsKQEAgLTgy
LDMxICs4Myw2OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoaXNMYXN0VGV4dFJ1bigp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICAgICAgYXV0byYgbmV4dCA9IHJ1bnMo
KVttX3J1bkluZGV4ICsgMV07CiAgICAgICAgIHJldHVybiBydW4oKS5saW5lSW5kZXgoKSAhPSBu
ZXh0LmxpbmVJbmRleCgpOwogICAgIH0KKwogICAgIGJvb2wgaXNMYXN0VGV4dFJ1bigpIGNvbnN0
CiAgICAgewotICAgICAgICByZXR1cm4gbV9ydW5JbmRleCArIDEgPT0gbV9lbmRJbmRleDsKKyAg
ICAgICAgQVNTRVJUKCFhdEVuZCgpKTsKKyAgICAgICAgQVNTRVJUKHJ1bigpLnRleHRDb250ZW50
KCkpOworCisgICAgICAgIGlmIChtX3J1bkluZGV4ICsgMSA9PSBydW5zKCkuc2l6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiAmcnVuKCkubGF5b3V0Qm94KCkg
IT0gJnJ1bnMoKVttX3J1bkluZGV4ICsgMV0ubGF5b3V0Qm94KCk7CiAgICAgfTsKIAogICAgIHZv
aWQgdHJhdmVyc2VOZXh0VGV4dFJ1bkluVmlzdWFsT3JkZXIoKQogICAgIHsKICAgICAgICAgQVNT
RVJUKCFhdEVuZCgpKTsKKyAgICAgICAgQVNTRVJUKHJ1bigpLnRleHRDb250ZW50KCkpOworCisg
ICAgICAgIGF1dG8mIGxheW91dEJveCA9IHJ1bigpLmxheW91dEJveCgpOworCiAgICAgICAgICsr
bV9ydW5JbmRleDsKKworICAgICAgICBpZiAoIWF0RW5kKCkgJiYgJmxheW91dEJveCAhPSAmcnVu
KCkubGF5b3V0Qm94KCkpCisgICAgICAgICAgICBzZXRBdEVuZCgpOworICAgIH0KKworICAgIHZv
aWQgdHJhdmVyc2VOZXh0VGV4dFJ1bkluVGV4dE9yZGVyKCkKKyAgICB7CisgICAgICAgIC8vIEZJ
WE1FOiBObyBSVEwgaW4gTEZDLgorICAgICAgICB0cmF2ZXJzZU5leHRUZXh0UnVuSW5WaXN1YWxP
cmRlcigpOworICAgIH0KKworICAgIHZvaWQgdHJhdmVyc2VOZXh0T25MaW5lKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghYXRFbmQoKSk7CisKKyAgICAgICAgYXV0byBwcmV2aW91c2xpbmVJbmRl
eCA9IHJ1bigpLmxpbmVJbmRleCgpOworCisgICAgICAgICsrbV9ydW5JbmRleDsKKworICAgICAg
ICBpZiAoIWF0RW5kKCkgJiYgcHJldmlvdXNsaW5lSW5kZXggIT0gcnVuKCkubGluZUluZGV4KCkp
CisgICAgICAgICAgICBzZXRBdEVuZCgpOwogICAgIH0KLSAgICB2b2lkIHRyYXZlcnNlTmV4dFRl
eHRSdW5JblRleHRPcmRlcigpIHsgIHRyYXZlcnNlTmV4dFRleHRSdW5JblZpc3VhbE9yZGVyKCk7
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNb2Rlcm5QYXRoJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gbV9pbmxpbmVDb250ZW50ID09IG90aGVyLm1faW5saW5lQ29udGVudCAmJiBtX3J1
bkluZGV4ID09IG90aGVyLm1fcnVuSW5kZXg7IH0KLSAgICBib29sIGF0RW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9ydW5JbmRleCA9PSBtX2VuZEluZGV4OyB9CisgICAgYm9vbCBhdEVuZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcnVuSW5kZXggPT0gcnVucygpLnNpemUoKSB8fCAhcnVuKCkuaGFzVW5kZXJs
eWluZ0xheW91dCgpOyB9CisKKyAgICBJbmxpbmVCb3gqIGxlZ2FjeUlubGluZUJveCgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRl
bnQ6OlJ1bnMmIHJ1bnMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPnJ1bnM7IH0K
ICAgICBjb25zdCBEaXNwbGF5OjpSdW4mIHJ1bigpIGNvbnN0IHsgcmV0dXJuIHJ1bnMoKVttX3J1
bkluZGV4XTsgfQogICAgIGNvbnN0IERpc3BsYXk6OkxpbmUmIGxpbmUoKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUNvbnRlbnQtPmxpbmVGb3JSdW4ocnVuKCkpOyB9CisgICAgdm9pZCBzZXRBdEVu
ZCgpIHsgbV9ydW5JbmRleCA9IHJ1bnMoKS5zaXplKCk7IH0KIAogICAgIFJlZlB0cjxjb25zdCBE
aXNwbGF5OjpJbmxpbmVDb250ZW50PiBtX2lubGluZUNvbnRlbnQ7Ci0gICAgc2l6ZV90IG1fZW5k
SW5kZXggeyAwIH07CiAgICAgc2l6ZV90IG1fcnVuSW5kZXggeyAwIH07CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>