<?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>201819</bug_id>
          
          <creation_ts>2019-09-16 07:36:20 -0700</creation_ts>
          <short_desc>Move code for traversing reversed text boxes from TextIterator to TextBoxIterator</short_desc>
          <delta_ts>2019-09-16 23:39:18 -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>DOM</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>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1571088</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-16 07:36:20 -0700</bug_when>
    <thetext>Simplify TextIterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571090</commentid>
    <comment_count>1</comment_count>
      <attachid>378860</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-16 07:36:41 -0700</bug_when>
    <thetext>Created attachment 378860
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571198</commentid>
    <comment_count>2</comment_count>
      <attachid>378876</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-16 12:09:34 -0700</bug_when>
    <thetext>Created attachment 378876
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571219</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-16 13:03:18 -0700</bug_when>
    <thetext>Changelog entry seems to be missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571232</commentid>
    <comment_count>4</comment_count>
      <attachid>378889</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-16 13:20:57 -0700</bug_when>
    <thetext>Created attachment 378889
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571234</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-16 13:21:21 -0700</bug_when>
    <thetext>(In reply to zalan from comment #3)
&gt; Changelog entry seems to be missing.

Oops!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571442</commentid>
    <comment_count>6</comment_count>
      <attachid>378889</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 23:38:29 -0700</bug_when>
    <thetext>Comment on attachment 378889
patch

Clearing flags on attachment: 378889

Committed r249943: &lt;https://trac.webkit.org/changeset/249943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571443</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-16 23:38:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571444</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-16 23:39:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/55429232&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378860</attachid>
            <date>2019-09-16 07:36:41 -0700</date>
            <delta_ts>2019-09-16 12:09:34 -0700</delta_ts>
            <desc>wip</desc>
            <filename>textboxiterator-sorted.patch</filename>
            <type>text/plain</type>
            <size>15925</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBmNDFlMTAyYTA2OC4u
MGUwYTQyODBmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAg
LTYxNSw3ICs2MTUsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX3RleHRCb3ggPSBtX2xpbmVMYXlvdXRQ
cm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIpOworICAgIG1fdGV4dEJveCA9IG1fbGlu
ZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAog
ICAgIGJvb2wgc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIg
JiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0OwogICAgIGlm
IChzaG91bGRIYW5kbGVGaXJzdExldHRlcikKQEAgLTYyOCwxNyArNjI4LDYgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgLy8gVXNlZCB3aGVuIHRleHQgYm94ZXMgYXJlIG91dCBvZiBvcmRlciAoSGVicmV3L0Fy
YWJpYyB3LyBlbWJlZGVkIExUUiB0ZXh0KQotICAgIGF1dG8mIGJveGVzUmVuZGVyZXIgPSBtX2Zp
cnN0TGV0dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6IHJlbmRlcmVyOwotICAgIGlmIChi
b3hlc1JlbmRlcmVyLmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpIHsKLSAgICAgICAgbV9zb3J0ZWRU
ZXh0Qm94ZXMuY2xlYXIoKTsKLSAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94ID0g
Ym94ZXNSZW5kZXJlci5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJveCA9IHRleHRCb3gt
Pm5leHRUZXh0Qm94KCkpCi0gICAgICAgICAgICBtX3NvcnRlZFRleHRCb3hlcy5hcHBlbmQodGV4
dEJveCk7Ci0gICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZFRleHRCb3hlcy5iZWdpbigpLCBtX3Nv
cnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5U3RhcnQpOwotICAg
ICAgICBtX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uID0gMDsKLSAgICAgICAgbV90ZXh0Qm94ID0g
bV9saW5lTGF5b3V0UHJvdmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KG1fc29ydGVkVGV4
dEJveGVzLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3NvcnRlZFRleHRCb3hlc1swXSk7Ci0gICAg
fQotCiAgICAgaGFuZGxlVGV4dEJveCgpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNjUzLDEy
ICs2NDIsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZpcnN0VGV4dEJveCA9IFsmXSB7Ci0gICAgICAgIGlm
IChyZW5kZXJlci5jb250YWluc1JldmVyc2VkVGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIG1f
bGluZUxheW91dFByb3ZpZGVyLml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChtX3NvcnRlZFRleHRC
b3hlcy5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pOwotCi0gICAg
ICAgIHJldHVybiBtX2xpbmVMYXlvdXRQcm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIp
OwotICAgIH0oKTsKKyAgICBhdXRvIGZpcnN0VGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVy
LmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAogICAgIFN0cmluZyByZW5k
ZXJlclRleHQgPSByZW5kZXJlci50ZXh0KCk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSBtX29mZnNl
dDsKQEAgLTY4MywxNSArNjY3LDggQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwog
ICAgICAgICAKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2ls
bCBiZSwgYnV0IGRvbid0IGFkdmFuY2UgeWV0Ci0gICAgICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6
OlRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveDsKLSAgICAgICAgaWYgKHJlbmRlcmVyLmNvbnRh
aW5zUmV2ZXJzZWRUZXh0KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgcmV2ZXJz
ZWQgdGV4dCBpbiB0aGUgbGluZSBsYXlvdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICBpZiAobV9z
b3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbiArIDEgPCBtX3NvcnRlZFRleHRCb3hlcy5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX2xpbmVMYXlvdXRQcm92aWRlci5pdGVyYXRv
ckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRUZXh0Qm94ZXNbbV9zb3J0ZWRUZXh0Qm94ZXNQb3Np
dGlvbiArIDFdKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5leHRUZXh0Qm94ID0g
bV90ZXh0Qm94OwotICAgICAgICAgICAgKytuZXh0VGV4dEJveDsKLSAgICAgICAgfQorICAgICAg
ICBhdXRvIG5leHRUZXh0Qm94ID0gbV90ZXh0Qm94OworICAgICAgICBuZXh0VGV4dEJveC50cmF2
ZXJzZU5leHRJblRleHRPcmRlcigpOwogCiAgICAgICAgIGlmIChydW5TdGFydCA8IHJ1bkVuZCkg
ewogICAgICAgICAgICAgLy8gSGFuZGxlIGVpdGhlciBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3Rl
ciAod2hpY2ggYmVjb21lcyBhIHNwYWNlKSwKQEAgLTcyMiwxNCArNjk5LDEwIEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgIGlmIChuZXh0UnVuU3RhcnQg
PiBydW5FbmQpCiAgICAgICAgICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBz
ZWRTcGFjZSA9IHRydWU7IC8vIGNvbGxhcHNlZCBzcGFjZSBiZXR3ZWVuIHJ1bnMgb3IgYXQgdGhl
IGVuZAogICAgICAgICAgICAgbV90ZXh0Qm94ID0gbmV4dFRleHRCb3g7Ci0gICAgICAgICAgICBp
ZiAocmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKLSAgICAgICAgICAgICAgICArK21f
c29ydGVkVGV4dEJveGVzUG9zaXRpb247CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgLy8gQWR2YW5jZSBhbmQgY29udGludWUKICAgICAgICAgbV90ZXh0Qm94ID0gbmV4
dFRleHRCb3g7Ci0gICAgICAgIGlmIChyZW5kZXJlci5jb250YWluc1JldmVyc2VkVGV4dCgpKQot
ICAgICAgICAgICAgKyttX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uOwogICAgIH0KICAgICBpZiAo
IW1fdGV4dEJveCAmJiBtX3JlbWFpbmluZ1RleHRCb3gpIHsKICAgICAgICAgbV90ZXh0Qm94ID0g
bV9yZW1haW5pbmdUZXh0Qm94OwpAQCAtNzU3LDggKzczMCw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIp
CiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZp
cnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgPSB0cnVlOwogICAgICAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94Owot
ICAgICAgICAgICAgbV90ZXh0Qm94ID0gbV9saW5lTGF5b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94
Rm9yKCpmaXJzdExldHRlclRleHQpOwotICAgICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXMuY2xl
YXIoKTsKKyAgICAgICAgICAgIG1fdGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVyLmZpcnN0
VGV4dEJveEluVGV4dE9yZGVyRm9yKCpmaXJzdExldHRlclRleHQpOwogICAgICAgICAgICAgbV9m
aXJzdExldHRlclRleHQgPSBmaXJzdExldHRlclRleHQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBlYmMyNTMyOTMwZi4uNWEwZjk4ZDk3
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMTgzLDEwICsxODMs
NiBAQCBwcml2YXRlOgogCiAgICAgTGluZUxheW91dEludGVyZmFjZTo6UHJvdmlkZXIgbV9saW5l
TGF5b3V0UHJvdmlkZXI7CiAKLSAgICAvLyBVc2VkIHdoZW4gdGV4dCBib3hlcyBhcmUgb3V0IG9m
IG9yZGVyIChIZWJyZXcvQXJhYmljIHdpdGggZW1iZWRkZWQgTFRSIHRleHQpCi0gICAgVmVjdG9y
PElubGluZVRleHRCb3gqPiBtX3NvcnRlZFRleHRCb3hlczsKLSAgICBzaXplX3QgbV9zb3J0ZWRU
ZXh0Qm94ZXNQb3NpdGlvbiB7IDAgfTsKLQogICAgIC8vIFVzZWQgd2hlbiBkZWNpZGluZyB3aGV0
aGVyIHRvIGVtaXQgYSAicG9zaXRpb25pbmciIChlLmcuIG5ld2xpbmUpIGJlZm9yZSBhbnkgb3Ro
ZXIgY29udGVudAogICAgIGJvb2wgbV9oYXNFbWl0dGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRC
b3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJm
YWNlVGV4dEJveGVzLmNwcAppbmRleCAxODBjMGVlYzdkMy4uMzQ1ZWQ1MTE5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0
Qm94ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJ
bnRlcmZhY2VUZXh0Qm94ZXMuY3BwCkBAIC0zOSw4ICszOSw4IEBAIEZsb2F0UmVjdCBUZXh0Qm94
OjpyZWN0KCkgY29uc3QKICAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOwog
ICAgIH07CiAKLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KSB7Ci0gICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5mcmFtZVJlY3QoKTsK
KyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmZyYW1lUmVjdCgp
OwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CkBAIC01Miw4ICs1Miw4IEBAIEZsb2F0UmVjdCBUZXh0
Qm94Ojpsb2dpY2FsUmVjdCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3Ip
LnJlY3QoKTsKICAgICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bG9n
aWNhbEZyYW1lUmVjdCgpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVy
YXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4
dEJveC0+bG9naWNhbEZyYW1lUmVjdCgpOwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CkBAIC02NSw4
ICs2NSw4IEBAIGJvb2wgVGV4dEJveDo6aGFzSHlwaGVuKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICgqcGF0aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxl
eCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0
dXJuIGlubGluZVRleHRCb3gtPmhhc0h5cGhlbigpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJu
IHBhdGguaW5saW5lVGV4dEJveC0+aGFzSHlwaGVuKCk7CiAgICAgfTsKIAogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsK
QEAgLTc4LDggKzc4LDggQEAgYm9vbCBUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0dXJu
IGlubGluZVRleHRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICBhdXRvIGNvbXBs
ZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAg
ICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsK
ICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJp
YW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtOTEsOCArOTEsOCBAQCBib29sIFRleHRCb3g6OmRp
ck92ZXJyaWRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAKLSAgICBh
dXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7Ci0g
ICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5kaXJPdmVycmlkZSgpOworICAgIGF1dG8gY29t
cGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUoKTsKICAgICB9Owog
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1w
bGUsIGNvbXBsZXgpOwpAQCAtMTA0LDggKzEwNCw4IEBAIFN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4
dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnRleHQoKTsKICAgICB9
OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4
dEJveCkgewotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhpbmxpbmVUZXh0Qm94LT5yZW5kZXJl
cigpLnRleHQoKSkuc3Vic3RyaW5nKGlubGluZVRleHRCb3gtPnN0YXJ0KCksIGlubGluZVRleHRC
b3gtPmxlbigpKTsKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6
OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5s
aW5lVGV4dEJveC0+cmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhwYXRoLmlubGluZVRleHRC
b3gtPnN0YXJ0KCksIHBhdGguaW5saW5lVGV4dEJveC0+bGVuKCkpOwogICAgIH07CiAKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7CkBAIC0xMTcsOCArMTE3LDggQEAgdW5zaWduZWQgVGV4dEJveDo6bG9jYWxTdGFydE9m
ZnNldCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxvY2FsU3RhcnQo
KTsKICAgICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCog
aW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+c3RhcnQoKTsK
KyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPnN0YXJ0KCk7CiAg
ICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFu
dCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTEzMCw4ICsxMzAsOCBAQCB1bnNpZ25lZCBUZXh0Qm94
Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3Ip
LmxvY2FsRW5kKCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGlu
ZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gt
PmVuZCgpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29t
cGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZW5k
KCk7CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRo
VmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTE0Myw4ICsxNDMsOCBAQCB1bnNpZ25lZCBU
ZXh0Qm94OjpsZW5ndGgoKSBjb25zdAogICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5l
bmQoKSAtICgqcGF0aC5pdGVyYXRvcikuc3RhcnQoKTsKICAgICB9OwogCi0gICAgYXV0byBjb21w
bGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICBy
ZXR1cm4gaW5saW5lVGV4dEJveC0+bGVuKCk7CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3Qg
VGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0
aC5pbmxpbmVUZXh0Qm94LT5sZW4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMTU2LDIz
ICsxNTYsNDkgQEAgaW5saW5lIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0
b3IoKSBjb25zdAogfQogCiBUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJ
bmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQotICAgIDogbV9wYXRoVmFyaWFudChpbmxpbmVU
ZXh0Qm94KQorICAgIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IGlubGluZVRleHRCb3gs
IHsgfSB9KQoreworfQorVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoVmVjdG9yPGNv
bnN0IElubGluZVRleHRCb3gqPiYmIHNvcnRlZCwgc2l6ZV90IGluZGV4KQorICAgIDogbV9wYXRo
VmFyaWFudChDb21wbGV4UGF0aCB7IGluZGV4IDwgc29ydGVkLnNpemUoKSA/IHNvcnRlZFtpbmRl
eF0gOiBudWxscHRyLCBXVEZNb3ZlKHNvcnRlZCksIGluZGV4IH0pCiB7CiB9CiAKIFRleHRCb3hJ
dGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJ
dGVyYXRvciBpdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9y
IGVuZCkKLSAgICA6IG1fcGF0aFZhcmlhbnQoVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoIHsg
aXRlcmF0b3IsIGVuZCB9KQorICAgIDogbV9wYXRoVmFyaWFudChTaW1wbGVQYXRoIHsgaXRlcmF0
b3IsIGVuZCB9KQogewogfQogCi1UZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0KCkKK1RleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5l
eHRJblZpc3VhbE9yZGVyKCkKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYg
cGF0aCkgewogICAgICAgICArK3BhdGguaXRlcmF0b3I7CiAgICAgfTsKIAotICAgIGF1dG8gY29t
cGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqJiBpbmxpbmVUZXh0Qm94KSB7Ci0gICAgICAg
IGlubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94LT5uZXh0VGV4dEJveCgpOworICAgIGF1dG8g
Y29tcGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHBhdGguaW5saW5lVGV4
dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRCb3goKTsKKyAgICB9OworCisgICAg
V1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworCisgICAgcmV0
dXJuICp0aGlzOworfQorCitUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0SW5UZXh0T3JkZXIoKQoreworICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICArK3BhdGguaXRlcmF0b3I7CisgICAgfTsKKworICAgIGF1dG8gY29t
cGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIGlmICghcGF0aC5zb3J0ZWRJ
bmxpbmVUZXh0Qm94ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICArK3BhdGguc29ydGVkSW5s
aW5lVGV4dEJveEluZGV4OworICAgICAgICAgICAgaWYgKHBhdGguc29ydGVkSW5saW5lVGV4dEJv
eEluZGV4IDwgcGF0aC5zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuc2l6ZSgpKQorICAgICAgICAgICAg
ICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguc29ydGVkSW5saW5lVGV4dEJveGVzW3BhdGgu
c29ydGVkSW5saW5lVGV4dEJveEluZGV4XTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBwYXRoLmlubGluZVRleHRCb3ggPSBudWxscHRyOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRC
b3goKTsKICAgICB9OwogCiAgICAgV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwpAQCAtMTg1LDEyICsyMTEsMTIgQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICBpZiAobV9w
YXRoVmFyaWFudC5pbmRleCgpICE9IG90aGVyLm1fcGF0aFZhcmlhbnQuaW5kZXgoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgVGV4dEJveEl0
ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLml0ZXJhdG9y
ID09IFdURjo6Z2V0PFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aD4ob3RoZXIubV9wYXRoVmFy
aWFudCkuaXRlcmF0b3I7CisgICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgU2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBXVEY6OmdldDxTaW1wbGVQ
YXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pdGVyYXRvcjsKICAgICB9OwogCi0gICAgYXV0byBj
b21wbGV4ID0gWyZdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAg
ICAgcmV0dXJuIGlubGluZVRleHRCb3ggPT0gV1RGOjpnZXQ8Y29uc3QgSW5saW5lVGV4dEJveCo+
KG90aGVyLm1fcGF0aFZhcmlhbnQpOworICAgIGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBDb21w
bGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94ID09IFdU
Rjo6Z2V0PENvbXBsZXhQYXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pbmxpbmVUZXh0Qm94Owog
ICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwpAQCAtMTk4LDEyICsyMjQsMTIgQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIAogYm9vbCBUZXh0
Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFsmXShjb25z
dCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIHNpbXBsZSA9
IFsmXShjb25zdCBTaW1wbGVQYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLml0ZXJh
dG9yID09IHBhdGguZW5kOwogICAgIH07CiAKLSAgICBhdXRvIGNvbXBsZXggPSBbJl0oY29uc3Qg
SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gIWlubGluZVRl
eHRCb3g7CisgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IENvbXBsZXhQYXRoJiBwYXRoKSB7
CisgICAgICAgIHJldHVybiAhcGF0aC5pbmxpbmVUZXh0Qm94OwogICAgIH07CiAKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjEy
LDcgKzIzOCw3IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiBQcm92aWRl
cjo6UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiBQcm92aWRlcjo6flByb3ZpZGVyKCkgPSBkZWZhdWx0
OwogCi1UZXh0Qm94SXRlcmF0b3IgUHJvdmlkZXI6OmZpcnN0VGV4dEJveEZvcihjb25zdCBSZW5k
ZXJUZXh0JiB0ZXh0KQorVGV4dEJveEl0ZXJhdG9yIFByb3ZpZGVyOjpmaXJzdFRleHRCb3hJblZp
c3VhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7CiAgICAgaWYgKGF1dG8qIHNp
bXBsZUxpbmVMYXlvdXQgPSB0ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSkgewogICAgICAgICBhdXRv
JiBwYXJlbnQgPSBkb3duY2FzdDxjb25zdCBSZW5kZXJCbG9ja0Zsb3c+KCp0ZXh0LnBhcmVudCgp
KTsKQEAgLTIyNywxNyArMjUzLDIzIEBAIFRleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6Zmlyc3RU
ZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiAgICAgcmV0dXJuIFRleHRCb3hJdGVy
YXRvciB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfTsKIH0KIAotVGV4dEJveFJhbmdlIFByb3ZpZGVy
Ojp0ZXh0Qm94UmFuZ2VGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK1RleHRCb3hJdGVyYXRv
ciBQcm92aWRlcjo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYg
dGV4dCkKIHsKLSAgICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKKyAgICBpZiAo
IXRleHQuc2ltcGxlTGluZUxheW91dCgpICYmIHRleHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkg
eworICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+IHNvcnRlZFRleHRCb3hlczsK
KyAgICAgICAgZm9yIChhdXRvKiB0ZXh0Qm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgdGV4dEJv
eDsgdGV4dEJveCA9IHRleHRCb3gtPm5leHRUZXh0Qm94KCkpCisgICAgICAgICAgICBzb3J0ZWRU
ZXh0Qm94ZXMuYXBwZW5kKHRleHRCb3gpOworICAgICAgICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJv
eGVzLmJlZ2luKCksIHNvcnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6Y29tcGFy
ZUJ5U3RhcnQpOworICAgICAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9yIHsgV1RGTW92ZShzb3J0
ZWRUZXh0Qm94ZXMpLCAwIH07CisgICAgfQorCisgICAgcmV0dXJuIGZpcnN0VGV4dEJveEluVmlz
dWFsT3JkZXJGb3IodGV4dCk7CiB9CiAKLVRleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6aXRlcmF0
b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCitU
ZXh0Qm94UmFuZ2UgUHJvdmlkZXI6OnRleHRCb3hSYW5nZUZvcihjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0KQogewotICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IgeyBpbmxpbmVUZXh0Qm94IH07Cisg
ICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94SW5WaXN1YWxPcmRlckZvcih0ZXh0KSB9OwogfQogCi0K
LQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dEludGVyZmFjZVRleHRCb3hlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCmluZGV4IDFlZjJjODk3NDQ4Li5kYThiMDI5
ZjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dEludGVyZmFjZVRleHRCb3hlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaApAQCAtNzQsMTEgKzc0LDE1IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFRleHRCb3hJdGVyYXRvciA6IHByaXZhdGUgVGV4dEJveCB7CiBwdWJsaWM6
Ci0gICAgVGV4dEJveEl0ZXJhdG9yKCkgOiBtX3BhdGhWYXJpYW50KG51bGxwdHIpIHsgfTsKKyAg
ICBUZXh0Qm94SXRlcmF0b3IoKSA6IG1fcGF0aFZhcmlhbnQoQ29tcGxleFBhdGggeyBudWxscHRy
LCB7IH0gfSkgeyB9OwogICAgIGV4cGxpY2l0IFRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVU
ZXh0Qm94Kik7CisgICAgVGV4dEJveEl0ZXJhdG9yKFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94
Kj4mJiBzb3J0ZWQsIHNpemVfdCBpbmRleCk7CisgICAgCiAgICAgVGV4dEJveEl0ZXJhdG9yKFNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6
UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCk7CiAKLSAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJh
dG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQorICAgIFRleHRCb3hJdGVyYXRvciYg
b3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsgfQorICAg
IFRleHRCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOworICAgIFRleHRC
b3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCkBAIC05NiwxMyArMTAw
LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRleHRCb3g7CiAKLSAg
ICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwotCiAgICAgc3RydWN0IFNpbXBsZVBh
dGggewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRl
cmF0b3I7CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBl
bmQ7CiAgICAgfTsKLSAgICBWYXJpYW50PFNpbXBsZVBhdGgsIGNvbnN0IElubGluZVRleHRCb3gq
PiBtX3BhdGhWYXJpYW50OworICAgIHN0cnVjdCBDb21wbGV4UGF0aCB7CisgICAgICAgIGNvbnN0
IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3g7CisgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxp
bmVUZXh0Qm94Kj4gc29ydGVkSW5saW5lVGV4dEJveGVzOworICAgICAgICBzaXplX3Qgc29ydGVk
SW5saW5lVGV4dEJveEluZGV4IHsgMCB9OworICAgIH07CisgICAgVmFyaWFudDxTaW1wbGVQYXRo
LCBDb21wbGV4UGF0aD4gbV9wYXRoVmFyaWFudDsKIH07CiAKIGNsYXNzIFRleHRCb3hSYW5nZSB7
CkBAIC0xMjQsMTIgKzEzMSwxMSBAQCBwdWJsaWM6CiAgICAgUHJvdmlkZXIoKTsKICAgICB+UHJv
dmlkZXIoKTsKIAotICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOworICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCkgeyByZXR1cm4gZmlyc3RUZXh0Qm94SW5WaXN1YWxPcmRlckZvcih0ZXh0
KTsgfQorICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblZpc3VhbE9yZGVyRm9yKGNv
bnN0IFJlbmRlclRleHQmKTsKKyAgICBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0
T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogICAgIFRleHRCb3hSYW5nZSB0ZXh0Qm94UmFu
Z2VGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZS4KLSAgICBU
ZXh0Qm94SXRlcmF0b3IgaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRC
b3gqKTsKLQogcHJpdmF0ZToKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrRmxvdyosIHN0
ZDo6dW5pcXVlX3B0cjxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4+IG1fc2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyczsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378876</attachid>
            <date>2019-09-16 12:09:34 -0700</date>
            <delta_ts>2019-09-16 13:20:57 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textboxiterator-sorted-2.patch</filename>
            <type>text/plain</type>
            <size>15925</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBmNDFlMTAyYTA2OC4u
MGUwYTQyODBmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAg
LTYxNSw3ICs2MTUsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX3RleHRCb3ggPSBtX2xpbmVMYXlvdXRQ
cm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIpOworICAgIG1fdGV4dEJveCA9IG1fbGlu
ZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAog
ICAgIGJvb2wgc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIg
JiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0OwogICAgIGlm
IChzaG91bGRIYW5kbGVGaXJzdExldHRlcikKQEAgLTYyOCwxNyArNjI4LDYgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgLy8gVXNlZCB3aGVuIHRleHQgYm94ZXMgYXJlIG91dCBvZiBvcmRlciAoSGVicmV3L0Fy
YWJpYyB3LyBlbWJlZGVkIExUUiB0ZXh0KQotICAgIGF1dG8mIGJveGVzUmVuZGVyZXIgPSBtX2Zp
cnN0TGV0dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6IHJlbmRlcmVyOwotICAgIGlmIChi
b3hlc1JlbmRlcmVyLmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpIHsKLSAgICAgICAgbV9zb3J0ZWRU
ZXh0Qm94ZXMuY2xlYXIoKTsKLSAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94ID0g
Ym94ZXNSZW5kZXJlci5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJveCA9IHRleHRCb3gt
Pm5leHRUZXh0Qm94KCkpCi0gICAgICAgICAgICBtX3NvcnRlZFRleHRCb3hlcy5hcHBlbmQodGV4
dEJveCk7Ci0gICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZFRleHRCb3hlcy5iZWdpbigpLCBtX3Nv
cnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5U3RhcnQpOwotICAg
ICAgICBtX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uID0gMDsKLSAgICAgICAgbV90ZXh0Qm94ID0g
bV9saW5lTGF5b3V0UHJvdmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KG1fc29ydGVkVGV4
dEJveGVzLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3NvcnRlZFRleHRCb3hlc1swXSk7Ci0gICAg
fQotCiAgICAgaGFuZGxlVGV4dEJveCgpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNjUzLDEy
ICs2NDIsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZpcnN0VGV4dEJveCA9IFsmXSB7Ci0gICAgICAgIGlm
IChyZW5kZXJlci5jb250YWluc1JldmVyc2VkVGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIG1f
bGluZUxheW91dFByb3ZpZGVyLml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChtX3NvcnRlZFRleHRC
b3hlcy5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pOwotCi0gICAg
ICAgIHJldHVybiBtX2xpbmVMYXlvdXRQcm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIp
OwotICAgIH0oKTsKKyAgICBhdXRvIGZpcnN0VGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVy
LmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAogICAgIFN0cmluZyByZW5k
ZXJlclRleHQgPSByZW5kZXJlci50ZXh0KCk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSBtX29mZnNl
dDsKQEAgLTY4MywxNSArNjY3LDggQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwog
ICAgICAgICAKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2ls
bCBiZSwgYnV0IGRvbid0IGFkdmFuY2UgeWV0Ci0gICAgICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6
OlRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveDsKLSAgICAgICAgaWYgKHJlbmRlcmVyLmNvbnRh
aW5zUmV2ZXJzZWRUZXh0KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgcmV2ZXJz
ZWQgdGV4dCBpbiB0aGUgbGluZSBsYXlvdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICBpZiAobV9z
b3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbiArIDEgPCBtX3NvcnRlZFRleHRCb3hlcy5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX2xpbmVMYXlvdXRQcm92aWRlci5pdGVyYXRv
ckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRUZXh0Qm94ZXNbbV9zb3J0ZWRUZXh0Qm94ZXNQb3Np
dGlvbiArIDFdKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5leHRUZXh0Qm94ID0g
bV90ZXh0Qm94OwotICAgICAgICAgICAgKytuZXh0VGV4dEJveDsKLSAgICAgICAgfQorICAgICAg
ICBhdXRvIG5leHRUZXh0Qm94ID0gbV90ZXh0Qm94OworICAgICAgICBuZXh0VGV4dEJveC50cmF2
ZXJzZU5leHRJblRleHRPcmRlcigpOwogCiAgICAgICAgIGlmIChydW5TdGFydCA8IHJ1bkVuZCkg
ewogICAgICAgICAgICAgLy8gSGFuZGxlIGVpdGhlciBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3Rl
ciAod2hpY2ggYmVjb21lcyBhIHNwYWNlKSwKQEAgLTcyMiwxNCArNjk5LDEwIEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgIGlmIChuZXh0UnVuU3RhcnQg
PiBydW5FbmQpCiAgICAgICAgICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBz
ZWRTcGFjZSA9IHRydWU7IC8vIGNvbGxhcHNlZCBzcGFjZSBiZXR3ZWVuIHJ1bnMgb3IgYXQgdGhl
IGVuZAogICAgICAgICAgICAgbV90ZXh0Qm94ID0gbmV4dFRleHRCb3g7Ci0gICAgICAgICAgICBp
ZiAocmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKLSAgICAgICAgICAgICAgICArK21f
c29ydGVkVGV4dEJveGVzUG9zaXRpb247CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgLy8gQWR2YW5jZSBhbmQgY29udGludWUKICAgICAgICAgbV90ZXh0Qm94ID0gbmV4
dFRleHRCb3g7Ci0gICAgICAgIGlmIChyZW5kZXJlci5jb250YWluc1JldmVyc2VkVGV4dCgpKQot
ICAgICAgICAgICAgKyttX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uOwogICAgIH0KICAgICBpZiAo
IW1fdGV4dEJveCAmJiBtX3JlbWFpbmluZ1RleHRCb3gpIHsKICAgICAgICAgbV90ZXh0Qm94ID0g
bV9yZW1haW5pbmdUZXh0Qm94OwpAQCAtNzU3LDggKzczMCw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIp
CiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZp
cnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgPSB0cnVlOwogICAgICAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94Owot
ICAgICAgICAgICAgbV90ZXh0Qm94ID0gbV9saW5lTGF5b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94
Rm9yKCpmaXJzdExldHRlclRleHQpOwotICAgICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXMuY2xl
YXIoKTsKKyAgICAgICAgICAgIG1fdGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVyLmZpcnN0
VGV4dEJveEluVGV4dE9yZGVyRm9yKCpmaXJzdExldHRlclRleHQpOwogICAgICAgICAgICAgbV9m
aXJzdExldHRlclRleHQgPSBmaXJzdExldHRlclRleHQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBlYmMyNTMyOTMwZi4uNWEwZjk4ZDk3
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMTgzLDEwICsxODMs
NiBAQCBwcml2YXRlOgogCiAgICAgTGluZUxheW91dEludGVyZmFjZTo6UHJvdmlkZXIgbV9saW5l
TGF5b3V0UHJvdmlkZXI7CiAKLSAgICAvLyBVc2VkIHdoZW4gdGV4dCBib3hlcyBhcmUgb3V0IG9m
IG9yZGVyIChIZWJyZXcvQXJhYmljIHdpdGggZW1iZWRkZWQgTFRSIHRleHQpCi0gICAgVmVjdG9y
PElubGluZVRleHRCb3gqPiBtX3NvcnRlZFRleHRCb3hlczsKLSAgICBzaXplX3QgbV9zb3J0ZWRU
ZXh0Qm94ZXNQb3NpdGlvbiB7IDAgfTsKLQogICAgIC8vIFVzZWQgd2hlbiBkZWNpZGluZyB3aGV0
aGVyIHRvIGVtaXQgYSAicG9zaXRpb25pbmciIChlLmcuIG5ld2xpbmUpIGJlZm9yZSBhbnkgb3Ro
ZXIgY29udGVudAogICAgIGJvb2wgbV9oYXNFbWl0dGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRC
b3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJm
YWNlVGV4dEJveGVzLmNwcAppbmRleCAxODBjMGVlYzdkMy4uMzQ1ZWQ1MTE5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0
Qm94ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJ
bnRlcmZhY2VUZXh0Qm94ZXMuY3BwCkBAIC0zOSw4ICszOSw4IEBAIEZsb2F0UmVjdCBUZXh0Qm94
OjpyZWN0KCkgY29uc3QKICAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOwog
ICAgIH07CiAKLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KSB7Ci0gICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5mcmFtZVJlY3QoKTsK
KyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmZyYW1lUmVjdCgp
OwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CkBAIC01Miw4ICs1Miw4IEBAIEZsb2F0UmVjdCBUZXh0
Qm94Ojpsb2dpY2FsUmVjdCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3Ip
LnJlY3QoKTsKICAgICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bG9n
aWNhbEZyYW1lUmVjdCgpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVy
YXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4
dEJveC0+bG9naWNhbEZyYW1lUmVjdCgpOwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CkBAIC02NSw4
ICs2NSw4IEBAIGJvb2wgVGV4dEJveDo6aGFzSHlwaGVuKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICgqcGF0aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxl
eCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0
dXJuIGlubGluZVRleHRCb3gtPmhhc0h5cGhlbigpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJu
IHBhdGguaW5saW5lVGV4dEJveC0+aGFzSHlwaGVuKCk7CiAgICAgfTsKIAogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsK
QEAgLTc4LDggKzc4LDggQEAgYm9vbCBUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0dXJu
IGlubGluZVRleHRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICBhdXRvIGNvbXBs
ZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAg
ICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsK
ICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJp
YW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtOTEsOCArOTEsOCBAQCBib29sIFRleHRCb3g6OmRp
ck92ZXJyaWRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAKLSAgICBh
dXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7Ci0g
ICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5kaXJPdmVycmlkZSgpOworICAgIGF1dG8gY29t
cGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUoKTsKICAgICB9Owog
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1w
bGUsIGNvbXBsZXgpOwpAQCAtMTA0LDggKzEwNCw4IEBAIFN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4
dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnRleHQoKTsKICAgICB9
OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4
dEJveCkgewotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhpbmxpbmVUZXh0Qm94LT5yZW5kZXJl
cigpLnRleHQoKSkuc3Vic3RyaW5nKGlubGluZVRleHRCb3gtPnN0YXJ0KCksIGlubGluZVRleHRC
b3gtPmxlbigpKTsKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6
OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5s
aW5lVGV4dEJveC0+cmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhwYXRoLmlubGluZVRleHRC
b3gtPnN0YXJ0KCksIHBhdGguaW5saW5lVGV4dEJveC0+bGVuKCkpOwogICAgIH07CiAKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7CkBAIC0xMTcsOCArMTE3LDggQEAgdW5zaWduZWQgVGV4dEJveDo6bG9jYWxTdGFydE9m
ZnNldCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxvY2FsU3RhcnQo
KTsKICAgICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCog
aW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+c3RhcnQoKTsK
KyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPnN0YXJ0KCk7CiAg
ICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFu
dCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTEzMCw4ICsxMzAsOCBAQCB1bnNpZ25lZCBUZXh0Qm94
Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3Ip
LmxvY2FsRW5kKCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGlu
ZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gt
PmVuZCgpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29t
cGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZW5k
KCk7CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRo
VmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTE0Myw4ICsxNDMsOCBAQCB1bnNpZ25lZCBU
ZXh0Qm94OjpsZW5ndGgoKSBjb25zdAogICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5l
bmQoKSAtICgqcGF0aC5pdGVyYXRvcikuc3RhcnQoKTsKICAgICB9OwogCi0gICAgYXV0byBjb21w
bGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICBy
ZXR1cm4gaW5saW5lVGV4dEJveC0+bGVuKCk7CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3Qg
VGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0
aC5pbmxpbmVUZXh0Qm94LT5sZW4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMTU2LDIz
ICsxNTYsNDkgQEAgaW5saW5lIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0
b3IoKSBjb25zdAogfQogCiBUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJ
bmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQotICAgIDogbV9wYXRoVmFyaWFudChpbmxpbmVU
ZXh0Qm94KQorICAgIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IGlubGluZVRleHRCb3gs
IHsgfSB9KQoreworfQorVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoVmVjdG9yPGNv
bnN0IElubGluZVRleHRCb3gqPiYmIHNvcnRlZCwgc2l6ZV90IGluZGV4KQorICAgIDogbV9wYXRo
VmFyaWFudChDb21wbGV4UGF0aCB7IGluZGV4IDwgc29ydGVkLnNpemUoKSA/IHNvcnRlZFtpbmRl
eF0gOiBudWxscHRyLCBXVEZNb3ZlKHNvcnRlZCksIGluZGV4IH0pCiB7CiB9CiAKIFRleHRCb3hJ
dGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJ
dGVyYXRvciBpdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9y
IGVuZCkKLSAgICA6IG1fcGF0aFZhcmlhbnQoVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoIHsg
aXRlcmF0b3IsIGVuZCB9KQorICAgIDogbV9wYXRoVmFyaWFudChTaW1wbGVQYXRoIHsgaXRlcmF0
b3IsIGVuZCB9KQogewogfQogCi1UZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0KCkKK1RleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5l
eHRJblZpc3VhbE9yZGVyKCkKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYg
cGF0aCkgewogICAgICAgICArK3BhdGguaXRlcmF0b3I7CiAgICAgfTsKIAotICAgIGF1dG8gY29t
cGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqJiBpbmxpbmVUZXh0Qm94KSB7Ci0gICAgICAg
IGlubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94LT5uZXh0VGV4dEJveCgpOworICAgIGF1dG8g
Y29tcGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHBhdGguaW5saW5lVGV4
dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRCb3goKTsKKyAgICB9OworCisgICAg
V1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworCisgICAgcmV0
dXJuICp0aGlzOworfQorCitUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0SW5UZXh0T3JkZXIoKQoreworICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICArK3BhdGguaXRlcmF0b3I7CisgICAgfTsKKworICAgIGF1dG8gY29t
cGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIGlmICghcGF0aC5zb3J0ZWRJ
bmxpbmVUZXh0Qm94ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICArK3BhdGguc29ydGVkSW5s
aW5lVGV4dEJveEluZGV4OworICAgICAgICAgICAgaWYgKHBhdGguc29ydGVkSW5saW5lVGV4dEJv
eEluZGV4IDwgcGF0aC5zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuc2l6ZSgpKQorICAgICAgICAgICAg
ICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguc29ydGVkSW5saW5lVGV4dEJveGVzW3BhdGgu
c29ydGVkSW5saW5lVGV4dEJveEluZGV4XTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBwYXRoLmlubGluZVRleHRCb3ggPSBudWxscHRyOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRC
b3goKTsKICAgICB9OwogCiAgICAgV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwpAQCAtMTg1LDEyICsyMTEsMTIgQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICBpZiAobV9w
YXRoVmFyaWFudC5pbmRleCgpICE9IG90aGVyLm1fcGF0aFZhcmlhbnQuaW5kZXgoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgVGV4dEJveEl0
ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLml0ZXJhdG9y
ID09IFdURjo6Z2V0PFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aD4ob3RoZXIubV9wYXRoVmFy
aWFudCkuaXRlcmF0b3I7CisgICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgU2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBXVEY6OmdldDxTaW1wbGVQ
YXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pdGVyYXRvcjsKICAgICB9OwogCi0gICAgYXV0byBj
b21wbGV4ID0gWyZdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAg
ICAgcmV0dXJuIGlubGluZVRleHRCb3ggPT0gV1RGOjpnZXQ8Y29uc3QgSW5saW5lVGV4dEJveCo+
KG90aGVyLm1fcGF0aFZhcmlhbnQpOworICAgIGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBDb21w
bGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94ID09IFdU
Rjo6Z2V0PENvbXBsZXhQYXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pbmxpbmVUZXh0Qm94Owog
ICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwpAQCAtMTk4LDEyICsyMjQsMTIgQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIAogYm9vbCBUZXh0
Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFsmXShjb25z
dCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIHNpbXBsZSA9
IFsmXShjb25zdCBTaW1wbGVQYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLml0ZXJh
dG9yID09IHBhdGguZW5kOwogICAgIH07CiAKLSAgICBhdXRvIGNvbXBsZXggPSBbJl0oY29uc3Qg
SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gIWlubGluZVRl
eHRCb3g7CisgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IENvbXBsZXhQYXRoJiBwYXRoKSB7
CisgICAgICAgIHJldHVybiAhcGF0aC5pbmxpbmVUZXh0Qm94OwogICAgIH07CiAKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjEy
LDcgKzIzOCw3IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiBQcm92aWRl
cjo6UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiBQcm92aWRlcjo6flByb3ZpZGVyKCkgPSBkZWZhdWx0
OwogCi1UZXh0Qm94SXRlcmF0b3IgUHJvdmlkZXI6OmZpcnN0VGV4dEJveEZvcihjb25zdCBSZW5k
ZXJUZXh0JiB0ZXh0KQorVGV4dEJveEl0ZXJhdG9yIFByb3ZpZGVyOjpmaXJzdFRleHRCb3hJblZp
c3VhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7CiAgICAgaWYgKGF1dG8qIHNp
bXBsZUxpbmVMYXlvdXQgPSB0ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSkgewogICAgICAgICBhdXRv
JiBwYXJlbnQgPSBkb3duY2FzdDxjb25zdCBSZW5kZXJCbG9ja0Zsb3c+KCp0ZXh0LnBhcmVudCgp
KTsKQEAgLTIyNywxNyArMjUzLDIzIEBAIFRleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6Zmlyc3RU
ZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiAgICAgcmV0dXJuIFRleHRCb3hJdGVy
YXRvciB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfTsKIH0KIAotVGV4dEJveFJhbmdlIFByb3ZpZGVy
Ojp0ZXh0Qm94UmFuZ2VGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK1RleHRCb3hJdGVyYXRv
ciBQcm92aWRlcjo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYg
dGV4dCkKIHsKLSAgICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKKyAgICBpZiAo
IXRleHQuc2ltcGxlTGluZUxheW91dCgpICYmIHRleHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkg
eworICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+IHNvcnRlZFRleHRCb3hlczsK
KyAgICAgICAgZm9yIChhdXRvKiB0ZXh0Qm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgdGV4dEJv
eDsgdGV4dEJveCA9IHRleHRCb3gtPm5leHRUZXh0Qm94KCkpCisgICAgICAgICAgICBzb3J0ZWRU
ZXh0Qm94ZXMuYXBwZW5kKHRleHRCb3gpOworICAgICAgICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJv
eGVzLmJlZ2luKCksIHNvcnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6Y29tcGFy
ZUJ5U3RhcnQpOworICAgICAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9yIHsgV1RGTW92ZShzb3J0
ZWRUZXh0Qm94ZXMpLCAwIH07CisgICAgfQorCisgICAgcmV0dXJuIGZpcnN0VGV4dEJveEluVmlz
dWFsT3JkZXJGb3IodGV4dCk7CiB9CiAKLVRleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6aXRlcmF0
b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCitU
ZXh0Qm94UmFuZ2UgUHJvdmlkZXI6OnRleHRCb3hSYW5nZUZvcihjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0KQogewotICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IgeyBpbmxpbmVUZXh0Qm94IH07Cisg
ICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94SW5WaXN1YWxPcmRlckZvcih0ZXh0KSB9OwogfQogCi0K
LQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dEludGVyZmFjZVRleHRCb3hlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCmluZGV4IDFlZjJjODk3NDQ4Li5kYThiMDI5
ZjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dEludGVyZmFjZVRleHRCb3hlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaApAQCAtNzQsMTEgKzc0LDE1IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFRleHRCb3hJdGVyYXRvciA6IHByaXZhdGUgVGV4dEJveCB7CiBwdWJsaWM6
Ci0gICAgVGV4dEJveEl0ZXJhdG9yKCkgOiBtX3BhdGhWYXJpYW50KG51bGxwdHIpIHsgfTsKKyAg
ICBUZXh0Qm94SXRlcmF0b3IoKSA6IG1fcGF0aFZhcmlhbnQoQ29tcGxleFBhdGggeyBudWxscHRy
LCB7IH0gfSkgeyB9OwogICAgIGV4cGxpY2l0IFRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVU
ZXh0Qm94Kik7CisgICAgVGV4dEJveEl0ZXJhdG9yKFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94
Kj4mJiBzb3J0ZWQsIHNpemVfdCBpbmRleCk7CisgICAgCiAgICAgVGV4dEJveEl0ZXJhdG9yKFNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6
UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCk7CiAKLSAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJh
dG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQorICAgIFRleHRCb3hJdGVyYXRvciYg
b3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsgfQorICAg
IFRleHRCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOworICAgIFRleHRC
b3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCkBAIC05NiwxMyArMTAw
LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRleHRCb3g7CiAKLSAg
ICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwotCiAgICAgc3RydWN0IFNpbXBsZVBh
dGggewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRl
cmF0b3I7CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBl
bmQ7CiAgICAgfTsKLSAgICBWYXJpYW50PFNpbXBsZVBhdGgsIGNvbnN0IElubGluZVRleHRCb3gq
PiBtX3BhdGhWYXJpYW50OworICAgIHN0cnVjdCBDb21wbGV4UGF0aCB7CisgICAgICAgIGNvbnN0
IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3g7CisgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxp
bmVUZXh0Qm94Kj4gc29ydGVkSW5saW5lVGV4dEJveGVzOworICAgICAgICBzaXplX3Qgc29ydGVk
SW5saW5lVGV4dEJveEluZGV4IHsgMCB9OworICAgIH07CisgICAgVmFyaWFudDxTaW1wbGVQYXRo
LCBDb21wbGV4UGF0aD4gbV9wYXRoVmFyaWFudDsKIH07CiAKIGNsYXNzIFRleHRCb3hSYW5nZSB7
CkBAIC0xMjQsMTIgKzEzMSwxMSBAQCBwdWJsaWM6CiAgICAgUHJvdmlkZXIoKTsKICAgICB+UHJv
dmlkZXIoKTsKIAotICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOworICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCkgeyByZXR1cm4gZmlyc3RUZXh0Qm94SW5WaXN1YWxPcmRlckZvcih0ZXh0
KTsgfQorICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblZpc3VhbE9yZGVyRm9yKGNv
bnN0IFJlbmRlclRleHQmKTsKKyAgICBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0
T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogICAgIFRleHRCb3hSYW5nZSB0ZXh0Qm94UmFu
Z2VGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZS4KLSAgICBU
ZXh0Qm94SXRlcmF0b3IgaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRC
b3gqKTsKLQogcHJpdmF0ZToKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrRmxvdyosIHN0
ZDo6dW5pcXVlX3B0cjxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4+IG1fc2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyczsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378889</attachid>
            <date>2019-09-16 13:20:57 -0700</date>
            <delta_ts>2019-09-16 23:38:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>textboxiterator-sorted-3.patch</filename>
            <type>text/plain</type>
            <size>18319</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNjBmYTFjOTYxOC4uYzk1ZGExZTU0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxOS0wOS0xNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgTW92ZSBjb2RlIGZvciB0cmF2ZXJzaW5nIHJldmVyc2VkIHRleHQgYm94ZXMg
ZnJvbSBUZXh0SXRlcmF0b3IgdG8gVGV4dEJveEl0ZXJhdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE4MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdHJhdmVyc2FsIG9yZGVyIGluIFRl
eHRCb3hJdGVyYXRvci4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGVGaXJzdExldHRlcik6CisgICAgICAgICogZWRp
dGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0
SW50ZXJmYWNlVGV4dEJveGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRl
cmZhY2U6OlRleHRCb3g6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dEludGVyZmFjZTo6VGV4dEJveDo6bG9naWNhbFJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveDo6aGFzSHlwaGVuIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6OmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6
VGV4dEJveDo6ZGlyT3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dEludGVyZmFjZTo6VGV4dEJveDo6dGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94Ojpsb2NhbFN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6OmxvY2FsRW5kT2Zmc2V0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlRleHRCb3g6
Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpU
ZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVmlzdWFsT3Jk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJh
dG9yOjp0cmF2ZXJzZU5leHRJblRleHRPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0SW50ZXJmYWNlOjpUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjphdEVuZCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0SW50ZXJmYWNlOjpQcm92aWRlcjo6
Zmlyc3RUZXh0Qm94SW5WaXN1YWxPcmRlckZvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0SW50ZXJmYWNlOjpQcm92aWRlcjo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6UHJvdmlkZXI6OnRleHRCb3hSYW5n
ZUZvcik6CisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRC
b3hlcy5oOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dEludGVyZmFjZTo6VGV4dEJveEl0
ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dElu
dGVyZmFjZTo6VGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRJbnRlcmZhY2U6OlByb3ZpZGVyOjpmaXJzdFRleHRCb3hGb3IpOgorCiAyMDE5
LTA5LTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGlt
aW5hdGUgc2VwYXJhdGUgc2ltcGxlIGxpbmUgbGF5b3V0IHBhdGggZnJvbSBUZXh0SXRlcmF0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBmNDFlMTAyYTA2OC4u
MGUwYTQyODBmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAg
LTYxNSw3ICs2MTUsNyBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dE5vZGUoKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBtX3RleHRCb3ggPSBtX2xpbmVMYXlvdXRQ
cm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIpOworICAgIG1fdGV4dEJveCA9IG1fbGlu
ZUxheW91dFByb3ZpZGVyLmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAog
ICAgIGJvb2wgc2hvdWxkSGFuZGxlRmlyc3RMZXR0ZXIgPSAhbV9oYW5kbGVkRmlyc3RMZXR0ZXIg
JiYgaXM8UmVuZGVyVGV4dEZyYWdtZW50PihyZW5kZXJlcikgJiYgIW1fb2Zmc2V0OwogICAgIGlm
IChzaG91bGRIYW5kbGVGaXJzdExldHRlcikKQEAgLTYyOCwxNyArNjI4LDYgQEAgYm9vbCBUZXh0
SXRlcmF0b3I6OmhhbmRsZVRleHROb2RlKCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgLy8gVXNlZCB3aGVuIHRleHQgYm94ZXMgYXJlIG91dCBvZiBvcmRlciAoSGVicmV3L0Fy
YWJpYyB3LyBlbWJlZGVkIExUUiB0ZXh0KQotICAgIGF1dG8mIGJveGVzUmVuZGVyZXIgPSBtX2Zp
cnN0TGV0dGVyVGV4dCA/ICptX2ZpcnN0TGV0dGVyVGV4dCA6IHJlbmRlcmVyOwotICAgIGlmIChi
b3hlc1JlbmRlcmVyLmNvbnRhaW5zUmV2ZXJzZWRUZXh0KCkpIHsKLSAgICAgICAgbV9zb3J0ZWRU
ZXh0Qm94ZXMuY2xlYXIoKTsKLSAgICAgICAgZm9yIChJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94ID0g
Ym94ZXNSZW5kZXJlci5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJveCA9IHRleHRCb3gt
Pm5leHRUZXh0Qm94KCkpCi0gICAgICAgICAgICBtX3NvcnRlZFRleHRCb3hlcy5hcHBlbmQodGV4
dEJveCk7Ci0gICAgICAgIHN0ZDo6c29ydChtX3NvcnRlZFRleHRCb3hlcy5iZWdpbigpLCBtX3Nv
cnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5U3RhcnQpOwotICAg
ICAgICBtX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uID0gMDsKLSAgICAgICAgbV90ZXh0Qm94ID0g
bV9saW5lTGF5b3V0UHJvdmlkZXIuaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KG1fc29ydGVkVGV4
dEJveGVzLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBtX3NvcnRlZFRleHRCb3hlc1swXSk7Ci0gICAg
fQotCiAgICAgaGFuZGxlVGV4dEJveCgpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNjUzLDEy
ICs2NDIsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6aGFuZGxlVGV4dEJveCgpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIGZpcnN0VGV4dEJveCA9IFsmXSB7Ci0gICAgICAgIGlm
IChyZW5kZXJlci5jb250YWluc1JldmVyc2VkVGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIG1f
bGluZUxheW91dFByb3ZpZGVyLml0ZXJhdG9yRm9ySW5saW5lVGV4dEJveChtX3NvcnRlZFRleHRC
b3hlcy5pc0VtcHR5KCkgPyBudWxscHRyIDogbV9zb3J0ZWRUZXh0Qm94ZXNbMF0pOwotCi0gICAg
ICAgIHJldHVybiBtX2xpbmVMYXlvdXRQcm92aWRlci5maXJzdFRleHRCb3hGb3IocmVuZGVyZXIp
OwotICAgIH0oKTsKKyAgICBhdXRvIGZpcnN0VGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVy
LmZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKHJlbmRlcmVyKTsKIAogICAgIFN0cmluZyByZW5k
ZXJlclRleHQgPSByZW5kZXJlci50ZXh0KCk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSBtX29mZnNl
dDsKQEAgLTY4MywxNSArNjY3LDggQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmhhbmRsZVRleHRCb3go
KQogICAgICAgICB1bnNpZ25lZCBydW5FbmQgPSBzdGQ6Om1pbih0ZXh0Qm94RW5kLCBlbmQpOwog
ICAgICAgICAKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIG5leHQgdGV4dCBib3ggd2ls
bCBiZSwgYnV0IGRvbid0IGFkdmFuY2UgeWV0Ci0gICAgICAgIExpbmVMYXlvdXRJbnRlcmZhY2U6
OlRleHRCb3hJdGVyYXRvciBuZXh0VGV4dEJveDsKLSAgICAgICAgaWYgKHJlbmRlcmVyLmNvbnRh
aW5zUmV2ZXJzZWRUZXh0KCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgcmV2ZXJz
ZWQgdGV4dCBpbiB0aGUgbGluZSBsYXlvdXQgaXRlcmF0b3IuCi0gICAgICAgICAgICBpZiAobV9z
b3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbiArIDEgPCBtX3NvcnRlZFRleHRCb3hlcy5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgbmV4dFRleHRCb3ggPSBtX2xpbmVMYXlvdXRQcm92aWRlci5pdGVyYXRv
ckZvcklubGluZVRleHRCb3gobV9zb3J0ZWRUZXh0Qm94ZXNbbV9zb3J0ZWRUZXh0Qm94ZXNQb3Np
dGlvbiArIDFdKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5leHRUZXh0Qm94ID0g
bV90ZXh0Qm94OwotICAgICAgICAgICAgKytuZXh0VGV4dEJveDsKLSAgICAgICAgfQorICAgICAg
ICBhdXRvIG5leHRUZXh0Qm94ID0gbV90ZXh0Qm94OworICAgICAgICBuZXh0VGV4dEJveC50cmF2
ZXJzZU5leHRJblRleHRPcmRlcigpOwogCiAgICAgICAgIGlmIChydW5TdGFydCA8IHJ1bkVuZCkg
ewogICAgICAgICAgICAgLy8gSGFuZGxlIGVpdGhlciBhIHNpbmdsZSBuZXdsaW5lIGNoYXJhY3Rl
ciAod2hpY2ggYmVjb21lcyBhIHNwYWNlKSwKQEAgLTcyMiwxNCArNjk5LDEwIEBAIHZvaWQgVGV4
dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Qm94KCkKICAgICAgICAgICAgIGlmIChuZXh0UnVuU3RhcnQg
PiBydW5FbmQpCiAgICAgICAgICAgICAgICAgbV9sYXN0VGV4dE5vZGVFbmRlZFdpdGhDb2xsYXBz
ZWRTcGFjZSA9IHRydWU7IC8vIGNvbGxhcHNlZCBzcGFjZSBiZXR3ZWVuIHJ1bnMgb3IgYXQgdGhl
IGVuZAogICAgICAgICAgICAgbV90ZXh0Qm94ID0gbmV4dFRleHRCb3g7Ci0gICAgICAgICAgICBp
ZiAocmVuZGVyZXIuY29udGFpbnNSZXZlcnNlZFRleHQoKSkKLSAgICAgICAgICAgICAgICArK21f
c29ydGVkVGV4dEJveGVzUG9zaXRpb247CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgLy8gQWR2YW5jZSBhbmQgY29udGludWUKICAgICAgICAgbV90ZXh0Qm94ID0gbmV4
dFRleHRCb3g7Ci0gICAgICAgIGlmIChyZW5kZXJlci5jb250YWluc1JldmVyc2VkVGV4dCgpKQot
ICAgICAgICAgICAgKyttX3NvcnRlZFRleHRCb3hlc1Bvc2l0aW9uOwogICAgIH0KICAgICBpZiAo
IW1fdGV4dEJveCAmJiBtX3JlbWFpbmluZ1RleHRCb3gpIHsKICAgICAgICAgbV90ZXh0Qm94ID0g
bV9yZW1haW5pbmdUZXh0Qm94OwpAQCAtNzU3LDggKzczMCw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9y
OjpoYW5kbGVUZXh0Tm9kZUZpcnN0TGV0dGVyKFJlbmRlclRleHRGcmFnbWVudCYgcmVuZGVyZXIp
CiAgICAgICAgIGlmIChhdXRvKiBmaXJzdExldHRlclRleHQgPSBmaXJzdFJlbmRlclRleHRJbkZp
cnN0TGV0dGVyKGZpcnN0TGV0dGVyKSkgewogICAgICAgICAgICAgbV9oYW5kbGVkRmlyc3RMZXR0
ZXIgPSB0cnVlOwogICAgICAgICAgICAgbV9yZW1haW5pbmdUZXh0Qm94ID0gbV90ZXh0Qm94Owot
ICAgICAgICAgICAgbV90ZXh0Qm94ID0gbV9saW5lTGF5b3V0UHJvdmlkZXIuZmlyc3RUZXh0Qm94
Rm9yKCpmaXJzdExldHRlclRleHQpOwotICAgICAgICAgICAgbV9zb3J0ZWRUZXh0Qm94ZXMuY2xl
YXIoKTsKKyAgICAgICAgICAgIG1fdGV4dEJveCA9IG1fbGluZUxheW91dFByb3ZpZGVyLmZpcnN0
VGV4dEJveEluVGV4dE9yZGVyRm9yKCpmaXJzdExldHRlclRleHQpOwogICAgICAgICAgICAgbV9m
aXJzdExldHRlclRleHQgPSBmaXJzdExldHRlclRleHQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBlYmMyNTMyOTMwZi4uNWEwZjk4ZDk3
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMTgzLDEwICsxODMs
NiBAQCBwcml2YXRlOgogCiAgICAgTGluZUxheW91dEludGVyZmFjZTo6UHJvdmlkZXIgbV9saW5l
TGF5b3V0UHJvdmlkZXI7CiAKLSAgICAvLyBVc2VkIHdoZW4gdGV4dCBib3hlcyBhcmUgb3V0IG9m
IG9yZGVyIChIZWJyZXcvQXJhYmljIHdpdGggZW1iZWRkZWQgTFRSIHRleHQpCi0gICAgVmVjdG9y
PElubGluZVRleHRCb3gqPiBtX3NvcnRlZFRleHRCb3hlczsKLSAgICBzaXplX3QgbV9zb3J0ZWRU
ZXh0Qm94ZXNQb3NpdGlvbiB7IDAgfTsKLQogICAgIC8vIFVzZWQgd2hlbiBkZWNpZGluZyB3aGV0
aGVyIHRvIGVtaXQgYSAicG9zaXRpb25pbmciIChlLmcuIG5ld2xpbmUpIGJlZm9yZSBhbnkgb3Ro
ZXIgY29udGVudAogICAgIGJvb2wgbV9oYXNFbWl0dGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dEludGVyZmFjZVRleHRC
b3hlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0SW50ZXJm
YWNlVGV4dEJveGVzLmNwcAppbmRleCAxODBjMGVlYzdkMy4uMzQ1ZWQ1MTE5MTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0
Qm94ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRJ
bnRlcmZhY2VUZXh0Qm94ZXMuY3BwCkBAIC0zOSw4ICszOSw4IEBAIEZsb2F0UmVjdCBUZXh0Qm94
OjpyZWN0KCkgY29uc3QKICAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOwog
ICAgIH07CiAKLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVUZXh0Qm94KSB7Ci0gICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5mcmFtZVJlY3QoKTsK
KyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmZyYW1lUmVjdCgp
OwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CkBAIC01Miw4ICs1Miw4IEBAIEZsb2F0UmVjdCBUZXh0
Qm94Ojpsb2dpY2FsUmVjdCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3Ip
LnJlY3QoKTsKICAgICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bG9n
aWNhbEZyYW1lUmVjdCgpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVy
YXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4
dEJveC0+bG9naWNhbEZyYW1lUmVjdCgpOwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CkBAIC02NSw4
ICs2NSw4IEBAIGJvb2wgVGV4dEJveDo6aGFzSHlwaGVuKCkgY29uc3QKICAgICAgICAgcmV0dXJu
ICgqcGF0aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxl
eCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0
dXJuIGlubGluZVRleHRCb3gtPmhhc0h5cGhlbigpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJu
IHBhdGguaW5saW5lVGV4dEJveC0+aGFzSHlwaGVuKCk7CiAgICAgfTsKIAogICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsK
QEAgLTc4LDggKzc4LDggQEAgYm9vbCBUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0dXJu
IGlubGluZVRleHRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICBhdXRvIGNvbXBs
ZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAg
ICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsK
ICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJp
YW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtOTEsOCArOTEsOCBAQCBib29sIFRleHRCb3g6OmRp
ck92ZXJyaWRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH07CiAKLSAgICBh
dXRvIGNvbXBsZXggPSBbXShjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KSB7Ci0g
ICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5kaXJPdmVycmlkZSgpOworICAgIGF1dG8gY29t
cGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUoKTsKICAgICB9Owog
CiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1w
bGUsIGNvbXBsZXgpOwpAQCAtMTA0LDggKzEwNCw4IEBAIFN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4
dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnRleHQoKTsKICAgICB9
OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4
dEJveCkgewotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhpbmxpbmVUZXh0Qm94LT5yZW5kZXJl
cigpLnRleHQoKSkuc3Vic3RyaW5nKGlubGluZVRleHRCb3gtPnN0YXJ0KCksIGlubGluZVRleHRC
b3gtPmxlbigpKTsKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6
OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5s
aW5lVGV4dEJveC0+cmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhwYXRoLmlubGluZVRleHRC
b3gtPnN0YXJ0KCksIHBhdGguaW5saW5lVGV4dEJveC0+bGVuKCkpOwogICAgIH07CiAKICAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7CkBAIC0xMTcsOCArMTE3LDggQEAgdW5zaWduZWQgVGV4dEJveDo6bG9jYWxTdGFydE9m
ZnNldCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxvY2FsU3RhcnQo
KTsKICAgICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCog
aW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+c3RhcnQoKTsK
KyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPnN0YXJ0KCk7CiAg
ICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFu
dCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTEzMCw4ICsxMzAsOCBAQCB1bnNpZ25lZCBUZXh0Qm94
Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3Ip
LmxvY2FsRW5kKCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IElubGlu
ZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gt
PmVuZCgpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29t
cGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZW5k
KCk7CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRo
VmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTE0Myw4ICsxNDMsOCBAQCB1bnNpZ25lZCBU
ZXh0Qm94OjpsZW5ndGgoKSBjb25zdAogICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5l
bmQoKSAtICgqcGF0aC5pdGVyYXRvcikuc3RhcnQoKTsKICAgICB9OwogCi0gICAgYXV0byBjb21w
bGV4ID0gW10oY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICBy
ZXR1cm4gaW5saW5lVGV4dEJveC0+bGVuKCk7CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3Qg
VGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0
aC5pbmxpbmVUZXh0Qm94LT5sZW4oKTsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMTU2LDIz
ICsxNTYsNDkgQEAgaW5saW5lIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0
b3IoKSBjb25zdAogfQogCiBUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJ
bmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQotICAgIDogbV9wYXRoVmFyaWFudChpbmxpbmVU
ZXh0Qm94KQorICAgIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IGlubGluZVRleHRCb3gs
IHsgfSB9KQoreworfQorVGV4dEJveEl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IoVmVjdG9yPGNv
bnN0IElubGluZVRleHRCb3gqPiYmIHNvcnRlZCwgc2l6ZV90IGluZGV4KQorICAgIDogbV9wYXRo
VmFyaWFudChDb21wbGV4UGF0aCB7IGluZGV4IDwgc29ydGVkLnNpemUoKSA/IHNvcnRlZFtpbmRl
eF0gOiBudWxscHRyLCBXVEZNb3ZlKHNvcnRlZCksIGluZGV4IH0pCiB7CiB9CiAKIFRleHRCb3hJ
dGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJ
dGVyYXRvciBpdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9y
IGVuZCkKLSAgICA6IG1fcGF0aFZhcmlhbnQoVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoIHsg
aXRlcmF0b3IsIGVuZCB9KQorICAgIDogbV9wYXRoVmFyaWFudChTaW1wbGVQYXRoIHsgaXRlcmF0
b3IsIGVuZCB9KQogewogfQogCi1UZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJh
dmVyc2VOZXh0KCkKK1RleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5l
eHRJblZpc3VhbE9yZGVyKCkKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYg
cGF0aCkgewogICAgICAgICArK3BhdGguaXRlcmF0b3I7CiAgICAgfTsKIAotICAgIGF1dG8gY29t
cGxleCA9IFtdKGNvbnN0IElubGluZVRleHRCb3gqJiBpbmxpbmVUZXh0Qm94KSB7Ci0gICAgICAg
IGlubGluZVRleHRCb3ggPSBpbmxpbmVUZXh0Qm94LT5uZXh0VGV4dEJveCgpOworICAgIGF1dG8g
Y29tcGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHBhdGguaW5saW5lVGV4
dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRCb3goKTsKKyAgICB9OworCisgICAg
V1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworCisgICAgcmV0
dXJuICp0aGlzOworfQorCitUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVy
c2VOZXh0SW5UZXh0T3JkZXIoKQoreworICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICArK3BhdGguaXRlcmF0b3I7CisgICAgfTsKKworICAgIGF1dG8gY29t
cGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIGlmICghcGF0aC5zb3J0ZWRJ
bmxpbmVUZXh0Qm94ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICArK3BhdGguc29ydGVkSW5s
aW5lVGV4dEJveEluZGV4OworICAgICAgICAgICAgaWYgKHBhdGguc29ydGVkSW5saW5lVGV4dEJv
eEluZGV4IDwgcGF0aC5zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuc2l6ZSgpKQorICAgICAgICAgICAg
ICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguc29ydGVkSW5saW5lVGV4dEJveGVzW3BhdGgu
c29ydGVkSW5saW5lVGV4dEJveEluZGV4XTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBwYXRoLmlubGluZVRleHRCb3ggPSBudWxscHRyOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRC
b3goKTsKICAgICB9OwogCiAgICAgV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwpAQCAtMTg1LDEyICsyMTEsMTIgQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICBpZiAobV9w
YXRoVmFyaWFudC5pbmRleCgpICE9IG90aGVyLm1fcGF0aFZhcmlhbnQuaW5kZXgoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgVGV4dEJveEl0
ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLml0ZXJhdG9y
ID09IFdURjo6Z2V0PFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aD4ob3RoZXIubV9wYXRoVmFy
aWFudCkuaXRlcmF0b3I7CisgICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgU2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBXVEY6OmdldDxTaW1wbGVQ
YXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pdGVyYXRvcjsKICAgICB9OwogCi0gICAgYXV0byBj
b21wbGV4ID0gWyZdKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpIHsKLSAgICAg
ICAgcmV0dXJuIGlubGluZVRleHRCb3ggPT0gV1RGOjpnZXQ8Y29uc3QgSW5saW5lVGV4dEJveCo+
KG90aGVyLm1fcGF0aFZhcmlhbnQpOworICAgIGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBDb21w
bGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94ID09IFdU
Rjo6Z2V0PENvbXBsZXhQYXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pbmxpbmVUZXh0Qm94Owog
ICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwpAQCAtMTk4LDEyICsyMjQsMTIgQEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKIAogYm9vbCBUZXh0
Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFsmXShjb25z
dCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIHNpbXBsZSA9
IFsmXShjb25zdCBTaW1wbGVQYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiBwYXRoLml0ZXJh
dG9yID09IHBhdGguZW5kOwogICAgIH07CiAKLSAgICBhdXRvIGNvbXBsZXggPSBbJl0oY29uc3Qg
SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkgewotICAgICAgICByZXR1cm4gIWlubGluZVRl
eHRCb3g7CisgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IENvbXBsZXhQYXRoJiBwYXRoKSB7
CisgICAgICAgIHJldHVybiAhcGF0aC5pbmxpbmVUZXh0Qm94OwogICAgIH07CiAKICAgICByZXR1
cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjEy
LDcgKzIzOCw3IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiBQcm92aWRl
cjo6UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CiBQcm92aWRlcjo6flByb3ZpZGVyKCkgPSBkZWZhdWx0
OwogCi1UZXh0Qm94SXRlcmF0b3IgUHJvdmlkZXI6OmZpcnN0VGV4dEJveEZvcihjb25zdCBSZW5k
ZXJUZXh0JiB0ZXh0KQorVGV4dEJveEl0ZXJhdG9yIFByb3ZpZGVyOjpmaXJzdFRleHRCb3hJblZp
c3VhbE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiB7CiAgICAgaWYgKGF1dG8qIHNp
bXBsZUxpbmVMYXlvdXQgPSB0ZXh0LnNpbXBsZUxpbmVMYXlvdXQoKSkgewogICAgICAgICBhdXRv
JiBwYXJlbnQgPSBkb3duY2FzdDxjb25zdCBSZW5kZXJCbG9ja0Zsb3c+KCp0ZXh0LnBhcmVudCgp
KTsKQEAgLTIyNywxNyArMjUzLDIzIEBAIFRleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6Zmlyc3RU
ZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCiAgICAgcmV0dXJuIFRleHRCb3hJdGVy
YXRvciB7IHRleHQuZmlyc3RUZXh0Qm94KCkgfTsKIH0KIAotVGV4dEJveFJhbmdlIFByb3ZpZGVy
Ojp0ZXh0Qm94UmFuZ2VGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK1RleHRCb3hJdGVyYXRv
ciBQcm92aWRlcjo6Zmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYg
dGV4dCkKIHsKLSAgICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3IodGV4dCkgfTsKKyAgICBpZiAo
IXRleHQuc2ltcGxlTGluZUxheW91dCgpICYmIHRleHQuY29udGFpbnNSZXZlcnNlZFRleHQoKSkg
eworICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+IHNvcnRlZFRleHRCb3hlczsK
KyAgICAgICAgZm9yIChhdXRvKiB0ZXh0Qm94ID0gdGV4dC5maXJzdFRleHRCb3goKTsgdGV4dEJv
eDsgdGV4dEJveCA9IHRleHRCb3gtPm5leHRUZXh0Qm94KCkpCisgICAgICAgICAgICBzb3J0ZWRU
ZXh0Qm94ZXMuYXBwZW5kKHRleHRCb3gpOworICAgICAgICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJv
eGVzLmJlZ2luKCksIHNvcnRlZFRleHRCb3hlcy5lbmQoKSwgSW5saW5lVGV4dEJveDo6Y29tcGFy
ZUJ5U3RhcnQpOworICAgICAgICByZXR1cm4gVGV4dEJveEl0ZXJhdG9yIHsgV1RGTW92ZShzb3J0
ZWRUZXh0Qm94ZXMpLCAwIH07CisgICAgfQorCisgICAgcmV0dXJuIGZpcnN0VGV4dEJveEluVmlz
dWFsT3JkZXJGb3IodGV4dCk7CiB9CiAKLVRleHRCb3hJdGVyYXRvciBQcm92aWRlcjo6aXRlcmF0
b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCitU
ZXh0Qm94UmFuZ2UgUHJvdmlkZXI6OnRleHRCb3hSYW5nZUZvcihjb25zdCBSZW5kZXJUZXh0JiB0
ZXh0KQogewotICAgIHJldHVybiBUZXh0Qm94SXRlcmF0b3IgeyBpbmxpbmVUZXh0Qm94IH07Cisg
ICAgcmV0dXJuIHsgZmlyc3RUZXh0Qm94SW5WaXN1YWxPcmRlckZvcih0ZXh0KSB9OwogfQogCi0K
LQogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dEludGVyZmFjZVRleHRCb3hlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUxheW91dEludGVyZmFjZVRleHRCb3hlcy5oCmluZGV4IDFlZjJjODk3NDQ4Li5kYThiMDI5
ZjNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dEludGVyZmFjZVRleHRCb3hlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVMYXlvdXRJbnRlcmZhY2VUZXh0Qm94ZXMuaApAQCAtNzQsMTEgKzc0LDE1IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFRleHRCb3hJdGVyYXRvciA6IHByaXZhdGUgVGV4dEJveCB7CiBwdWJsaWM6
Ci0gICAgVGV4dEJveEl0ZXJhdG9yKCkgOiBtX3BhdGhWYXJpYW50KG51bGxwdHIpIHsgfTsKKyAg
ICBUZXh0Qm94SXRlcmF0b3IoKSA6IG1fcGF0aFZhcmlhbnQoQ29tcGxleFBhdGggeyBudWxscHRy
LCB7IH0gfSkgeyB9OwogICAgIGV4cGxpY2l0IFRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVU
ZXh0Qm94Kik7CisgICAgVGV4dEJveEl0ZXJhdG9yKFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94
Kj4mJiBzb3J0ZWQsIHNpemVfdCBpbmRleCk7CisgICAgCiAgICAgVGV4dEJveEl0ZXJhdG9yKFNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6
UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCk7CiAKLSAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJh
dG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHQoKTsgfQorICAgIFRleHRCb3hJdGVyYXRvciYg
b3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsgfQorICAg
IFRleHRCb3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOworICAgIFRleHRC
b3hJdGVyYXRvciYgdHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKTsKIAogICAgIGV4cGxpY2l0IG9w
ZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQogCkBAIC05NiwxMyArMTAw
LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRleHRCb3g7CiAKLSAg
ICBUZXh0Qm94SXRlcmF0b3ImIHRyYXZlcnNlTmV4dCgpOwotCiAgICAgc3RydWN0IFNpbXBsZVBh
dGggewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRl
cmF0b3I7CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBl
bmQ7CiAgICAgfTsKLSAgICBWYXJpYW50PFNpbXBsZVBhdGgsIGNvbnN0IElubGluZVRleHRCb3gq
PiBtX3BhdGhWYXJpYW50OworICAgIHN0cnVjdCBDb21wbGV4UGF0aCB7CisgICAgICAgIGNvbnN0
IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3g7CisgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxp
bmVUZXh0Qm94Kj4gc29ydGVkSW5saW5lVGV4dEJveGVzOworICAgICAgICBzaXplX3Qgc29ydGVk
SW5saW5lVGV4dEJveEluZGV4IHsgMCB9OworICAgIH07CisgICAgVmFyaWFudDxTaW1wbGVQYXRo
LCBDb21wbGV4UGF0aD4gbV9wYXRoVmFyaWFudDsKIH07CiAKIGNsYXNzIFRleHRCb3hSYW5nZSB7
CkBAIC0xMjQsMTIgKzEzMSwxMSBAQCBwdWJsaWM6CiAgICAgUHJvdmlkZXIoKTsKICAgICB+UHJv
dmlkZXIoKTsKIAotICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOworICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCkgeyByZXR1cm4gZmlyc3RUZXh0Qm94SW5WaXN1YWxPcmRlckZvcih0ZXh0
KTsgfQorICAgIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblZpc3VhbE9yZGVyRm9yKGNv
bnN0IFJlbmRlclRleHQmKTsKKyAgICBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0
T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogICAgIFRleHRCb3hSYW5nZSB0ZXh0Qm94UmFu
Z2VGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogCi0gICAgLy8gRklYTUU6IFJlbW92ZS4KLSAgICBU
ZXh0Qm94SXRlcmF0b3IgaXRlcmF0b3JGb3JJbmxpbmVUZXh0Qm94KGNvbnN0IElubGluZVRleHRC
b3gqKTsKLQogcHJpdmF0ZToKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlckJsb2NrRmxvdyosIHN0
ZDo6dW5pcXVlX3B0cjxTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcj4+IG1fc2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyczsKIH07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>