<?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>202316</bug_id>
          
          <creation_ts>2019-09-27 09:28:36 -0700</creation_ts>
          <short_desc>RenderLineBreak should use LineLayoutTraversal</short_desc>
          <delta_ts>2019-09-30 09:00:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</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>1574844</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-27 09:28:36 -0700</bug_when>
    <thetext>Instead of accessing line boxes directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574845</commentid>
    <comment_count>1</comment_count>
      <attachid>379733</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-27 09:29:51 -0700</bug_when>
    <thetext>Created attachment 379733
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575206</commentid>
    <comment_count>2</comment_count>
      <attachid>379827</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-30 01:14:58 -0700</bug_when>
    <thetext>Created attachment 379827
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575225</commentid>
    <comment_count>3</comment_count>
      <attachid>379830</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-30 02:51:16 -0700</bug_when>
    <thetext>Created attachment 379830
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575228</commentid>
    <comment_count>4</comment_count>
      <attachid>379831</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-30 03:11:40 -0700</bug_when>
    <thetext>Created attachment 379831
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575249</commentid>
    <comment_count>5</comment_count>
      <attachid>379832</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-30 06:29:25 -0700</bug_when>
    <thetext>Created attachment 379832
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575253</commentid>
    <comment_count>6</comment_count>
      <attachid>379834</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-09-30 07:12:07 -0700</bug_when>
    <thetext>Created attachment 379834
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575260</commentid>
    <comment_count>7</comment_count>
      <attachid>379834</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-30 08:55:44 -0700</bug_when>
    <thetext>Comment on attachment 379834
patch

Clearing flags on attachment: 379834

Committed r250519: &lt;https://trac.webkit.org/changeset/250519&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575261</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-30 08:55:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575262</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-30 09:00:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/55841808&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379733</attachid>
            <date>2019-09-27 09:29:51 -0700</date>
            <delta_ts>2019-09-30 01:14:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>llt-linebreak.patch</filename>
            <type>text/plain</type>
            <size>30655</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwCmluZGV4IGRhYzlmODlkNTVjLi5jOGQ4ZjY1ODBmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUG9zaXRpb24uY3BwCkBAIC03NTIsMTQgKzc1MiwxNCBAQCBQb3NpdGlvbiBQb3Np
dGlvbjo6dXBzdHJlYW0oRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpIGNvbnN0CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVkIHRleHRPZmZzZXQgPSBjdXJyZW50
UG9zaXRpb24ub2Zmc2V0SW5MZWFmTm9kZSgpOwotICAgICAgICAgICAgZm9yIChhdXRvIGJveCA9
IGZpcnN0VGV4dEJveDsgYm94OyBib3gudHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKSkgeworICAg
ICAgICAgICAgZm9yIChhdXRvIGJveCA9IGZpcnN0VGV4dEJveDsgYm94OyBib3gudHJhdmVyc2VO
ZXh0VGV4dEJveEluVGV4dE9yZGVyKCkpIHsKICAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNl
dCA8PSBib3gtPmxvY2FsRW5kT2Zmc2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRl
eHRPZmZzZXQgPiBib3gtPmxvY2FsU3RhcnRPZmZzZXQoKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICh0ZXh0T2Zmc2V0ID09
IGJveC0+bG9jYWxFbmRPZmZzZXQoKSArIDEgJiYgYm94LT5pc0xhc3RPbkxpbmUoKSAmJiAhYm94
LT5pc0xhc3QoKSkKKyAgICAgICAgICAgICAgICBpZiAodGV4dE9mZnNldCA9PSBib3gtPmxvY2Fs
RW5kT2Zmc2V0KCkgKyAxICYmIGJveC0+aXNMYXN0VGV4dEJveE9uTGluZSgpICYmICFib3gtPmlz
TGFzdFRleHRCb3goKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlv
bjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODU4LDcgKzg1OCw3IEBAIFBvc2l0aW9u
IFBvc2l0aW9uOjpkb3duc3RyZWFtKEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKSBj
b25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB1bnNpZ25lZCB0ZXh0T2Zmc2V0ID0g
Y3VycmVudFBvc2l0aW9uLm9mZnNldEluTGVhZk5vZGUoKTsKLSAgICAgICAgICAgIGZvciAoYXV0
byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDsgYm94LnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkp
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byBib3ggPSBmaXJzdFRleHRCb3g7IGJveDsgYm94LnRy
YXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFi
b3gtPmxlbmd0aCgpICYmIHRleHRPZmZzZXQgPT0gYm94LT5sb2NhbFN0YXJ0T2Zmc2V0KCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zaXRpb247CiAKQEAgLTg2OCw3ICs4
NjgsNyBAQCBQb3NpdGlvbiBQb3NpdGlvbjo6ZG93bnN0cmVhbShFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGUgcnVsZSkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPT0gYm94LT5s
b2NhbEVuZE9mZnNldCgpICYmIGJveC0+aXNMYXN0T25MaW5lKCkgJiYgIWJveC0+aXNMYXN0KCkp
CisgICAgICAgICAgICAgICAgaWYgKHRleHRPZmZzZXQgPT0gYm94LT5sb2NhbEVuZE9mZnNldCgp
ICYmIGJveC0+aXNMYXN0VGV4dEJveE9uTGluZSgpICYmICFib3gtPmlzTGFzdFRleHRCb3goKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRQb3NpdGlvbjsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4
IDUzYzJkMjU2ZWQyLi5hZWI3YWYxODdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0
ZXJhdG9yLmNwcApAQCAtNjY4LDcgKzY2OCw3IEBAIHZvaWQgVGV4dEl0ZXJhdG9yOjpoYW5kbGVU
ZXh0Qm94KCkKICAgICAgICAgCiAgICAgICAgIC8vIERldGVybWluZSB3aGF0IHRoZSBuZXh0IHRl
eHQgYm94IHdpbGwgYmUsIGJ1dCBkb24ndCBhZHZhbmNlIHlldAogICAgICAgICBhdXRvIG5leHRU
ZXh0Qm94ID0gbV90ZXh0Qm94OwotICAgICAgICBuZXh0VGV4dEJveC50cmF2ZXJzZU5leHRJblRl
eHRPcmRlcigpOworICAgICAgICBuZXh0VGV4dEJveC50cmF2ZXJzZU5leHRUZXh0Qm94SW5UZXh0
T3JkZXIoKTsKIAogICAgICAgICBpZiAocnVuU3RhcnQgPCBydW5FbmQpIHsKICAgICAgICAgICAg
IGF1dG8gaXNOZXdsaW5lT3JUYWIgPSBbJl0oVUNoYXIgY2hhcmFjdGVyKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCA1YWU4MTFhNjY5Yi4uZWI3Mzc0ZDU3YmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaApAQCAtMTY4LDEwICsxNjgsMTAgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFVzZWQgd2hlbiB0aGVyZSBpcyBzdGlsbCBzb21lIHBlbmRpbmcg
dGV4dCBmcm9tIHRoZSBjdXJyZW50IG5vZGU7IHdoZW4gdGhlc2UgYXJlIGZhbHNlIGFuZCBudWxs
LCB3ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCiAgICAgTm9kZSogbV9ub2RlRm9yQWRk
aXRpb25hbE5ld2xpbmUgeyBudWxscHRyIH07Ci0gICAgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveEl0ZXJhdG9yIG1fdGV4dEJveDsKKyAgICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpJdGVyYXRv
ciBtX3RleHRCb3g7CiAKICAgICAvLyBVc2VkIHdoZW4gaXRlcmF0aW5nIG92ZXIgOmZpcnN0LWxl
dHRlciB0ZXh0IHRvIHNhdmUgcG9pbnRlciB0byByZW1haW5pbmcgdGV4dCBib3guCi0gICAgTGlu
ZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yIG1fcmVtYWluaW5nVGV4dEJveDsKKyAg
ICBMaW5lTGF5b3V0VHJhdmVyc2FsOjpJdGVyYXRvciBtX3JlbWFpbmluZ1RleHRCb3g7CiAKICAg
ICAvLyBVc2VkIHRvIHBvaW50IHRvIFJlbmRlclRleHQgb2JqZWN0IGZvciA6Zmlyc3QtbGV0dGVy
LgogICAgIFJlbmRlclRleHQqIG1fZmlyc3RMZXR0ZXJUZXh0IHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAppbmRleCAxYWFlMDlkMDBi
Mi4uOWI1ODk3YjdiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxXQlJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5saW5lRWxlbWVudEJveC5o
IgorI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJMb2dpY2FsU2Vs
ZWN0aW9uT2Zmc2V0Q2FjaGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUm9vdElubGluZUJveC5oIgotI2luY2x1ZGUgIlNp
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJWaXNpYmxlUG9zaXRpb24uaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCkBAIC00NSwxMyArNDUsNiBAQCBX
VEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoUmVuZGVyTGluZUJyZWFrKTsKIAogc3RhdGljIGNv
bnN0IGludCBpbnZhbGlkTGluZUhlaWdodCA9IC0xOwogCi1zdGF0aWMgY29uc3QgU2ltcGxlTGlu
ZUxheW91dDo6TGF5b3V0KiBzaW1wbGVMaW5lTGF5b3V0KGNvbnN0IFJlbmRlckxpbmVCcmVhayYg
cmVuZGVyZXIpCi17Ci0gICAgaWYgKCFpczxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJl
bnQoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxSZW5k
ZXJCbG9ja0Zsb3c+KCpyZW5kZXJlci5wYXJlbnQoKSkuc2ltcGxlTGluZUxheW91dCgpOwotfQot
CiBSZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayhIVE1MRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlckJveE1vZGVsT2JqZWN0KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKG51bGxwdHIpCkBA
IC0xODMsNDUgKzE3NiwzMSBAQCBMYXlvdXRSZWN0IFJlbmRlckxpbmVCcmVhazo6bG9jYWxDYXJl
dFJlY3QoSW5saW5lQm94KiBpbmxpbmVCb3gsIHVuc2lnbmVkIGNhcmV0TwogCiBJbnRSZWN0IFJl
bmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0JveCgpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8q
IGxheW91dCA9IHNpbXBsZUxpbmVMYXlvdXQoKnRoaXMpKQotICAgICAgICByZXR1cm4gU2ltcGxl
TGluZUxheW91dDo6Y29tcHV0ZUJvdW5kaW5nQm94KCp0aGlzLCAqbGF5b3V0KTsKLQotICAgIGlm
ICghbV9pbmxpbmVCb3hXcmFwcGVyKQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotCi0gICAg
ZmxvYXQgbG9naWNhbExlZnRTaWRlID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5sb2dpY2FsTGVmdCgp
OwotICAgIGZsb2F0IGxvZ2ljYWxSaWdodFNpZGUgPSBtX2lubGluZUJveFdyYXBwZXItPmxvZ2lj
YWxSaWdodCgpOwotCi0gICAgYm9vbCBpc0hvcml6b250YWwgPSBzdHlsZSgpLmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCk7CisgICAgYXV0byBib3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpib3hG
b3IoKnRoaXMpOworICAgIGlmICghYm94KQorICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZmxv
YXQgeCA9IGlzSG9yaXpvbnRhbCA/IGxvZ2ljYWxMZWZ0U2lkZSA6IG1faW5saW5lQm94V3JhcHBl
ci0+eCgpOwotICAgIGZsb2F0IHkgPSBpc0hvcml6b250YWwgPyBtX2lubGluZUJveFdyYXBwZXIt
PnkoKSA6IGxvZ2ljYWxMZWZ0U2lkZTsKLSAgICBmbG9hdCB3aWR0aCA9IGlzSG9yaXpvbnRhbCA/
IGxvZ2ljYWxSaWdodFNpZGUgLSBsb2dpY2FsTGVmdFNpZGUgOiBtX2lubGluZUJveFdyYXBwZXIt
PmxvZ2ljYWxCb3R0b20oKSAtIHg7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gaXNIb3Jpem9udGFsID8g
bV9pbmxpbmVCb3hXcmFwcGVyLT5sb2dpY2FsQm90dG9tKCkgLSB5IDogbG9naWNhbFJpZ2h0U2lk
ZSAtIGxvZ2ljYWxMZWZ0U2lkZTsKLSAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChGbG9hdFJl
Y3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGJv
eC0+cmVjdCgpKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0
KSBjb25zdAogewotICAgIGlmIChhdXRvKiBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCp0aGlz
KSkgewotICAgICAgICByZWN0cy5hcHBlbmRWZWN0b3IoU2ltcGxlTGluZUxheW91dDo6Y29sbGVj
dEFic29sdXRlUmVjdHMoKnRoaXMsICpsYXlvdXQsIGFjY3VtdWxhdGVkT2Zmc2V0KSk7CisgICAg
YXV0byBib3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpib3hGb3IoKnRoaXMpOworICAgIGlmICgh
Ym94KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKCFtX2lubGluZUJveFdyYXBw
ZXIpCi0gICAgICAgIHJldHVybjsKLSAgICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChG
bG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBtX2lubGluZUJveFdyYXBwZXItPnRvcExlZnQo
KSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5zaXplKCkpKSk7CisgICAgYXV0byByZWN0ID0gYm94LT5y
ZWN0KCk7CisgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3Vt
dWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2NhdGlvbigpLCByZWN0LnNpemUoKSkpKTsKIH0KIAogdm9p
ZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRz
LCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogbGF5b3V0ID0gc2ltcGxl
TGluZUxheW91dCgqdGhpcykpIHsKLSAgICAgICAgcXVhZHMuYXBwZW5kVmVjdG9yKFNpbXBsZUxp
bmVMYXlvdXQ6OmNvbGxlY3RBYnNvbHV0ZVF1YWRzKCp0aGlzLCAqbGF5b3V0LCB3YXNGaXhlZCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9pbmxpbmVCb3hXcmFwcGVyKQor
ICAgIGF1dG8gYm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6Ym94Rm9yKCp0aGlzKTsKKyAgICBp
ZiAoIWJveCkKICAgICAgICAgcmV0dXJuOwotICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1
dGVRdWFkKEZsb2F0UmVjdChtX2lubGluZUJveFdyYXBwZXItPnRvcExlZnQoKSwgbV9pbmxpbmVC
b3hXcmFwcGVyLT5zaXplKCkpLCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOworCisgICAgYXV0
byByZWN0ID0gYm94LT5yZWN0KCk7CisgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRSZWN0KHJlY3QubG9jYXRpb24oKSwgcmVjdC5zaXplKCkpLCBVc2VUcmFuc2Zvcm1z
LCB3YXNGaXhlZCkpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6dXBkYXRlRnJvbVN0eWxl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCAyYWMwYjFlYTZl
Mi4uNTU5YjM1NGZmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAK
QEAgLTE1MTcsNyArMTUxNyw3IEBAIHVuc2lnbmVkIFJlbmRlclRleHQ6OmNvdW50UmVuZGVyZWRD
aGFyYWN0ZXJPZmZzZXRzVW50aWwodW5zaWduZWQgb2Zmc2V0KSBjb25zdAogZW51bSBjbGFzcyBP
ZmZzZXRUeXBlIHsgQ2hhcmFjdGVyLCBDYXJldCB9Owogc3RhdGljIGJvb2wgY29udGFpbnNPZmZz
ZXQoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBPZmZzZXRUeXBlIHR5
cGUpCiB7Ci0gICAgZm9yIChhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4
dEJveEluVGV4dE9yZGVyRm9yKHRleHQpOyBib3g7IGJveC50cmF2ZXJzZU5leHRJblRleHRPcmRl
cigpKSB7CisgICAgZm9yIChhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4
dEJveEluVGV4dE9yZGVyRm9yKHRleHQpOyBib3g7IGJveC50cmF2ZXJzZU5leHRUZXh0Qm94SW5U
ZXh0T3JkZXIoKSkgewogICAgICAgICBhdXRvIHN0YXJ0ID0gYm94LT5sb2NhbFN0YXJ0T2Zmc2V0
KCk7CiAgICAgICAgIGlmIChvZmZzZXQgPCBzdGFydCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRl
eCA3Yzg1OWM3NGRkNS4uN2UzNzVkOTgwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIHdyaXRlRGVi
dWdJbmZvKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIG9iamVjdCwgT3B0aW9u
U2V0PFJlbmRlcgogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgd3JpdGVUZXh0Qm94KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBSZW5kZXJUZXh0JiBvLCBjb25zdCBMaW5lTGF5b3V0VHJhdmVyc2FsOjpU
ZXh0Qm94JiB0ZXh0Qm94KQorc3RhdGljIHZvaWQgd3JpdGVUZXh0Qm94KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBSZW5kZXJUZXh0JiBvLCBjb25zdCBMaW5lTGF5b3V0VHJhdmVyc2FsOjpCb3gmIHRl
eHRCb3gpCiB7CiAgICAgYXV0byByZWN0ID0gdGV4dEJveC5yZWN0KCk7CiAgICAgYXV0byBsb2dp
Y2FsUmVjdCA9IHRleHRCb3gubG9naWNhbFJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCA2MTk3OTk3
YzAwMi4uNTc3OWQzZWNhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTE4MywzMSArMTgzLDYgQEAgdm9p
ZCBjb2xsZWN0Rmxvd092ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0
JiBsYXlvdXQpCiAgICAgfQogfQogCi1JbnRSZWN0IGNvbXB1dGVCb3VuZGluZ0JveChjb25zdCBS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCkKLXsKLSAgICBhdXRv
JiByZXNvbHZlciA9IGxheW91dC5ydW5SZXNvbHZlcigpOwotICAgIEZsb2F0UmVjdCBib3VuZGlu
Z0JveFJlY3Q7Ci0gICAgZm9yIChhdXRvIHJ1biA6IHJlc29sdmVyLnJhbmdlRm9yUmVuZGVyZXIo
cmVuZGVyZXIpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcnVuLnJlY3QoKTsKLSAgICAg
ICAgaWYgKGJvdW5kaW5nQm94UmVjdCA9PSBGbG9hdFJlY3QoKSkKLSAgICAgICAgICAgIGJvdW5k
aW5nQm94UmVjdCA9IHJlY3Q7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJvdW5kaW5nQm94
UmVjdC51bml0ZUV2ZW5JZkVtcHR5KHJlY3QpOwotICAgIH0KLSAgICByZXR1cm4gZW5jbG9zaW5n
SW50UmVjdChib3VuZGluZ0JveFJlY3QpOwotfQotCi1WZWN0b3I8SW50UmVjdD4gY29sbGVjdEFi
c29sdXRlUmVjdHMoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBs
YXlvdXQsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkKLXsKLSAgICBWZWN0
b3I8SW50UmVjdD4gcmVjdHM7Ci0gICAgYXV0byYgcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2
ZXIoKTsKLSAgICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFuZ2VGb3JSZW5kZXJlcihyZW5k
ZXJlcikpIHsKLSAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBydW4ucmVjdCgpOwotICAgICAgICBy
ZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQg
KyByZWN0LmxvY2F0aW9uKCksIHJlY3Quc2l6ZSgpKSkpOwotICAgIH0KLSAgICByZXR1cm4gcmVj
dHM7Ci19Ci0KIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzKGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5b3V0LCBib29sKiB3YXNGaXhl
ZCkKIHsKICAgICBWZWN0b3I8RmxvYXRRdWFkPiBxdWFkczsKQEAgLTI2MiwxMSArMjM3LDYgQEAg
VmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZShjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCB1bnMKICAgICByZXR1cm4gcXVhZHM7CiB9CiAKLWNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyZXJGb3JQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHMmIGZsb3dD
b250ZW50cywgdW5zaWduZWQgcG9zaXRpb24pCi17Ci0gICAgcmV0dXJuIGZsb3dDb250ZW50cy5z
ZWdtZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pLnJlbmRlcmVyOwotfQotCiB2b2lkIHNpbXBsZUxp
bmVMYXlvdXRXaWxsQmVEZWxldGVkKGNvbnN0IExheW91dCYgbGF5b3V0KQogewogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsYXlvdXQucnVuQ291bnQoKTsgKytpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKaW5kZXgg
NzBkNmFkOWU4ZjYuLjMyYjM0OTE0ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKQEAgLTQ5LDkgKzQ5LDYgQEAgdm9p
ZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0JiwgUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG8KIGJvb2wgaGl0VGVzdEZsb3coY29uc3QgUmVuZGVyQmxvY2tG
bG93JiwgY29uc3QgTGF5b3V0JiwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogdm9pZCBjb2xsZWN0
Rmxvd092ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYpOwogCi1JbnRSZWN0
IGNvbXB1dGVCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXQmKTsK
LQotVmVjdG9yPEludFJlY3Q+IGNvbGxlY3RBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IExheW91dCYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7
CiBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBMYXlvdXQmLCBib29sKiB3YXNGaXhlZCk7CiB1bnNpZ25lZCB0ZXh0T2Zmc2V0
Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJUZXh0JiwgY29uc3QgTGF5
b3V0Jik7CiBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkc0ZvclJhbmdlKGNv
bnN0IFJlbmRlck9iamVjdCYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGNvbnN0IExh
eW91dCYsIGJvb2wqIHdhc0ZpeGVkKTsKQEAgLTYyLDggKzU5LDYgQEAgTGF5b3V0VW5pdCBiYXNl
bGluZUZyb21GbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOwogYm9vbCBjYW5Vc2VGb3JMaW5l
Qm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKIHZvaWQgZ2VuZXJhdGVM
aW5lQm94VHJlZShSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKIAotY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlckZvclBvc2l0aW9uKGNvbnN0IEZsb3dDb250ZW50cyYsIHVuc2ln
bmVkKTsKLQogdm9pZCBzaW1wbGVMaW5lTGF5b3V0V2lsbEJlRGVsZXRlZChjb25zdCBMYXlvdXQm
KTsKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKaW5kZXggOWI4YzYwZTcy
ZDMuLjI4Y2FhZmZhMmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkxpbmVMYXlvdXRUcmF2ZXJzYWwuaCIKIAorI2luY2x1ZGUg
IklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dC5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgpA
QCAtMzMsMTYxICszNCwxODcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMaW5l
TGF5b3V0VHJhdmVyc2FsIHsKIAotRmxvYXRSZWN0IFRleHRCb3g6OnJlY3QoKSBjb25zdAorRmxv
YXRSZWN0IEJveDo6cmVjdCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIHNpbXBsZSA9IFtd
KGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiAoKnBh
dGguaXRlcmF0b3IpLnJlY3QoKTsKICAgICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29u
c3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4g
cGF0aC5pbmxpbmVUZXh0Qm94LT5mcmFtZVJlY3QoKTsKKyAgICBhdXRvIGNvbXBsZXggPSBbXShj
b25zdCBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgu
aW5saW5lQm94LT5mcmFtZVJlY3QoKTsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCi1GbG9h
dFJlY3QgVGV4dEJveDo6bG9naWNhbFJlY3QoKSBjb25zdAorRmxvYXRSZWN0IEJveDo6bG9naWNh
bFJlY3QoKSBjb25zdAogewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJh
dG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBJdGVy
YXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewogICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9y
KS5yZWN0KCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJ
dGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5l
VGV4dEJveC0+bG9naWNhbEZyYW1lUmVjdCgpOworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0
IEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxp
bmVCb3gtPmxvZ2ljYWxGcmFtZVJlY3QoKTsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCi1i
b29sIFRleHRCb3g6Omhhc0h5cGhlbigpIGNvbnN0Citib29sIEJveDo6aGFzSHlwaGVuKCkgY29u
c3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxl
UGF0aCYgcGF0aCkgeworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgSXRlcmF0b3I6OlNpbXBs
ZVBhdGgmIHBhdGgpIHsKICAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikuaGFzSHlwaGVu
KCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJv
eC0+aGFzSHlwaGVuKCk7CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSXRlcmF0b3I6OkNv
bXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3goKS0+
aGFzSHlwaGVuKCk7CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9y
KCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAotYm9vbCBUZXh0Qm94Ojpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QKK2Jvb2wgQm94Ojppc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVy
YXRvcjo6U2ltcGxlUGF0aCYpIHsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IEl0ZXJhdG9y
OjpTaW1wbGVQYXRoJikgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwogCi0gICAgYXV0
byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkg
ewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCk7CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSXRlcmF0b3I6OkNvbXBsZXhQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveC0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpOwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigp
Lm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKLWJvb2wgVGV4dEJveDo6ZGly
T3ZlcnJpZGUoKSBjb25zdAorYm9vbCBCb3g6OmRpck92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICBh
dXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYpIHsKKyAg
ICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikgewogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRl
eHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGgu
aW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUoKTsKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25z
dCBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5s
aW5lQm94LT5kaXJPdmVycmlkZSgpOwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAKLVN0cmlu
Z1ZpZXcgVGV4dEJveDo6dGV4dCgpIGNvbnN0CitTdHJpbmdWaWV3IEJveDo6dGV4dCgpIGNvbnN0
CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBh
dGgmIHBhdGgpIHsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQ
YXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnRleHQoKTsKICAg
ICB9OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21w
bGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhwYXRoLmlubGluZVRl
eHRCb3gtPnJlbmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcocGF0aC5pbmxpbmVUZXh0Qm94LT5z
dGFydCgpLCBwYXRoLmlubGluZVRleHRCb3gtPmxlbigpKTsKKyAgICBhdXRvIGNvbXBsZXggPSBb
XShjb25zdCBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgYXV0byogaW5s
aW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveCgpOworICAgICAgICBpZiAoIWlubGluZVRl
eHRCb3gpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5nVmlldygpOworICAgICAgICByZXR1cm4g
U3RyaW5nVmlldyhpbmxpbmVUZXh0Qm94LT5yZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKGlu
bGluZVRleHRCb3gtPnN0YXJ0KCksIGlubGluZVRleHRCb3gtPmxlbigpKTsKICAgICB9OwogCiAg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwogfQogCi1ib29sIFRleHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKK2Jvb2wg
Qm94Ojppc0xpbmVCcmVhaygpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIHNpbXBsZSA9IFtd
KGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CiAgICAgICAgIHJldHVybiAoKnBh
dGguaXRlcmF0b3IpLmlzTGluZUJyZWFrKCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAg
cmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+aXNMaW5lQnJlYWsoKTsKKyAgICBhdXRvIGNvbXBs
ZXggPSBbXShjb25zdCBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgYXV0
byogaW5saW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveCgpOworICAgICAgICByZXR1cm4g
aW5saW5lVGV4dEJveCAmJiBpbmxpbmVUZXh0Qm94LT5pc0xpbmVCcmVhaygpOwogICAgIH07CiAK
ICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBs
ZSwgY29tcGxleCk7CiB9CiAKLXVuc2lnbmVkIFRleHRCb3g6OmxvY2FsU3RhcnRPZmZzZXQoKSBj
b25zdAorYm9vbCBCb3g6OmlzVGV4dEJveCgpIGNvbnN0CiB7Ci0gICAgYXV0byBzaW1wbGUgPSBb
XShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIHNp
bXBsZSA9IFtdKGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBpczxSZW5kZXJUZXh0PigoKnBhdGguaXRlcmF0b3IpLnJlbmRlcmVyKCkpOworICAgIH07
CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBh
dGgpIHsKKyAgICAgICAgcmV0dXJuICEhcGF0aC5pbmxpbmVUZXh0Qm94KCk7CisgICAgfTsKKwor
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxl
LCBjb21wbGV4KTsKK30KKwordW5zaWduZWQgQm94Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3QK
K3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRo
KSB7CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxvY2FsU3RhcnQoKTsKICAgICB9
OwogCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4
UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5zdGFydCgp
OworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0
aCkgeworICAgICAgICBhdXRvKiBpbmxpbmVUZXh0Qm94ID0gcGF0aC5pbmxpbmVUZXh0Qm94KCk7
CisgICAgICAgIHJldHVybiBpbmxpbmVUZXh0Qm94ID8gaW5saW5lVGV4dEJveC0+c3RhcnQoKSA6
IDA7CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRo
VmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAotdW5zaWduZWQgVGV4dEJveDo6bG9jYWxF
bmRPZmZzZXQoKSBjb25zdAordW5zaWduZWQgQm94Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0CiB7
Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgm
IHBhdGgpIHsKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQYXRo
JiBwYXRoKSB7CiAgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxvY2FsRW5kKCk7CiAg
ICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29t
cGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZW5k
KCk7CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBw
YXRoKSB7CisgICAgICAgIGF1dG8qIGlubGluZVRleHRCb3ggPSBwYXRoLmlubGluZVRleHRCb3go
KTsKKyAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3ggPyBpbmxpbmVUZXh0Qm94LT5lbmQoKSA6
IDA7CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRo
VmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAotdW5zaWduZWQgVGV4dEJveDo6bGVuZ3Ro
KCkgY29uc3QKK3Vuc2lnbmVkIEJveDo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICBhdXRvIHNpbXBs
ZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgIGF1
dG8gc2ltcGxlID0gW10oY29uc3QgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKICAgICAg
ICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikuZW5kKCkgLSAoKnBhdGguaXRlcmF0b3IpLnN0YXJ0
KCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJv
eC0+bGVuKCk7CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgSXRlcmF0b3I6OkNvbXBsZXhQ
YXRoJiBwYXRoKSB7CisgICAgICAgIGF1dG8qIGlubGluZVRleHRCb3ggPSBwYXRoLmlubGluZVRl
eHRCb3goKTsKKyAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3ggPyBpbmxpbmVUZXh0Qm94LT5s
ZW4oKSA6IDA7CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCku
bV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKIH0KIAotYm9vbCBUZXh0Qm94Ojppc0xh
c3RPbkxpbmUoKSBjb25zdAorYm9vbCBCb3g6OmlzTGFzdFRleHRCb3hPbkxpbmUoKSBjb25zdAog
ewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRo
JiBwYXRoKSB7CisgICAgQVNTRVJUKGlzVGV4dEJveCgpKTsKKworICAgIGF1dG8gc2ltcGxlID0g
W10oY29uc3QgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKICAgICAgICAgYXV0byBuZXh0
ID0gcGF0aC5pdGVyYXRvcjsKICAgICAgICAgKytuZXh0OwogICAgICAgICByZXR1cm4gbmV4dCA9
PSBwYXRoLmVuZCB8fCAoKnBhdGguaXRlcmF0b3IpLmxpbmVJbmRleCgpICE9ICgqbmV4dCkubGlu
ZUluZGV4KCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJ
dGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25z
dCBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgYXV0byogaW5saW5lVGV4
dEJveCA9IHBhdGguaW5saW5lVGV4dEJveCgpOworICAgICAgICBBU1NFUlQoaW5saW5lVGV4dEJv
eCk7CiAgICAgICAgIGF1dG8qIG5leHQgPSBwYXRoLm5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3Jk
ZXIoKTsKLSAgICAgICAgcmV0dXJuICFuZXh0IHx8ICZwYXRoLmlubGluZVRleHRCb3gtPnJvb3Qo
KSAhPSAmbmV4dC0+cm9vdCgpOworICAgICAgICByZXR1cm4gIW5leHQgfHwgJmlubGluZVRleHRC
b3gtPnJvb3QoKSAhPSAmbmV4dC0+cm9vdCgpOwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7CiB9CiAK
LWJvb2wgVGV4dEJveDo6aXNMYXN0KCkgY29uc3QKK2Jvb2wgQm94Ojppc0xhc3RUZXh0Qm94KCkg
Y29uc3QKIHsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2lt
cGxlUGF0aCYgcGF0aCkgeworICAgIEFTU0VSVChpc1RleHRCb3goKSk7CisKKyAgICBhdXRvIHNp
bXBsZSA9IFtdKGNvbnN0IEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CiAgICAgICAgIGF1
dG8gbmV4dCA9IHBhdGguaXRlcmF0b3I7CiAgICAgICAgICsrbmV4dDsKICAgICAgICAgcmV0dXJu
IG5leHQgPT0gcGF0aC5lbmQ7CiAgICAgfTsKIAotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0
IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICBhdXRvIGNvbXBsZXgg
PSBbXShjb25zdCBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKICAgICAgICAgcmV0dXJu
ICFwYXRoLm5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKTsKICAgICB9OwogCkBAIC0xOTUs
MzMgKzIyMiwzMyBAQCBib29sIFRleHRCb3g6OmlzTGFzdCgpIGNvbnN0CiB9CiAKIAotaW5saW5l
IGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0b3IoKSBjb25zdAoraW5saW5l
IGNvbnN0IEl0ZXJhdG9yJiBCb3g6Oml0ZXJhdG9yKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgVGV4dEJveEl0ZXJhdG9yJj4oKnRoaXMpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBJdGVyYXRvciY+KCp0aGlzKTsKIH0KIAotVGV4dEJveEl0ZXJhdG9yOjpU
ZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkKLSAgICA6
IG1fcGF0aFZhcmlhbnQoQ29tcGxleFBhdGggeyBpbmxpbmVUZXh0Qm94LCB7IH0gfSkKK0l0ZXJh
dG9yOjpJdGVyYXRvcihjb25zdCBJbmxpbmVCb3gqIGlubGluZUJveCkKKyAgICA6IG1fcGF0aFZh
cmlhbnQoQ29tcGxleFBhdGggeyBpbmxpbmVCb3gsIHsgfSB9KQogewogfQotVGV4dEJveEl0ZXJh
dG9yOjpUZXh0Qm94SXRlcmF0b3IoVmVjdG9yPGNvbnN0IElubGluZVRleHRCb3gqPiYmIHNvcnRl
ZCwgc2l6ZV90IGluZGV4KQorSXRlcmF0b3I6Okl0ZXJhdG9yKFZlY3Rvcjxjb25zdCBJbmxpbmVU
ZXh0Qm94Kj4mJiBzb3J0ZWQsIHNpemVfdCBpbmRleCkKICAgICA6IG1fcGF0aFZhcmlhbnQoQ29t
cGxleFBhdGggeyBpbmRleCA8IHNvcnRlZC5zaXplKCkgPyBzb3J0ZWRbaW5kZXhdIDogbnVsbHB0
ciwgV1RGTW92ZShzb3J0ZWQpLCBpbmRleCB9KQogewogfQogCi1UZXh0Qm94SXRlcmF0b3I6OlRl
eHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRl
cmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpCitJdGVy
YXRvcjo6SXRlcmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGl0
ZXJhdG9yLCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kKQogICAg
IDogbV9wYXRoVmFyaWFudChTaW1wbGVQYXRoIHsgaXRlcmF0b3IsIGVuZCB9KQogewogfQogCi1U
ZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRl
cigpCitJdGVyYXRvciYgSXRlcmF0b3I6OnRyYXZlcnNlTmV4dFRleHRCb3goKQogewogICAgIGF1
dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYgcGF0aCkgewogICAgICAgICArK3BhdGguaXRlcmF0
b3I7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7
Ci0gICAgICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRl
eHRCb3goKTsKKyAgICAgICAgcGF0aC5pbmxpbmVCb3ggPSBwYXRoLmlubGluZVRleHRCb3goKS0+
bmV4dFRleHRCb3goKTsKICAgICB9OwogCiAgICAgV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50
LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjI5LDI0ICsyNTYsMzUgQEAgVGV4dEJveEl0ZXJhdG9y
JiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKQogICAgIHJldHVy
biAqdGhpczsKIH0KIAotY29uc3QgSW5saW5lVGV4dEJveCogVGV4dEJveEl0ZXJhdG9yOjpDb21w
bGV4UGF0aDo6bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpIGNvbnN0Citjb25zdCBJbmxp
bmVUZXh0Qm94KiBJdGVyYXRvcjo6Q29tcGxleFBhdGg6OmlubGluZVRleHRCb3goKSBjb25zdAog
eworICAgIGlmICghaXM8SW5saW5lVGV4dEJveD4oaW5saW5lQm94KSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgcmV0dXJuIGRvd25jYXN0PElubGluZVRleHRCb3g+KGlubGluZUJveCk7
Cit9CisKK2NvbnN0IElubGluZVRleHRCb3gqIEl0ZXJhdG9yOjpDb21wbGV4UGF0aDo6bmV4dElu
bGluZVRleHRCb3hJblRleHRPcmRlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlubGluZVRleHRC
b3goKSk7CisKICAgICBpZiAoIXNvcnRlZElubGluZVRleHRCb3hlcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgaWYgKHNvcnRlZElubGluZVRleHRCb3hJbmRleCArIDEgPCBzb3J0ZWRJbmxpbmVUZXh0
Qm94ZXMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHNvcnRlZElubGluZVRleHRCb3hlc1tz
b3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXggKyAxXTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQotICAgIHJldHVybiBpbmxpbmVUZXh0Qm94LT5uZXh0VGV4dEJveCgpOworICAgIHJldHVy
biBpbmxpbmVUZXh0Qm94KCktPm5leHRUZXh0Qm94KCk7CiB9CiAKLVRleHRCb3hJdGVyYXRvciYg
VGV4dEJveEl0ZXJhdG9yOjp0cmF2ZXJzZU5leHRJblRleHRPcmRlcigpCitJdGVyYXRvciYgSXRl
cmF0b3I6OnRyYXZlcnNlTmV4dFRleHRCb3hJblRleHRPcmRlcigpCiB7CisgICAgQVNTRVJUKGlz
VGV4dEJveCgpKTsKKwogICAgIGF1dG8gc2ltcGxlID0gW10oU2ltcGxlUGF0aCYgcGF0aCkgewog
ICAgICAgICArK3BhdGguaXRlcmF0b3I7CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtd
KENvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGgu
bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOworICAgICAgICBwYXRoLmlubGluZUJveCA9
IHBhdGgubmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOwogICAgICAgICBpZiAoIXBhdGgu
c29ydGVkSW5saW5lVGV4dEJveGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICsrcGF0aC5zb3J0
ZWRJbmxpbmVUZXh0Qm94SW5kZXg7CiAgICAgfTsKQEAgLTI1Niw3ICsyOTQsNyBAQCBUZXh0Qm94
SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKQogICAg
IHJldHVybiAqdGhpczsKIH0KIAotYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29u
c3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK2Jvb2wgSXRlcmF0b3I6Om9wZXJhdG9y
PT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdAogewogICAgIGlmIChtX3BhdGhWYXJpYW50
LmluZGV4KCkgIT0gb3RoZXIubV9wYXRoVmFyaWFudC5pbmRleCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yNjYsNTIgKzMwNCw2NCBAQCBib29sIFRleHRCb3hJdGVyYXRvcjo6b3BlcmF0
b3I9PShjb25zdCBUZXh0Qm94SXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgIH07CiAKICAgICBh
dXRvIGNvbXBsZXggPSBbJl0oY29uc3QgQ29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0
dXJuIHBhdGguaW5saW5lVGV4dEJveCA9PSBXVEY6OmdldDxDb21wbGV4UGF0aD4ob3RoZXIubV9w
YXRoVmFyaWFudCkuaW5saW5lVGV4dEJveDsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94
ID09IFdURjo6Z2V0PENvbXBsZXhQYXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pbmxpbmVCb3g7
CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIHNpbXBs
ZSwgY29tcGxleCk7CiB9CiAKLWJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Citi
b29sIEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiB7CiAgICAgYXV0byBzaW1wbGUgPSBbJl0oY29u
c3QgU2ltcGxlUGF0aCYgcGF0aCkgewogICAgICAgICByZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBw
YXRoLmVuZDsKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IENvbXBsZXhQ
YXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAhcGF0aC5pbmxpbmVUZXh0Qm94OworICAgICAg
ICByZXR1cm4gIXBhdGguaW5saW5lQm94OwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwogfQogCi1UZXh0Qm94SXRlcmF0
b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRleHQmIHRleHQpCitJdGVyYXRvciBmaXJz
dFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKIHsKICAgICBpZiAoYXV0byogc2lt
cGxlTGluZUxheW91dCA9IHRleHQuc2ltcGxlTGluZUxheW91dCgpKSB7CiAgICAgICAgIGF1dG8g
cmFuZ2UgPSBzaW1wbGVMaW5lTGF5b3V0LT5ydW5SZXNvbHZlcigpLnJhbmdlRm9yUmVuZGVyZXIo
dGV4dCk7CiAgICAgICAgIHJldHVybiB7IHJhbmdlLmJlZ2luKCksIHJhbmdlLmVuZCgpIH07CiAg
ICAgfQogCi0gICAgcmV0dXJuIFRleHRCb3hJdGVyYXRvciB7IHRleHQuZmlyc3RUZXh0Qm94KCkg
fTsKKyAgICByZXR1cm4gSXRlcmF0b3IgeyB0ZXh0LmZpcnN0VGV4dEJveCgpIH07CiB9CiAKLVRl
eHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihjb25zdCBSZW5kZXJUZXh0
JiB0ZXh0KQorSXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVy
VGV4dCYgdGV4dCkKIHsKICAgICBpZiAoIXRleHQuc2ltcGxlTGluZUxheW91dCgpICYmIHRleHQu
Y29udGFpbnNSZXZlcnNlZFRleHQoKSkgewogICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lVGV4
dEJveCo+IHNvcnRlZFRleHRCb3hlczsKICAgICAgICAgZm9yIChhdXRvKiB0ZXh0Qm94ID0gdGV4
dC5maXJzdFRleHRCb3goKTsgdGV4dEJveDsgdGV4dEJveCA9IHRleHRCb3gtPm5leHRUZXh0Qm94
KCkpCiAgICAgICAgICAgICBzb3J0ZWRUZXh0Qm94ZXMuYXBwZW5kKHRleHRCb3gpOwogICAgICAg
ICBzdGQ6OnNvcnQoc29ydGVkVGV4dEJveGVzLmJlZ2luKCksIHNvcnRlZFRleHRCb3hlcy5lbmQo
KSwgSW5saW5lVGV4dEJveDo6Y29tcGFyZUJ5U3RhcnQpOwotICAgICAgICByZXR1cm4gVGV4dEJv
eEl0ZXJhdG9yIHsgV1RGTW92ZShzb3J0ZWRUZXh0Qm94ZXMpLCAwIH07CisgICAgICAgIHJldHVy
biBJdGVyYXRvciB7IFdURk1vdmUoc29ydGVkVGV4dEJveGVzKSwgMCB9OwogICAgIH0KIAogICAg
IHJldHVybiBmaXJzdFRleHRCb3hGb3IodGV4dCk7CiB9CiAKLVRleHRCb3hSYW5nZSB0ZXh0Qm94
ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKK1JhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBS
ZW5kZXJUZXh0JiB0ZXh0KQogewogICAgIHJldHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSB9
OwogfQogCitJdGVyYXRvciBib3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikK
K3sKKyAgICBpZiAoaXM8UmVuZGVyQmxvY2tGbG93PihyZW5kZXJlci5wYXJlbnQoKSkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIHNpbXBsZUxpbmVMYXlvdXQgPSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zs
b3c+KCpyZW5kZXJlci5wYXJlbnQoKSkuc2ltcGxlTGluZUxheW91dCgpKSB7CisgICAgICAgICAg
ICBhdXRvIHJhbmdlID0gc2ltcGxlTGluZUxheW91dC0+cnVuUmVzb2x2ZXIoKS5yYW5nZUZvclJl
bmRlcmVyKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiB7IHJhbmdlLmJlZ2luKCksIHJh
bmdlLmVuZCgpIH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gSXRlcmF0b3IgeyBy
ZW5kZXJlci5pbmxpbmVCb3hXcmFwcGVyKCkgfTsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCmluZGV4IGZjOTI3
ODE4NDk3Li4yZjU2ODc2MzliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaApAQCAtMzUsMTA4ICszNSwxMTMgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNzIFJlbmRlckxpbmVC
cmVhazsKIGNsYXNzIFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2Fs
IHsKIAotY2xhc3MgVGV4dEJveENvbnRleHQ7Ci1jbGFzcyBUZXh0Qm94SXRlcmF0b3I7CitjbGFz
cyBJdGVyYXRvcjsKIAogc3RydWN0IEVuZEl0ZXJhdG9yIHsgfTsKIAotY2xhc3MgVGV4dEJveCB7
CitjbGFzcyBCb3ggewogcHVibGljOgogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3Q7CiAgICAg
RmxvYXRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3Q7CiAKLSAgICBib29sIGhhc0h5cGhlbigpIGNv
bnN0OwogICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0OwogICAgIGJvb2wg
ZGlyT3ZlcnJpZGUoKSBjb25zdDsKIAotICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0OwogICAg
IGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdDsKKyAgICBib29sIGlzVGV4dEJveCgpIGNvbnN0Owor
CisgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgbWVhbmluZ2Z1bCBmb3IgdGV4dCBib3hlcy4KKyAg
ICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKKyAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0Owog
CiAgICAgLy8gVGhlc2Ugb2Zmc2V0cyBhcmUgcmVsYXRpdmUgdG8gdGhlIHRleHQgcmVuZGVyZXIg
KG5vdCBmbG93KS4KICAgICB1bnNpZ25lZCBsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3Q7CiAgICAg
dW5zaWduZWQgbG9jYWxFbmRPZmZzZXQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKIAotICAgIGJvb2wgaXNMYXN0T25MaW5lKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xhc3Qo
KSBjb25zdDsKKyAgICBib29sIGlzTGFzdFRleHRCb3hPbkxpbmUoKSBjb25zdDsKKyAgICBib29s
IGlzTGFzdFRleHRCb3goKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFRleHRCb3goKSA9IGRl
ZmF1bHQ7Ci0gICAgVGV4dEJveChjb25zdCBUZXh0Qm94JikgPSBkZWZhdWx0OwotICAgIFRleHRC
b3goVGV4dEJveCYmKSA9IGRlZmF1bHQ7Ci0gICAgflRleHRCb3goKSA9IGRlZmF1bHQ7Ci0gICAg
VGV4dEJveCYgb3BlcmF0b3I9KGNvbnN0IFRleHRCb3gmKSA9IGRlZmF1bHQ7Ci0gICAgVGV4dEJv
eCYgb3BlcmF0b3I9KFRleHRCb3gmJikgPSBkZWZhdWx0OworICAgIEJveCgpID0gZGVmYXVsdDsK
KyAgICBCb3goY29uc3QgQm94JikgPSBkZWZhdWx0OworICAgIEJveChCb3gmJikgPSBkZWZhdWx0
OworICAgIH5Cb3goKSA9IGRlZmF1bHQ7CisgICAgQm94JiBvcGVyYXRvcj0oY29uc3QgQm94Jikg
PSBkZWZhdWx0OworICAgIEJveCYgb3BlcmF0b3I9KEJveCYmKSA9IGRlZmF1bHQ7CiAKIHByaXZh
dGU6Ci0gICAgY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBpdGVyYXRvcigpIGNvbnN0OworICAgIGNv
bnN0IEl0ZXJhdG9yJiBpdGVyYXRvcigpIGNvbnN0OwogfTsKIAotY2xhc3MgVGV4dEJveEl0ZXJh
dG9yIDogcHJpdmF0ZSBUZXh0Qm94IHsKK2NsYXNzIEl0ZXJhdG9yIDogcHJpdmF0ZSBCb3ggewog
cHVibGljOgotICAgIFRleHRCb3hJdGVyYXRvcigpIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0
aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07Ci0gICAgZXhwbGljaXQgVGV4dEJveEl0ZXJhdG9yKGNv
bnN0IElubGluZVRleHRCb3gqKTsKLSAgICBUZXh0Qm94SXRlcmF0b3IoVmVjdG9yPGNvbnN0IElu
bGluZVRleHRCb3gqPiYmIHNvcnRlZCwgc2l6ZV90IGluZGV4KTsKKyAgICBJdGVyYXRvcigpIDog
bV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07CisgICAgZXhw
bGljaXQgSXRlcmF0b3IoY29uc3QgSW5saW5lQm94Kik7CisgICAgSXRlcmF0b3IoVmVjdG9yPGNv
bnN0IElubGluZVRleHRCb3gqPiYmIHNvcnRlZCwgc2l6ZV90IGluZGV4KTsKICAgICAKLSAgICBU
ZXh0Qm94SXRlcmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yLCBT
aW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kKTsKKyAgICBJdGVyYXRv
cihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlv
dXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQpOwogCi0gICAgVGV4dEJveEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOyB9Ci0gICAg
VGV4dEJveEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7Ci0gICAgVGV4dEJv
eEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRJblRleHRPcmRlcigpOworICAgIEl0ZXJhdG9yJiBvcGVy
YXRvcisrKCkgeyByZXR1cm4gdHJhdmVyc2VOZXh0VGV4dEJveCgpOyB9CisgICAgSXRlcmF0b3Im
IHRyYXZlcnNlTmV4dFRleHRCb3goKTsKKyAgICBJdGVyYXRvciYgdHJhdmVyc2VOZXh0VGV4dEJv
eEluVGV4dE9yZGVyKCk7CiAKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gIWF0RW5kKCk7IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUZXh0Qm94SXRl
cmF0b3ImKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dEJveEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQog
CiAgICAgYm9vbCBvcGVyYXRvcj09KEVuZEl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiBhdEVuZCgp
OyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KEVuZEl0ZXJhdG9yKSBjb25zdCB7IHJldHVybiAhYXRF
bmQoKTsgfQogCi0gICAgY29uc3QgVGV4dEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4g
KnRoaXM7IH0KLSAgICBjb25zdCBUZXh0Qm94KiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
dGhpczsgfQorICAgIGNvbnN0IEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7
IH0KKyAgICBjb25zdCBCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAK
ICAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFRl
eHRCb3g7CisgICAgZnJpZW5kIGNsYXNzIEJveDsKIAogICAgIHN0cnVjdCBTaW1wbGVQYXRoIHsK
ICAgICAgICAgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGl0ZXJhdG9y
OwogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kOwog
ICAgIH07CiAgICAgc3RydWN0IENvbXBsZXhQYXRoIHsKLSAgICAgICAgY29uc3QgSW5saW5lVGV4
dEJveCogaW5saW5lVGV4dEJveDsKKyAgICAgICAgY29uc3QgSW5saW5lQm94KiBpbmxpbmVCb3g7
CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4gc29ydGVkSW5saW5lVGV4dEJv
eGVzOwogICAgICAgICBzaXplX3Qgc29ydGVkSW5saW5lVGV4dEJveEluZGV4IHsgMCB9OwogCisg
ICAgICAgIGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3goKSBjb25zdDsKICAgICAg
ICAgY29uc3QgSW5saW5lVGV4dEJveCogbmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpIGNv
bnN0OwogICAgIH07CiAgICAgVmFyaWFudDxTaW1wbGVQYXRoLCBDb21wbGV4UGF0aD4gbV9wYXRo
VmFyaWFudDsKIH07CiAKLWNsYXNzIFRleHRCb3hSYW5nZSB7CitjbGFzcyBSYW5nZSB7CiBwdWJs
aWM6Ci0gICAgVGV4dEJveFJhbmdlKFRleHRCb3hJdGVyYXRvciBiZWdpbikKKyAgICBSYW5nZShJ
dGVyYXRvciBiZWdpbikKICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQogICAgIHsKICAgICB9CiAK
LSAgICBUZXh0Qm94SXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9Cisg
ICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX2JlZ2luOyB9CiAgICAgRW5kSXRl
cmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAKIHByaXZhdGU6Ci0gICAgVGV4dEJv
eEl0ZXJhdG9yIG1fYmVnaW47CisgICAgSXRlcmF0b3IgbV9iZWdpbjsKIH07CiAKLVRleHRCb3hJ
dGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwotVGV4dEJveEl0ZXJh
dG9yIGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKLVRleHRC
b3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwotCitJdGVyYXRvciBmaXJz
dFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYpOworSXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5U
ZXh0T3JkZXJGb3IoY29uc3QgUmVuZGVyVGV4dCYpOworUmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0
IFJlbmRlclRleHQmKTsKIGlubGluZSBib29sIGhhc1RleHRCb3hlcyhjb25zdCBSZW5kZXJUZXh0
JiB0ZXh0KSB7IHJldHVybiAhZmlyc3RUZXh0Qm94Rm9yKHRleHQpLmF0RW5kKCk7IH0KIAorSXRl
cmF0b3IgYm94Rm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpOworCiB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379827</attachid>
            <date>2019-09-30 01:14:58 -0700</date>
            <delta_ts>2019-09-30 02:51:30 -0700</delta_ts>
            <desc>wip</desc>
            <filename>llt-linebreak-2.patch</filename>
            <type>text/plain</type>
            <size>24258</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggMWFh
ZTA5ZDAwYjIuLmI4ZWJjNDZkZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MV0JSRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1l
bnRCb3guaCIKKyNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiTG9n
aWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKLSNpbmNs
dWRlICJTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNDUsMTMgKzQ1
LDYgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlckxpbmVCcmVhayk7CiAKIHN0
YXRpYyBjb25zdCBpbnQgaW52YWxpZExpbmVIZWlnaHQgPSAtMTsKIAotc3RhdGljIGNvbnN0IFNp
bXBsZUxpbmVMYXlvdXQ6OkxheW91dCogc2ltcGxlTGluZUxheW91dChjb25zdCBSZW5kZXJMaW5l
QnJlYWsmIHJlbmRlcmVyKQotewotICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVy
ZXIucGFyZW50KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLnNpbXBsZUxpbmVMYXlvdXQo
KTsKLX0KLQogUmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVs
ZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcihudWxs
cHRyKQpAQCAtMTgzLDQ1ICsxNzYsMzEgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaW5lQnJlYWs6Omxv
Y2FsQ2FyZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCB1bnNpZ25lZCBjYXJldE8KIAogSW50
UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogewotICAgIGlm
IChhdXRvKiBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCp0aGlzKSkKLSAgICAgICAgcmV0dXJu
IFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVCb3VuZGluZ0JveCgqdGhpcywgKmxheW91dCk7Ci0K
LSAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsK
LQotICAgIGZsb2F0IGxvZ2ljYWxMZWZ0U2lkZSA9IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNh
bExlZnQoKTsKLSAgICBmbG9hdCBsb2dpY2FsUmlnaHRTaWRlID0gbV9pbmxpbmVCb3hXcmFwcGVy
LT5sb2dpY2FsUmlnaHQoKTsKLQotICAgIGJvb2wgaXNIb3Jpem9udGFsID0gc3R5bGUoKS5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpOworICAgIGF1dG8gYm94ID0gTGluZUxheW91dFRyYXZlcnNh
bDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCisgICAgICAgIHJldHVybiB7
IH07CiAKLSAgICBmbG9hdCB4ID0gaXNIb3Jpem9udGFsID8gbG9naWNhbExlZnRTaWRlIDogbV9p
bmxpbmVCb3hXcmFwcGVyLT54KCk7Ci0gICAgZmxvYXQgeSA9IGlzSG9yaXpvbnRhbCA/IG1faW5s
aW5lQm94V3JhcHBlci0+eSgpIDogbG9naWNhbExlZnRTaWRlOwotICAgIGZsb2F0IHdpZHRoID0g
aXNIb3Jpem9udGFsID8gbG9naWNhbFJpZ2h0U2lkZSAtIGxvZ2ljYWxMZWZ0U2lkZSA6IG1faW5s
aW5lQm94V3JhcHBlci0+bG9naWNhbEJvdHRvbSgpIC0geDsKLSAgICBmbG9hdCBoZWlnaHQgPSBp
c0hvcml6b250YWwgPyBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxCb3R0b20oKSAtIHkgOiBs
b2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOwotICAgIHJldHVybiBlbmNsb3NpbmdJ
bnRSZWN0KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3QoYm94LT5yZWN0KCkpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6YWJz
b2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGxheW91dCA9IHNpbXBsZUxp
bmVMYXlvdXQoKnRoaXMpKSB7Ci0gICAgICAgIHJlY3RzLmFwcGVuZFZlY3RvcihTaW1wbGVMaW5l
TGF5b3V0Ojpjb2xsZWN0QWJzb2x1dGVSZWN0cygqdGhpcywgKmxheW91dCwgYWNjdW11bGF0ZWRP
ZmZzZXQpKTsKKyAgICBhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hG
b3IoKnRoaXMpOworICAgIGlmICghYm94KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAg
aWYgKCFtX2lubGluZUJveFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAgICByZWN0cy5hcHBl
bmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBtX2lubGlu
ZUJveFdyYXBwZXItPnRvcExlZnQoKSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5zaXplKCkpKSk7Cisg
ICAgYXV0byByZWN0ID0gYm94LT5yZWN0KCk7CisgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0lu
dFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2NhdGlvbigpLCByZWN0
LnNpemUoKSkpKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBpZiAo
YXV0byogbGF5b3V0ID0gc2ltcGxlTGluZUxheW91dCgqdGhpcykpIHsKLSAgICAgICAgcXVhZHMu
YXBwZW5kVmVjdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RBYnNvbHV0ZVF1YWRzKCp0aGlz
LCAqbGF5b3V0LCB3YXNGaXhlZCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICgh
bV9pbmxpbmVCb3hXcmFwcGVyKQorICAgIGF1dG8gYm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6
ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCiAgICAgICAgIHJldHVybjsKLSAg
ICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobV9pbmxpbmVCb3hX
cmFwcGVyLT50b3BMZWZ0KCksIG1faW5saW5lQm94V3JhcHBlci0+c2l6ZSgpKSwgVXNlVHJhbnNm
b3Jtcywgd2FzRml4ZWQpKTsKKworICAgIGF1dG8gcmVjdCA9IGJveC0+cmVjdCgpOworICAgIHF1
YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZWN0LmxvY2F0aW9uKCks
IHJlY3Quc2l6ZSgpKSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKIH0KIAogdm9pZCBSZW5k
ZXJMaW5lQnJlYWs6OnVwZGF0ZUZyb21TdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggN2M4NTljNzRkZDUuLjExYjcxOWUzMWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0y
MDIsNyArMjAyLDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAvLyBtYW55IHRl
c3QgcmVzdWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJl
bmRlclRleHQ+KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24o
KSwgdGV4dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAgaWYgKCFMaW5lTGF5
b3V0VHJhdmVyc2FsOjpoYXNUZXh0Qm94ZXModGV4dCkpCisgICAgICAgIGlmICghTGluZUxheW91
dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94Rm9yKHRleHQpKQogICAgICAgICAgICAgYWRqdXN0Rm9y
VGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkpIHsKICAgICAgICAg
Y29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4obyk7
CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCB3cml0ZURlYnVnSW5mbyhUZXh0U3RyZWFtJiB0cywg
Y29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGlvblNldDxSZW5kZXIKICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4
dCYgbywgY29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveCYgdGV4dEJveCkKK3N0YXRp
YyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYgbywg
Y29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yOjpCb3hUeXBlJiB0ZXh0
Qm94KQogewogICAgIGF1dG8gcmVjdCA9IHRleHRCb3gucmVjdCgpOwogICAgIGF1dG8gbG9naWNh
bFJlY3QgPSB0ZXh0Qm94LmxvZ2ljYWxSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggNjE5Nzk5N2Mw
MDIuLjU3NzlkM2VjYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0xODMsMzEgKzE4Myw2IEBAIHZvaWQg
Y29sbGVjdEZsb3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYg
bGF5b3V0KQogICAgIH0KIH0KIAotSW50UmVjdCBjb21wdXRlQm91bmRpbmdCb3goY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAgYXV0byYg
cmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKLSAgICBGbG9hdFJlY3QgYm91bmRpbmdC
b3hSZWN0OwotICAgIGZvciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5nZUZvclJlbmRlcmVyKHJl
bmRlcmVyKSkgewotICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHJ1bi5yZWN0KCk7Ci0gICAgICAg
IGlmIChib3VuZGluZ0JveFJlY3QgPT0gRmxvYXRSZWN0KCkpCi0gICAgICAgICAgICBib3VuZGlu
Z0JveFJlY3QgPSByZWN0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBib3VuZGluZ0JveFJl
Y3QudW5pdGVFdmVuSWZFbXB0eShyZWN0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGVuY2xvc2luZ0lu
dFJlY3QoYm91bmRpbmdCb3hSZWN0KTsKLX0KLQotVmVjdG9yPEludFJlY3Q+IGNvbGxlY3RBYnNv
bHV0ZVJlY3RzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5
b3V0LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCi17Ci0gICAgVmVjdG9y
PEludFJlY3Q+IHJlY3RzOwotICAgIGF1dG8mIHJlc29sdmVyID0gbGF5b3V0LnJ1blJlc29sdmVy
KCk7Ci0gICAgZm9yIChhdXRvIHJ1biA6IHJlc29sdmVyLnJhbmdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcnVuLnJlY3QoKTsKLSAgICAgICAgcmVj
dHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsg
cmVjdC5sb2NhdGlvbigpLCByZWN0LnNpemUoKSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlY3Rz
OwotfQotCiBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkcyhjb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCwgYm9vbCogd2FzRml4ZWQp
CiB7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0yNjIsMTEgKzIzNyw2IEBAIFZl
Y3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciwgdW5zCiAgICAgcmV0dXJuIHF1YWRzOwogfQogCi1jb25zdCBSZW5k
ZXJPYmplY3QmIHJlbmRlcmVyRm9yUG9zaXRpb24oY29uc3QgRmxvd0NvbnRlbnRzJiBmbG93Q29u
dGVudHMsIHVuc2lnbmVkIHBvc2l0aW9uKQotewotICAgIHJldHVybiBmbG93Q29udGVudHMuc2Vn
bWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKS5yZW5kZXJlcjsKLX0KLQogdm9pZCBzaW1wbGVMaW5l
TGF5b3V0V2lsbEJlRGVsZXRlZChjb25zdCBMYXlvdXQmIGxheW91dCkKIHsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGF5b3V0LnJ1bkNvdW50KCk7ICsraSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCmluZGV4IDcw
ZDZhZDllOGY2Li4zMmIzNDkxNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC00OSw5ICs0OSw2IEBAIHZvaWQg
cGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYsIFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvCiBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYsIGNvbnN0IExheW91dCYsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKIHZvaWQgY29sbGVjdEZs
b3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKIAotSW50UmVjdCBj
b21wdXRlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0Jik7Ci0K
LVZlY3RvcjxJbnRSZWN0PiBjb2xsZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBMYXlvdXQmLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwog
VmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgTGF5b3V0JiwgYm9vbCogd2FzRml4ZWQpOwogdW5zaWduZWQgdGV4dE9mZnNldEZv
clBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IExheW91
dCYpOwogVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZShjb25z
dCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBjb25zdCBMYXlv
dXQmLCBib29sKiB3YXNGaXhlZCk7CkBAIC02Miw4ICs1OSw2IEBAIExheW91dFVuaXQgYmFzZWxp
bmVGcm9tRmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIGJvb2wgY2FuVXNlRm9yTGluZUJv
eFRyZWUoUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiB2b2lkIGdlbmVyYXRlTGlu
ZUJveFRyZWUoUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiAKLWNvbnN0IFJlbmRl
ck9iamVjdCYgcmVuZGVyZXJGb3JQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHMmLCB1bnNpZ25l
ZCk7Ci0KIHZvaWQgc2ltcGxlTGluZUxheW91dFdpbGxCZURlbGV0ZWQoY29uc3QgTGF5b3V0Jik7
CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCmluZGV4IDliOGM2MGU3MmQz
Li4yY2QzYjI1NDExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZUxheW91dFRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKQEAgLTI2LDE4MCArMjYsMTEgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAKLSNpbmNsdWRl
ICJJbmxpbmVUZXh0Qm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2luY2x1ZGUgIlNp
bXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGluZUxheW91dFRyYXZlcnNhbCB7CiAK
LUZsb2F0UmVjdCBUZXh0Qm94OjpyZWN0KCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtd
KGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAg
cmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZnJhbWVSZWN0KCk7Ci0gICAgfTsKLQotICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21w
bGV4KTsKLX0KLQotRmxvYXRSZWN0IFRleHRCb3g6OmxvZ2ljYWxSZWN0KCkgY29uc3QKLXsKLSAg
ICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0
aCkgewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7Ci0gICAgfTsKLQot
ICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgm
IHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+bG9naWNhbEZyYW1l
UmVjdCgpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1f
cGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aGFzSHlw
aGVuKCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5o
YXNIeXBoZW4oKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJv
eEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxp
bmVUZXh0Qm94LT5oYXNIeXBoZW4oKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi1ib29s
IFRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAotewotICAgIGF1dG8gc2lt
cGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikgewotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJv
eEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxp
bmVUZXh0Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgfTsKLQotICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4
KTsKLX0KLQotYm9vbCBUZXh0Qm94OjpkaXJPdmVycmlkZSgpIGNvbnN0Ci17Ci0gICAgYXV0byBz
aW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmKSB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4
dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5p
bmxpbmVUZXh0Qm94LT5kaXJPdmVycmlkZSgpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0K
LVN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4dCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBb
XShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0
dXJuICgqcGF0aC5pdGVyYXRvcikudGV4dCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXBsZXgg
PSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAg
IHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5saW5lVGV4dEJveC0+cmVuZGVyZXIoKS50ZXh0KCkp
LnN1YnN0cmluZyhwYXRoLmlubGluZVRleHRCb3gtPnN0YXJ0KCksIHBhdGguaW5saW5lVGV4dEJv
eC0+bGVuKCkpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigp
Lm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNM
aW5lQnJlYWsoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0
ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0
b3IpLmlzTGluZUJyZWFrKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0
IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBh
dGguaW5saW5lVGV4dEJveC0+aXNMaW5lQnJlYWsoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwot
fQotCi11bnNpZ25lZCBUZXh0Qm94Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3QKLXsKLSAgICBh
dXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkg
ewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5sb2NhbFN0YXJ0KCk7Ci0gICAgfTsK
LQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBh
dGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+c3RhcnQoKTsK
LSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJp
YW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBUZXh0Qm94Ojpsb2NhbEVuZE9m
ZnNldCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0
b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvciku
bG9jYWxFbmQoKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJv
eEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxp
bmVUZXh0Qm94LT5lbmQoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRl
cmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBU
ZXh0Qm94OjpsZW5ndGgoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4
dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAoKnBhdGgu
aXRlcmF0b3IpLmVuZCgpIC0gKCpwYXRoLml0ZXJhdG9yKS5zdGFydCgpOwotICAgIH07Ci0KLSAg
ICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBw
YXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmxlbigpOwotICAgIH07
Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNp
bXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNMYXN0T25MaW5lKCkgY29uc3QK
LXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0
aCYgcGF0aCkgewotICAgICAgICBhdXRvIG5leHQgPSBwYXRoLml0ZXJhdG9yOwotICAgICAgICAr
K25leHQ7Ci0gICAgICAgIHJldHVybiBuZXh0ID09IHBhdGguZW5kIHx8ICgqcGF0aC5pdGVyYXRv
cikubGluZUluZGV4KCkgIT0gKCpuZXh0KS5saW5lSW5kZXgoKTsKLSAgICB9OwotCi0gICAgYXV0
byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkg
ewotICAgICAgICBhdXRvKiBuZXh0ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVy
KCk7Ci0gICAgICAgIHJldHVybiAhbmV4dCB8fCAmcGF0aC5pbmxpbmVUZXh0Qm94LT5yb290KCkg
IT0gJm5leHQtPnJvb3QoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRl
cmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi1ib29sIFRleHRC
b3g6OmlzTGFzdCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94
SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgYXV0byBuZXh0ID0gcGF0aC5p
dGVyYXRvcjsKLSAgICAgICAgKytuZXh0OwotICAgICAgICByZXR1cm4gbmV4dCA9PSBwYXRoLmVu
ZDsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9y
OjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gIXBhdGgubmV4dElubGluZVRl
eHRCb3hJblRleHRPcmRlcigpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihp
dGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLQotaW5saW5l
IGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0b3IoKSBjb25zdAotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Qm94SXRlcmF0b3ImPigqdGhpcyk7Ci19Ci0K
IFRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRCb3gqIGlu
bGluZVRleHRCb3gpCiAgICAgOiBtX3BhdGhWYXJpYW50KENvbXBsZXhQYXRoIHsgaW5saW5lVGV4
dEJveCwgeyB9IH0pCiB7CkBAIC0zMTMsNSArMTQ0LDM5IEBAIFRleHRCb3hSYW5nZSB0ZXh0Qm94
ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKICAgICByZXR1cm4geyBmaXJzdFRleHRCb3hG
b3IodGV4dCkgfTsKIH0KIAorRWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3Io
Y29uc3QgSW5saW5lRWxlbWVudEJveCogaW5saW5lRWxlbWVudEJveCkKKyAgICA6IG1fcGF0aFZh
cmlhbnQoQ29tcGxleFBhdGggeyBpbmxpbmVFbGVtZW50Qm94IH0pCit7Cit9CitFbGVtZW50Qm94
SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZl
cjo6SXRlcmF0b3IgaXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvciBlbmQpCisgICAgOiBtX3BhdGhWYXJpYW50KFNpbXBsZVBhdGggeyBpdGVyYXRvciwgZW5k
IH0pCit7Cit9CisKK2Jvb2wgRWxlbWVudEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Cit7Cisg
ICAgYXV0byBzaW1wbGUgPSBbJl0oY29uc3QgU2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICBy
ZXR1cm4gcGF0aC5pdGVyYXRvciA9PSBwYXRoLmVuZDsKKyAgICB9OworCisgICAgYXV0byBjb21w
bGV4ID0gWyZdKGNvbnN0IENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAhcGF0
aC5pbmxpbmVFbGVtZW50Qm94OworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbiht
X3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCitFbGVtZW50Qm94SXRlcmF0b3Ig
ZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlckVsZW1lbnQpCit7Cisg
ICAgaWYgKGF1dG8mIHBhcmVudCA9ICpyZW5kZXJFbGVtZW50LnBhcmVudCgpOyBpczxSZW5kZXJC
bG9ja0Zsb3c+KHBhcmVudCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNpbXBsZUxpbmVMYXlvdXQg
PSBkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHBhcmVudCkuc2ltcGxlTGluZUxheW91dCgpKSB7
CisgICAgICAgICAgICBhdXRvIHJhbmdlID0gc2ltcGxlTGluZUxheW91dC0+cnVuUmVzb2x2ZXIo
KS5yYW5nZUZvclJlbmRlcmVyKHJlbmRlckVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIHsg
cmFuZ2UuYmVnaW4oKSwgcmFuZ2UuZW5kKCkgfTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiBFbGVtZW50Qm94SXRlcmF0b3IgeyByZW5kZXJFbGVtZW50LmlubGluZUJveFdyYXBwZXIo
KSB9OworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGlu
ZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9M
aW5lTGF5b3V0VHJhdmVyc2FsLmgKaW5kZXggZmM5Mjc4MTg0OTcuLjA2MmU1ODNhOGQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2Fs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNh
bC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJSZW5kZXJUZXh0Lmgi
CiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgpAQCAtMzQsNyArMzYsOSBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElubGluZUVsZW1lbnRCb3g7CiBjbGFz
cyBJbmxpbmVUZXh0Qm94OworY2xhc3MgUmVuZGVyTGluZUJyZWFrOwogY2xhc3MgUmVuZGVyVGV4
dDsKIAogbmFtZXNwYWNlIExpbmVMYXlvdXRUcmF2ZXJzYWwgewpAQCAtNDQsMTcgKzQ4LDMyIEBA
IGNsYXNzIFRleHRCb3hJdGVyYXRvcjsKIAogc3RydWN0IEVuZEl0ZXJhdG9yIHsgfTsKIAotY2xh
c3MgVGV4dEJveCB7Cit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KK2NsYXNzIEJveCB7CiBwdWJs
aWM6CiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdDsKICAgICBGbG9hdFJlY3QgbG9naWNhbFJl
Y3QoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzSHlwaGVuKCkgY29uc3Q7CiAgICAgYm9vbCBpc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBkaXJPdmVycmlkZSgpIGNvbnN0
OworICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIEJveCgp
ID0gZGVmYXVsdDsKKyAgICBCb3goY29uc3QgQm94JikgPSBkZWZhdWx0OworICAgIEJveChCb3gm
JikgPSBkZWZhdWx0OworICAgIH5Cb3goKSA9IGRlZmF1bHQ7CisgICAgQm94JiBvcGVyYXRvcj0o
Y29uc3QgQm94JikgPSBkZWZhdWx0OworICAgIEJveCYgb3BlcmF0b3I9KEJveCYmKSA9IGRlZmF1
bHQ7CiAKKyAgICBjb25zdCBJdGVyYXRvciYgaXRlcmF0b3IoKSBjb25zdDsKK307CisKK3RlbXBs
YXRlPGNsYXNzIEl0ZXJhdG9yPgorY2xhc3MgVGV4dEJveCA6IHB1YmxpYyBCb3g8SXRlcmF0b3I+
IHsKK3B1YmxpYzoKKyAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0OwogICAgIFN0cmluZ1ZpZXcg
dGV4dCgpIGNvbnN0OwotICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBjb25zdDsKIAogICAgIC8vIFRo
ZXNlIG9mZnNldHMgYXJlIHJlbGF0aXZlIHRvIHRoZSB0ZXh0IHJlbmRlcmVyIChub3QgZmxvdyku
CiAgICAgdW5zaWduZWQgbG9jYWxTdGFydE9mZnNldCgpIGNvbnN0OwpAQCAtNzIsMTYgKzkxLDE1
IEBAIHByb3RlY3RlZDoKICAgICBUZXh0Qm94JiBvcGVyYXRvcj0oY29uc3QgVGV4dEJveCYpID0g
ZGVmYXVsdDsKICAgICBUZXh0Qm94JiBvcGVyYXRvcj0oVGV4dEJveCYmKSA9IGRlZmF1bHQ7CiAK
LXByaXZhdGU6Ci0gICAgY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBpdGVyYXRvcigpIGNvbnN0Owor
ICAgIHVzaW5nIEJveDxJdGVyYXRvcj46Oml0ZXJhdG9yOwogfTsKIAotY2xhc3MgVGV4dEJveEl0
ZXJhdG9yIDogcHJpdmF0ZSBUZXh0Qm94IHsKK2NsYXNzIFRleHRCb3hJdGVyYXRvciA6IHByaXZh
dGUgVGV4dEJveDxUZXh0Qm94SXRlcmF0b3I+IHsKIHB1YmxpYzoKICAgICBUZXh0Qm94SXRlcmF0
b3IoKSA6IG1fcGF0aFZhcmlhbnQoQ29tcGxleFBhdGggeyBudWxscHRyLCB7IH0gfSkgeyB9Owor
CiAgICAgZXhwbGljaXQgVGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRCb3gqKTsKICAg
ICBUZXh0Qm94SXRlcmF0b3IoVmVjdG9yPGNvbnN0IElubGluZVRleHRCb3gqPiYmIHNvcnRlZCwg
c2l6ZV90IGluZGV4KTsKLSAgICAKICAgICBUZXh0Qm94SXRlcmF0b3IoU2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yLCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3IgZW5kKTsKIAogICAgIFRleHRCb3hJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0
dXJuIHRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKTsgfQpAQCAtMTAxLDcgKzExOSwxMCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKKyAgICB1c2luZyBCb3hUeXBlID0g
VGV4dEJveDxUZXh0Qm94SXRlcmF0b3I+OworCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBC
b3g7CiAgICAgZnJpZW5kIGNsYXNzIFRleHRCb3g7CiAKICAgICBzdHJ1Y3QgU2ltcGxlUGF0aCB7
CkBAIC0xMTMsMTEgKzEzNCw0MyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8Y29uc3QgSW5s
aW5lVGV4dEJveCo+IHNvcnRlZElubGluZVRleHRCb3hlczsKICAgICAgICAgc2l6ZV90IHNvcnRl
ZElubGluZVRleHRCb3hJbmRleCB7IDAgfTsKIAorICAgICAgICBjb25zdCBhdXRvKiBpbmxpbmVC
b3goKSBjb25zdCB7IHJldHVybiBpbmxpbmVUZXh0Qm94OyB9CiAgICAgICAgIGNvbnN0IElubGlu
ZVRleHRCb3gqIG5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKSBjb25zdDsKICAgICB9Owog
ICAgIFZhcmlhbnQ8U2ltcGxlUGF0aCwgQ29tcGxleFBhdGg+IG1fcGF0aFZhcmlhbnQ7CiB9Owog
CitjbGFzcyBFbGVtZW50Qm94SXRlcmF0b3IgOiBwcml2YXRlIEJveDxFbGVtZW50Qm94SXRlcmF0
b3I+IHsKK3B1YmxpYzoKKyAgICBFbGVtZW50Qm94SXRlcmF0b3IoKSA6IG1fcGF0aFZhcmlhbnQo
Q29tcGxleFBhdGggeyBudWxscHRyIH0pIHsgfTsKKworICAgIGV4cGxpY2l0IEVsZW1lbnRCb3hJ
dGVyYXRvcihjb25zdCBJbmxpbmVFbGVtZW50Qm94Kik7CisgICAgRWxlbWVudEJveEl0ZXJhdG9y
KFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91
dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCk7CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gIWF0RW5kKCk7IH0KKworICAgIGNvbnN0IEJveCYgb3BlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBjb25zdCBCb3gqIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiB0aGlzOyB9CisKKyAgICBib29sIGF0RW5kKCkgY29uc3Q7CisKKyAg
ICB1c2luZyBCb3hUeXBlID0gQm94PEVsZW1lbnRCb3hJdGVyYXRvcj47CisKK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIEJveDsKKworICAgIHN0cnVjdCBTaW1wbGVQYXRoIHsKKyAgICAgICAg
U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGl0ZXJhdG9yOworICAgICAg
ICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kOworICAgIH07Cisg
ICAgc3RydWN0IENvbXBsZXhQYXRoIHsKKyAgICAgICAgY29uc3QgSW5saW5lRWxlbWVudEJveCog
aW5saW5lRWxlbWVudEJveDsKKworICAgICAgICBjb25zdCBhdXRvKiBpbmxpbmVCb3goKSBjb25z
dCB7IHJldHVybiBpbmxpbmVFbGVtZW50Qm94OyB9CisgICAgfTsKKyAgICBWYXJpYW50PFNpbXBs
ZVBhdGgsIENvbXBsZXhQYXRoPiBtX3BhdGhWYXJpYW50OworfTsKKwogY2xhc3MgVGV4dEJveFJh
bmdlIHsKIHB1YmxpYzoKICAgICBUZXh0Qm94UmFuZ2UoVGV4dEJveEl0ZXJhdG9yIGJlZ2luKQpA
QCAtMTM1LDggKzE4OCwxNzUgQEAgcHJpdmF0ZToKIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRC
b3hGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveElu
VGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIFRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNG
b3IoY29uc3QgUmVuZGVyVGV4dCYpOworRWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3Io
Y29uc3QgUmVuZGVyTGluZUJyZWFrJik7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUg
RmxvYXRSZWN0IEJveDxJdGVyYXRvcj46OnJlY3QoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxl
ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAg
ICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOworICAgIH07CisKKyAgICBhdXRvIGNv
bXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsK
KyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94KCktPmZyYW1lUmVjdCgpOworICAgIH07CisK
KyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBs
ZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgRmxvYXRS
ZWN0IEJveDxJdGVyYXRvcj46OmxvZ2ljYWxSZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBs
ZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAg
ICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnJlY3QoKTsKKyAgICB9OworCisgICAgYXV0byBj
b21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7
CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveCgpLT5sb2dpY2FsRnJhbWVSZWN0KCk7Cisg
ICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFu
dCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGlu
ZSBib29sIEJveDxJdGVyYXRvcj46OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAorewor
ICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgm
KSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBb
XShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAg
cmV0dXJuIHBhdGguaW5saW5lQm94KCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICB9
OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBz
aW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGJv
b2wgQm94PEl0ZXJhdG9yPjo6ZGlyT3ZlcnJpZGUoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxl
ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmKSB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9OwogCi1pbmxpbmUgYm9vbCBoYXNUZXh0Qm94ZXMoY29uc3QgUmVu
ZGVyVGV4dCYgdGV4dCkgeyByZXR1cm4gIWZpcnN0VGV4dEJveEZvcih0ZXh0KS5hdEVuZCgpOyB9
CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQ
YXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveCgpLT5kaXJPdmVycmlk
ZSgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0
aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9y
PiBpbmxpbmUgYm9vbCBCb3g8SXRlcmF0b3I+Ojppc0xpbmVCcmVhaygpIGNvbnN0Cit7CisgICAg
YXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0
aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5pc0xpbmVCcmVhaygpOworICAg
IH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29t
cGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94KCktPmlzTGlu
ZUJyZWFrKCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCku
bV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRl
cmF0b3I+IGlubGluZSBjb25zdCBJdGVyYXRvciYgQm94PEl0ZXJhdG9yPjo6aXRlcmF0b3IoKSBj
b25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJdGVyYXRvciY+KCp0aGlzKTsK
K30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBib29sIFRleHRCb3g8SXRlcmF0
b3I+OjpoYXNIeXBoZW4oKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlw
ZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtd
KGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICBy
ZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5oYXNIeXBoZW4oKTsKKyAgICB9OworCisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIFN0cmluZ1ZpZXcgVGV4
dEJveDxJdGVyYXRvcj46OnRleHQoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29u
c3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJu
ICgqcGF0aC5pdGVyYXRvcikudGV4dCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBb
XShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcocGF0aC5pbmxpbmVUZXh0Qm94LT5yZW5kZXJlcigpLnRleHQoKSku
c3Vic3RyaW5nKHBhdGguaW5saW5lVGV4dEJveC0+c3RhcnQoKSwgcGF0aC5pbmxpbmVUZXh0Qm94
LT5sZW4oKSk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCku
bV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRl
cmF0b3I+IGlubGluZSB1bnNpZ25lZCBUZXh0Qm94PEl0ZXJhdG9yPjo6bG9jYWxTdGFydE9mZnNl
dCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5s
b2NhbFN0YXJ0KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVu
YW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5p
bmxpbmVUZXh0Qm94LT5zdGFydCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgdW5zaWduZWQgVGV4dEJveDxJdGVyYXRvcj46Omxv
Y2FsRW5kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVu
YW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGgu
aXRlcmF0b3IpLmxvY2FsRW5kKCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5lbmQoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIHVuc2lnbmVkIFRleHRCb3g8SXRlcmF0
b3I+OjpsZW5ndGgoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5h
bWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5p
dGVyYXRvcikuZW5kKCkgLSAoKnBhdGguaXRlcmF0b3IpLnN0YXJ0KCk7CisgICAgfTsKKworICAg
IGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYg
cGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5sZW4oKTsKKyAgICB9
OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBz
aW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGJv
b2wgVGV4dEJveDxJdGVyYXRvcj46OmlzTGFzdE9uTGluZSgpIGNvbnN0Cit7CisgICAgYXV0byBz
aW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewor
ICAgICAgICBhdXRvIG5leHQgPSBwYXRoLml0ZXJhdG9yOworICAgICAgICArK25leHQ7CisgICAg
ICAgIHJldHVybiBuZXh0ID09IHBhdGguZW5kIHx8ICgqcGF0aC5pdGVyYXRvcikubGluZUluZGV4
KCkgIT0gKCpuZXh0KS5saW5lSW5kZXgoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAg
IGF1dG8qIG5leHQgPSBwYXRoLm5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKTsKKyAgICAg
ICAgcmV0dXJuICFuZXh0IHx8ICZwYXRoLmlubGluZVRleHRCb3gtPnJvb3QoKSAhPSAmbmV4dC0+
cm9vdCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1f
cGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJh
dG9yPiBpbmxpbmUgYm9vbCBUZXh0Qm94PEl0ZXJhdG9yPjo6aXNMYXN0KCkgY29uc3QKK3sKKyAg
ICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBw
YXRoKSB7CisgICAgICAgIGF1dG8gbmV4dCA9IHBhdGguaXRlcmF0b3I7CisgICAgICAgICsrbmV4
dDsKKyAgICAgICAgcmV0dXJuIG5leHQgPT0gcGF0aC5lbmQ7CisgICAgfTsKKworICAgIGF1dG8g
Y29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkg
eworICAgICAgICByZXR1cm4gIXBhdGgubmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOwor
ICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CiAKIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379830</attachid>
            <date>2019-09-30 02:51:16 -0700</date>
            <delta_ts>2019-09-30 03:11:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>llt-linebreak-3.patch</filename>
            <type>text/plain</type>
            <size>30789</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjI3NjQ0NTQ4MS4uMzZhMDc4NmQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOS0wOS0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuZGVyTGluZUJyZWFrIHNob3VsZCB1c2UgTGluZUxheW91dFRyYXZlcnNh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFj
ZSBtb3JlIHBhdGggc3BlY2lmaWMgY29kZSB3aXRoIExpbmVMYXlvdXRUcmF2ZXJzYWwuCisKKyAg
ICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5n
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVS
ZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRl
UXVhZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6c2ltcGxlTGluZUxheW91dCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVUZXh0Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpj
b21wdXRlQm91bmRpbmdCb3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Y29sbGVjdEFic29sdXRlUmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6cmVuZGVyZXJGb3JQb3NpdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJ
dGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZl
cnNhbDo6ZWxlbWVudEJveEZvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVy
c2FsOjpUZXh0Qm94OjpyZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmxvZ2ljYWxSZWN0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6Omhhc0h5cGhl
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2Fs
OjpUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmRpck92ZXJyaWRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRl
eHRCb3g6OnRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFRyYXZlcnNhbDo6VGV4dEJveDo6aXNMaW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6bG9jYWxTdGFydE9mZnNl
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2Fs
OjpUZXh0Qm94Ojpsb2NhbEVuZE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjpsZW5ndGggY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6aXNMYXN0
T25MaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3g6OmlzTGFzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjppdGVyYXRvciBjb25zdCk6IERlbGV0ZWQu
CisKKyAgICAgICAgTW92ZSB0byBoZWFkZXIgYXMgdGVtcGxhdGVzLgorCisgICAgICAgICogcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oOgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJh
dG9yOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRU
cmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6b3BlcmF0
b3ItPiBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGl0ZXJhdG9yIHR5cGUgZm9yIGVsZW1l
bnQgYm94ZXMuCisgICAgICAgIEl0IGRvZXNuJ3QgY3VycmVudGx5IHJlYWxseSBpdGVyYXRlLCBp
cyBqdXN0IGFsbG93cyB0ZXN0aW5nIGZvciBlbmQuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6OkJveDxJdGVyYXRvcj46OnJlY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9yPjo6bG9naWNhbFJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9y
Pjo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0VHJhdmVyc2FsOjpCb3g8SXRlcmF0b3I+OjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpCb3g8SXRlcmF0b3I+Ojppc0xpbmVC
cmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpCb3g8
SXRlcmF0b3I+OjppdGVyYXRvciBjb25zdCk6CisKKyAgICAgICAgU3BsaXQgcHJvcGVydGllcyB0
aGF0IGFsbCBpbmxpbmUgYm94ZXMgaGF2ZSBvdXQgZnJvbSBUZXh0Qm94LgorICAgICAgICBNYWtl
IGl0IGEgdGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRvcj46OnRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRv
cj46OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRvcj46OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+Ojps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveDxJdGVyYXRvcj46OmlzTGFzdE9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94PEl0ZXJhdG9yPjo6aXNMYXN0IGNvbnN0KToKKwor
ICAgICAgICBNYWtlIGEgdGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6Omhhc1RleHRCb3hlcyk6IERlbGV0ZWQuCisKIDIwMTktMDktMjkgIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOiB1c2UgTGF5ZXJSZXByZXNlbnRhdGlvbiBmb3Igc2Nyb2xsIGNvbnRh
aW5lciwgc2Nyb2xsZWQgY29udGVudHMgbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAyY2Jj
YjNlNGEyYS4uNTRhZjIyZGFkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI1MSw3ICsxMjUx
LDkgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmlu
Zy9IaXRUZXN0UmVxdWVzdC5oCiAgICAgcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAogICAgIHJl
bmRlcmluZy9JbmxpbmVCb3guaAorICAgIHJlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKICAg
ICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisgICAgcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
aAogICAgIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5oCiAgICAgcmVuZGVy
aW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9NYXJrZWRUZXh0LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggMWFhZTA5ZDAwYjIu
LmI4ZWJjNDZkZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MV0JSRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIK
KyNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiTG9naWNhbFNlbGVj
dGlvbk9mZnNldENhY2hlcy5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKLSNpbmNsdWRlICJTaW1w
bGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNDUsMTMgKzQ1LDYgQEAgV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlckxpbmVCcmVhayk7CiAKIHN0YXRpYyBjb25z
dCBpbnQgaW52YWxpZExpbmVIZWlnaHQgPSAtMTsKIAotc3RhdGljIGNvbnN0IFNpbXBsZUxpbmVM
YXlvdXQ6OkxheW91dCogc2ltcGxlTGluZUxheW91dChjb25zdCBSZW5kZXJMaW5lQnJlYWsmIHJl
bmRlcmVyKQotewotICAgIGlmICghaXM8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50
KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
QmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLnNpbXBsZUxpbmVMYXlvdXQoKTsKLX0KLQog
UmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIFJl
bmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcihudWxscHRyKQpAQCAt
MTgzLDQ1ICsxNzYsMzEgQEAgTGF5b3V0UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxvY2FsQ2FyZXRS
ZWN0KElubGluZUJveCogaW5saW5lQm94LCB1bnNpZ25lZCBjYXJldE8KIAogSW50UmVjdCBSZW5k
ZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdAogewotICAgIGlmIChhdXRvKiBs
YXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCp0aGlzKSkKLSAgICAgICAgcmV0dXJuIFNpbXBsZUxp
bmVMYXlvdXQ6OmNvbXB1dGVCb3VuZGluZ0JveCgqdGhpcywgKmxheW91dCk7Ci0KLSAgICBpZiAo
IW1faW5saW5lQm94V3JhcHBlcikKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLQotICAgIGZs
b2F0IGxvZ2ljYWxMZWZ0U2lkZSA9IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbExlZnQoKTsK
LSAgICBmbG9hdCBsb2dpY2FsUmlnaHRTaWRlID0gbV9pbmxpbmVCb3hXcmFwcGVyLT5sb2dpY2Fs
UmlnaHQoKTsKLQotICAgIGJvb2wgaXNIb3Jpem9udGFsID0gc3R5bGUoKS5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpOworICAgIGF1dG8gYm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6ZWxlbWVu
dEJveEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCisgICAgICAgIHJldHVybiB7IH07CiAKLSAg
ICBmbG9hdCB4ID0gaXNIb3Jpem9udGFsID8gbG9naWNhbExlZnRTaWRlIDogbV9pbmxpbmVCb3hX
cmFwcGVyLT54KCk7Ci0gICAgZmxvYXQgeSA9IGlzSG9yaXpvbnRhbCA/IG1faW5saW5lQm94V3Jh
cHBlci0+eSgpIDogbG9naWNhbExlZnRTaWRlOwotICAgIGZsb2F0IHdpZHRoID0gaXNIb3Jpem9u
dGFsID8gbG9naWNhbFJpZ2h0U2lkZSAtIGxvZ2ljYWxMZWZ0U2lkZSA6IG1faW5saW5lQm94V3Jh
cHBlci0+bG9naWNhbEJvdHRvbSgpIC0geDsKLSAgICBmbG9hdCBoZWlnaHQgPSBpc0hvcml6b250
YWwgPyBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxCb3R0b20oKSAtIHkgOiBsb2dpY2FsUmln
aHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOwotICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KEZs
b2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJl
Y3QoYm94LT5yZWN0KCkpOwogfQogCiB2b2lkIFJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVSZWN0
cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGxheW91dCA9IHNpbXBsZUxpbmVMYXlvdXQo
KnRoaXMpKSB7Ci0gICAgICAgIHJlY3RzLmFwcGVuZFZlY3RvcihTaW1wbGVMaW5lTGF5b3V0Ojpj
b2xsZWN0QWJzb2x1dGVSZWN0cygqdGhpcywgKmxheW91dCwgYWNjdW11bGF0ZWRPZmZzZXQpKTsK
KyAgICBhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMp
OworICAgIGlmICghYm94KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKCFtX2lu
bGluZUJveFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAgICByZWN0cy5hcHBlbmQoZW5jbG9z
aW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZzZXQgKyBtX2lubGluZUJveFdyYXBw
ZXItPnRvcExlZnQoKSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5zaXplKCkpKSk7CisgICAgYXV0byBy
ZWN0ID0gYm94LT5yZWN0KCk7CisgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxv
YXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2NhdGlvbigpLCByZWN0LnNpemUoKSkp
KTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogbGF5
b3V0ID0gc2ltcGxlTGluZUxheW91dCgqdGhpcykpIHsKLSAgICAgICAgcXVhZHMuYXBwZW5kVmVj
dG9yKFNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RBYnNvbHV0ZVF1YWRzKCp0aGlzLCAqbGF5b3V0
LCB3YXNGaXhlZCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghbV9pbmxpbmVC
b3hXcmFwcGVyKQorICAgIGF1dG8gYm94ID0gTGluZUxheW91dFRyYXZlcnNhbDo6ZWxlbWVudEJv
eEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCiAgICAgICAgIHJldHVybjsKLSAgICBxdWFkcy5h
cHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QobV9pbmxpbmVCb3hXcmFwcGVyLT50
b3BMZWZ0KCksIG1faW5saW5lQm94V3JhcHBlci0+c2l6ZSgpKSwgVXNlVHJhbnNmb3Jtcywgd2Fz
Rml4ZWQpKTsKKworICAgIGF1dG8gcmVjdCA9IGJveC0+cmVjdCgpOworICAgIHF1YWRzLmFwcGVu
ZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZWN0LmxvY2F0aW9uKCksIHJlY3Quc2l6
ZSgpKSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJl
YWs6OnVwZGF0ZUZyb21TdHlsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VHJlZUFzVGV4dC5jcHAKaW5kZXggN2M4NTljNzRkZDUuLjExYjcxOWUzMWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0yMDIsNyArMjAy
LDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJlbmRlck9iamVjdChUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAgICAvLyBtYW55IHRlc3QgcmVzdWx0
cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9IGRvd25jYXN0PFJlbmRlclRleHQ+
KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0UnVuTG9jYXRpb24oKSwgdGV4dC5s
aW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAgaWYgKCFMaW5lTGF5b3V0VHJhdmVy
c2FsOjpoYXNUZXh0Qm94ZXModGV4dCkpCisgICAgICAgIGlmICghTGluZUxheW91dFRyYXZlcnNh
bDo6Zmlyc3RUZXh0Qm94Rm9yKHRleHQpKQogICAgICAgICAgICAgYWRqdXN0Rm9yVGFibGVDZWxs
cyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkpIHsKICAgICAgICAgY29uc3QgUmVu
ZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4obyk7CkBAIC00Nzcs
NyArNDc3LDcgQEAgdm9pZCB3cml0ZURlYnVnSW5mbyhUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVu
ZGVyT2JqZWN0JiBvYmplY3QsIE9wdGlvblNldDxSZW5kZXIKICAgICB9CiB9CiAKLXN0YXRpYyB2
b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYgbywgY29u
c3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveCYgdGV4dEJveCkKK3N0YXRpYyB2b2lkIHdy
aXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyVGV4dCYgbywgY29uc3QgTGlu
ZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yOjpCb3hUeXBlJiB0ZXh0Qm94KQogewog
ICAgIGF1dG8gcmVjdCA9IHRleHRCb3gucmVjdCgpOwogICAgIGF1dG8gbG9naWNhbFJlY3QgPSB0
ZXh0Qm94LmxvZ2ljYWxSZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5kZXggNjE5Nzk5N2MwMDIuLjU3Nzlk
M2VjYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0xODMsMzEgKzE4Myw2IEBAIHZvaWQgY29sbGVjdEZs
b3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNvbnN0IExheW91dCYgbGF5b3V0KQog
ICAgIH0KIH0KIAotSW50UmVjdCBjb21wdXRlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0
JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCi17Ci0gICAgYXV0byYgcmVzb2x2ZXIg
PSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKLSAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3hSZWN0Owot
ICAgIGZvciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5nZUZvclJlbmRlcmVyKHJlbmRlcmVyKSkg
ewotICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHJ1bi5yZWN0KCk7Ci0gICAgICAgIGlmIChib3Vu
ZGluZ0JveFJlY3QgPT0gRmxvYXRSZWN0KCkpCi0gICAgICAgICAgICBib3VuZGluZ0JveFJlY3Qg
PSByZWN0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBib3VuZGluZ0JveFJlY3QudW5pdGVF
dmVuSWZFbXB0eShyZWN0KTsKLSAgICB9Ci0gICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoYm91
bmRpbmdCb3hSZWN0KTsKLX0KLQotVmVjdG9yPEludFJlY3Q+IGNvbGxlY3RBYnNvbHV0ZVJlY3Rz
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5b3V0LCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCi17Ci0gICAgVmVjdG9yPEludFJlY3Q+
IHJlY3RzOwotICAgIGF1dG8mIHJlc29sdmVyID0gbGF5b3V0LnJ1blJlc29sdmVyKCk7Ci0gICAg
Zm9yIChhdXRvIHJ1biA6IHJlc29sdmVyLnJhbmdlRm9yUmVuZGVyZXIocmVuZGVyZXIpKSB7Ci0g
ICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcnVuLnJlY3QoKTsKLSAgICAgICAgcmVjdHMuYXBwZW5k
KGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2Nh
dGlvbigpLCByZWN0LnNpemUoKSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlY3RzOwotfQotCiBW
ZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkcyhjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCwgYm9vbCogd2FzRml4ZWQpCiB7CiAgICAg
VmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0yNjIsMTEgKzIzNyw2IEBAIFZlY3RvcjxGbG9h
dFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9yUmFuZ2UoY29uc3QgUmVuZGVyT2JqZWN0JiBy
ZW5kZXJlciwgdW5zCiAgICAgcmV0dXJuIHF1YWRzOwogfQogCi1jb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyRm9yUG9zaXRpb24oY29uc3QgRmxvd0NvbnRlbnRzJiBmbG93Q29udGVudHMsIHVu
c2lnbmVkIHBvc2l0aW9uKQotewotICAgIHJldHVybiBmbG93Q29udGVudHMuc2VnbWVudEZvclBv
c2l0aW9uKHBvc2l0aW9uKS5yZW5kZXJlcjsKLX0KLQogdm9pZCBzaW1wbGVMaW5lTGF5b3V0V2ls
bEJlRGVsZXRlZChjb25zdCBMYXlvdXQmIGxheW91dCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGF5b3V0LnJ1bkNvdW50KCk7ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCmluZGV4IDcwZDZhZDllOGY2
Li4zMmIzNDkxNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC00OSw5ICs0OSw2IEBAIHZvaWQgcGFpbnRGbG93
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYsIFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvCiBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0
IExheW91dCYsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKIHZvaWQgY29sbGVjdEZsb3dPdmVyZmxv
dyhSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsKIAotSW50UmVjdCBjb21wdXRlQm91
bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0Jik7Ci0KLVZlY3RvcjxJ
bnRSZWN0PiBjb2xsZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBM
YXlvdXQmLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogVmVjdG9yPEZs
b2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
TGF5b3V0JiwgYm9vbCogd2FzRml4ZWQpOwogdW5zaWduZWQgdGV4dE9mZnNldEZvclBvaW50KGNv
bnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyVGV4dCYsIGNvbnN0IExheW91dCYpOwogVmVj
dG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNGb3JSYW5nZShjb25zdCBSZW5kZXJP
YmplY3QmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBjb25zdCBMYXlvdXQmLCBib29s
KiB3YXNGaXhlZCk7CkBAIC02Miw4ICs1OSw2IEBAIExheW91dFVuaXQgYmFzZWxpbmVGcm9tRmxv
dyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIGJvb2wgY2FuVXNlRm9yTGluZUJveFRyZWUoUmVu
ZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiB2b2lkIGdlbmVyYXRlTGluZUJveFRyZWUo
UmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiAKLWNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXJGb3JQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHMmLCB1bnNpZ25lZCk7Ci0KIHZv
aWQgc2ltcGxlTGluZUxheW91dFdpbGxCZURlbGV0ZWQoY29uc3QgTGF5b3V0Jik7CiAKICNpZiBF
TkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCmluZGV4IDliOGM2MGU3MmQzLi45MGU5ZTA0
ZGJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dFRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFRyYXZlcnNhbC5jcHAKQEAgLTI2LDE4MCArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAKLSNpbmNsdWRlICJJbmxpbmVU
ZXh0Qm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2luY2x1ZGUgIlNpbXBsZUxpbmVM
YXlvdXRSZXNvbHZlci5oIgorI2luY2x1ZGUgIlJlbmRlckxpbmVCcmVhay5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGluZUxheW91dFRyYXZlcnNhbCB7CiAKLUZsb2F0UmVj
dCBUZXh0Qm94OjpyZWN0KCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRl
eHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRo
Lml0ZXJhdG9yKS5yZWN0KCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0
IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBh
dGguaW5saW5lVGV4dEJveC0+ZnJhbWVSZWN0KCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKLX0K
LQotRmxvYXRSZWN0IFRleHRCb3g6OmxvZ2ljYWxSZWN0KCkgY29uc3QKLXsKLSAgICBhdXRvIHNp
bXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAg
ICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7Ci0gICAgfTsKLQotICAgIGF1dG8g
Y29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsK
LSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+bG9naWNhbEZyYW1lUmVjdCgpOwot
ICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aGFzSHlwaGVuKCkgY29u
c3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxl
UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5oYXNIeXBoZW4o
KTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9y
OjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94
LT5oYXNIeXBoZW4oKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0
b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi1ib29sIFRleHRCb3g6
OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikgewotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9y
OjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKLX0KLQot
Ym9vbCBUZXh0Qm94OjpkaXJPdmVycmlkZSgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBb
XShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmKSB7Ci0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJh
dG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0
Qm94LT5kaXJPdmVycmlkZSgpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihp
dGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLVN0cmluZ1Zp
ZXcgVGV4dEJveDo6dGV4dCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikudGV4dCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25z
dCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBT
dHJpbmdWaWV3KHBhdGguaW5saW5lVGV4dEJveC0+cmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmlu
ZyhwYXRoLmlubGluZVRleHRCb3gtPnN0YXJ0KCksIHBhdGguaW5saW5lVGV4dEJveC0+bGVuKCkp
OwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNMaW5lQnJlYWso
KSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpT
aW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmlzTGlu
ZUJyZWFrKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJ
dGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5l
VGV4dEJveC0+aXNMaW5lQnJlYWsoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNo
T24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi11bnNp
Z25lZCBUZXh0Qm94Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBs
ZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAg
ICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5sb2NhbFN0YXJ0KCk7Ci0gICAgfTsKLQotICAgIGF1
dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgp
IHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+c3RhcnQoKTsKLSAgICB9Owot
Ci0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1w
bGUsIGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBUZXh0Qm94Ojpsb2NhbEVuZE9mZnNldCgpIGNv
bnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBs
ZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikubG9jYWxFbmQo
KTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9y
OjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94
LT5lbmQoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5t
X3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBUZXh0Qm94Ojps
ZW5ndGgoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJh
dG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3Ip
LmVuZCgpIC0gKCpwYXRoLml0ZXJhdG9yKS5zdGFydCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGNv
bXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7Ci0g
ICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmxlbigpOwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNMYXN0T25MaW5lKCkgY29uc3QKLXsKLSAgICBh
dXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkg
ewotICAgICAgICBhdXRvIG5leHQgPSBwYXRoLml0ZXJhdG9yOwotICAgICAgICArK25leHQ7Ci0g
ICAgICAgIHJldHVybiBuZXh0ID09IHBhdGguZW5kIHx8ICgqcGF0aC5pdGVyYXRvcikubGluZUlu
ZGV4KCkgIT0gKCpuZXh0KS5saW5lSW5kZXgoKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4
ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAg
ICBhdXRvKiBuZXh0ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7Ci0gICAg
ICAgIHJldHVybiAhbmV4dCB8fCAmcGF0aC5pbmxpbmVUZXh0Qm94LT5yb290KCkgIT0gJm5leHQt
PnJvb3QoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5t
X3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi1ib29sIFRleHRCb3g6OmlzTGFz
dCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6
OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgYXV0byBuZXh0ID0gcGF0aC5pdGVyYXRvcjsK
LSAgICAgICAgKytuZXh0OwotICAgICAgICByZXR1cm4gbmV4dCA9PSBwYXRoLmVuZDsKLSAgICB9
OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4
UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gIXBhdGgubmV4dElubGluZVRleHRCb3hJblRl
eHRPcmRlcigpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigp
Lm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLQotaW5saW5lIGNvbnN0IFRl
eHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0b3IoKSBjb25zdAotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBUZXh0Qm94SXRlcmF0b3ImPigqdGhpcyk7Ci19Ci0KIFRleHRCb3hJ
dGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRC
b3gpCiAgICAgOiBtX3BhdGhWYXJpYW50KENvbXBsZXhQYXRoIHsgaW5saW5lVGV4dEJveCwgeyB9
IH0pCiB7CkBAIC0yMjEsNyArNTIsNyBAQCBUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRv
cjo6dHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpCiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxl
eCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHBhdGguaW5saW5lVGV4dEJveCA9
IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRCb3goKTsKKyAgICAgICAgcGF0aC5pbmxpbmVC
b3ggPSBwYXRoLmlubGluZUJveC0+bmV4dFRleHRCb3goKTsKICAgICB9OwogCiAgICAgV1RGOjpz
d2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjM2LDcgKzY3LDcg
QEAgY29uc3QgSW5saW5lVGV4dEJveCogVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aDo6bmV4
dElubGluZVRleHRCb3hJblRleHRPcmRlcigKICAgICAgICAgICAgIHJldHVybiBzb3J0ZWRJbmxp
bmVUZXh0Qm94ZXNbc29ydGVkSW5saW5lVGV4dEJveEluZGV4ICsgMV07CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bmV4dFRleHRCb3go
KTsKKyAgICByZXR1cm4gaW5saW5lQm94LT5uZXh0VGV4dEJveCgpOwogfQogCiBUZXh0Qm94SXRl
cmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0SW5UZXh0T3JkZXIoKQpAQCAtMjQ2
LDcgKzc3LDcgQEAgVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4
dEluVGV4dE9yZGVyKCkKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gW10oQ29tcGxleFBh
dGgmIHBhdGgpIHsKLSAgICAgICAgcGF0aC5pbmxpbmVUZXh0Qm94ID0gcGF0aC5uZXh0SW5saW5l
VGV4dEJveEluVGV4dE9yZGVyKCk7CisgICAgICAgIHBhdGguaW5saW5lQm94ID0gcGF0aC5uZXh0
SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CiAgICAgICAgIGlmICghcGF0aC5zb3J0ZWRJbmxp
bmVUZXh0Qm94ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAgKytwYXRoLnNvcnRlZElubGluZVRl
eHRCb3hJbmRleDsKICAgICB9OwpAQCAtMjY2LDcgKzk3LDcgQEAgYm9vbCBUZXh0Qm94SXRlcmF0
b3I6Om9wZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKICAgICB9
OwogCiAgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IENvbXBsZXhQYXRoJiBwYXRoKSB7Ci0g
ICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3ggPT0gV1RGOjpnZXQ8Q29tcGxleFBhdGg+
KG90aGVyLm1fcGF0aFZhcmlhbnQpLmlubGluZVRleHRCb3g7CisgICAgICAgIHJldHVybiBwYXRo
LmlubGluZUJveCA9PSBXVEY6OmdldDxDb21wbGV4UGF0aD4ob3RoZXIubV9wYXRoVmFyaWFudCku
aW5saW5lQm94OwogICAgIH07CiAKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJp
YW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjc5LDcgKzExMCw3IEBAIGJvb2wgVGV4dEJveEl0
ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFsmXShj
b25zdCBDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gIXBhdGguaW5saW5lVGV4
dEJveDsKKyAgICAgICAgcmV0dXJuICFwYXRoLmlubGluZUJveDsKICAgICB9OwogCiAgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTMx
Myw1ICsxNDQsMzkgQEAgVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0
JiB0ZXh0KQogICAgIHJldHVybiB7IGZpcnN0VGV4dEJveEZvcih0ZXh0KSB9OwogfQogCitFbGVt
ZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVFbGVtZW50Qm94
KiBpbmxpbmVFbGVtZW50Qm94KQorICAgIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IGlu
bGluZUVsZW1lbnRCb3ggfSkKK3sKK30KK0VsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0
ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBpdGVyYXRvciwg
U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCkKKyAgICA6IG1fcGF0
aFZhcmlhbnQoU2ltcGxlUGF0aCB7IGl0ZXJhdG9yLCBlbmQgfSkKK3sKK30KKworYm9vbCBFbGVt
ZW50Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFsmXShj
b25zdCBTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLml0ZXJhdG9yID09
IHBhdGguZW5kOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbJl0oY29uc3QgQ29tcGxl
eFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICFwYXRoLmlubGluZUJveDsKKyAgICB9Owor
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4
KTsKK30KKworRWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGlu
ZUJyZWFrJiByZW5kZXJFbGVtZW50KQoreworICAgIGlmIChhdXRvJiBwYXJlbnQgPSAqcmVuZGVy
RWxlbWVudC5wYXJlbnQoKTsgaXM8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQpKSB7CisgICAgICAg
IGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5b3V0ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93Pihw
YXJlbnQpLnNpbXBsZUxpbmVMYXlvdXQoKSkgeworICAgICAgICAgICAgYXV0byByYW5nZSA9IHNp
bXBsZUxpbmVMYXlvdXQtPnJ1blJlc29sdmVyKCkucmFuZ2VGb3JSZW5kZXJlcihyZW5kZXJFbGVt
ZW50KTsKKyAgICAgICAgICAgIHJldHVybiB7IHJhbmdlLmJlZ2luKCksIHJhbmdlLmVuZCgpIH07
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRWxlbWVudEJveEl0ZXJhdG9yIHsgcmVu
ZGVyRWxlbWVudC5pbmxpbmVCb3hXcmFwcGVyKCkgfTsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCmluZGV4IGZj
OTI3ODE4NDk3Li5hMjJmM2I4MGRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaApAQCAtMjYsNiArMjYsOSBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbmxpbmVFbGVtZW50
Qm94LmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIlJlbmRlclRleHQu
aCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CkBAIC0zNCw3ICszNyw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5saW5lVGV4dEJveDsKK2NsYXNz
IFJlbmRlckxpbmVCcmVhazsKIGNsYXNzIFJlbmRlclRleHQ7CiAKIG5hbWVzcGFjZSBMaW5lTGF5
b3V0VHJhdmVyc2FsIHsKQEAgLTQ0LDE3ICs0NywzMiBAQCBjbGFzcyBUZXh0Qm94SXRlcmF0b3I7
CiAKIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CiAKLWNsYXNzIFRleHRCb3ggewordGVtcGxhdGU8
Y2xhc3MgSXRlcmF0b3I+CitjbGFzcyBCb3ggewogcHVibGljOgogICAgIEZsb2F0UmVjdCByZWN0
KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGxvZ2ljYWxSZWN0KCkgY29uc3Q7CiAKLSAgICBib29s
IGhhc0h5cGhlbigpIGNvbnN0OwogICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNv
bnN0OwogICAgIGJvb2wgZGlyT3ZlcnJpZGUoKSBjb25zdDsKKyAgICBib29sIGlzTGluZUJyZWFr
KCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBCb3goKSA9IGRlZmF1bHQ7CisgICAgQm94KGNv
bnN0IEJveCYpID0gZGVmYXVsdDsKKyAgICBCb3goQm94JiYpID0gZGVmYXVsdDsKKyAgICB+Qm94
KCkgPSBkZWZhdWx0OworICAgIEJveCYgb3BlcmF0b3I9KGNvbnN0IEJveCYpID0gZGVmYXVsdDsK
KyAgICBCb3gmIG9wZXJhdG9yPShCb3gmJikgPSBkZWZhdWx0OwogCisgICAgY29uc3QgSXRlcmF0
b3ImIGl0ZXJhdG9yKCkgY29uc3Q7Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KK2Ns
YXNzIFRleHRCb3ggOiBwdWJsaWMgQm94PEl0ZXJhdG9yPiB7CitwdWJsaWM6CisgICAgYm9vbCBo
YXNIeXBoZW4oKSBjb25zdDsKICAgICBTdHJpbmdWaWV3IHRleHQoKSBjb25zdDsKLSAgICBib29s
IGlzTGluZUJyZWFrKCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBvZmZzZXRzIGFyZSByZWxhdGl2
ZSB0byB0aGUgdGV4dCByZW5kZXJlciAobm90IGZsb3cpLgogICAgIHVuc2lnbmVkIGxvY2FsU3Rh
cnRPZmZzZXQoKSBjb25zdDsKQEAgLTcyLDE2ICs5MCwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgVGV4
dEJveCYgb3BlcmF0b3I9KGNvbnN0IFRleHRCb3gmKSA9IGRlZmF1bHQ7CiAgICAgVGV4dEJveCYg
b3BlcmF0b3I9KFRleHRCb3gmJikgPSBkZWZhdWx0OwogCi1wcml2YXRlOgotICAgIGNvbnN0IFRl
eHRCb3hJdGVyYXRvciYgaXRlcmF0b3IoKSBjb25zdDsKKyAgICB1c2luZyBCb3g8SXRlcmF0b3I+
OjppdGVyYXRvcjsKIH07CiAKLWNsYXNzIFRleHRCb3hJdGVyYXRvciA6IHByaXZhdGUgVGV4dEJv
eCB7CitjbGFzcyBUZXh0Qm94SXRlcmF0b3IgOiBwcml2YXRlIFRleHRCb3g8VGV4dEJveEl0ZXJh
dG9yPiB7CiBwdWJsaWM6CiAgICAgVGV4dEJveEl0ZXJhdG9yKCkgOiBtX3BhdGhWYXJpYW50KENv
bXBsZXhQYXRoIHsgbnVsbHB0ciwgeyB9IH0pIHsgfTsKKwogICAgIGV4cGxpY2l0IFRleHRCb3hJ
dGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94Kik7CiAgICAgVGV4dEJveEl0ZXJhdG9yKFZlY3Rv
cjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4mJiBzb3J0ZWQsIHNpemVfdCBpbmRleCk7Ci0gICAgCiAg
ICAgVGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRv
ciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZCk7CiAKICAgICBU
ZXh0Qm94SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiB0cmF2ZXJzZU5leHRJblZpc3Vh
bE9yZGVyKCk7IH0KQEAgLTEwMSw3ICsxMTgsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdEVu
ZCgpIGNvbnN0OwogCisgICAgdXNpbmcgQm94VHlwZSA9IFRleHRCb3g8VGV4dEJveEl0ZXJhdG9y
PjsKKwogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQm94OwogICAgIGZyaWVuZCBjbGFzcyBU
ZXh0Qm94OwogCiAgICAgc3RydWN0IFNpbXBsZVBhdGggewpAQCAtMTA5LDcgKzEyOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBl
bmQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgQ29tcGxleFBhdGggewotICAgICAgICBjb25zdCBJbmxp
bmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94OworICAgICAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBp
bmxpbmVCb3g7CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4gc29ydGVkSW5s
aW5lVGV4dEJveGVzOwogICAgICAgICBzaXplX3Qgc29ydGVkSW5saW5lVGV4dEJveEluZGV4IHsg
MCB9OwogCkBAIC0xMTgsNiArMTM4LDM1IEBAIHByaXZhdGU6CiAgICAgVmFyaWFudDxTaW1wbGVQ
YXRoLCBDb21wbGV4UGF0aD4gbV9wYXRoVmFyaWFudDsKIH07CiAKK2NsYXNzIEVsZW1lbnRCb3hJ
dGVyYXRvciA6IHByaXZhdGUgQm94PEVsZW1lbnRCb3hJdGVyYXRvcj4geworcHVibGljOgorICAg
IEVsZW1lbnRCb3hJdGVyYXRvcigpIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IG51bGxw
dHIgfSkgeyB9OworCisgICAgZXhwbGljaXQgRWxlbWVudEJveEl0ZXJhdG9yKGNvbnN0IElubGlu
ZUVsZW1lbnRCb3gqKTsKKyAgICBFbGVtZW50Qm94SXRlcmF0b3IoU2ltcGxlTGluZUxheW91dDo6
UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yLCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRl
cmF0b3IgZW5kKTsKKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVy
biAhYXRFbmQoKTsgfQorCisgICAgY29uc3QgQm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVy
biAqdGhpczsgfQorICAgIGNvbnN0IEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHRo
aXM7IH0KKworICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKKworICAgIHVzaW5nIEJveFR5cGUgPSBC
b3g8RWxlbWVudEJveEl0ZXJhdG9yPjsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQm94
OworCisgICAgc3RydWN0IFNpbXBsZVBhdGggeworICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpS
dW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRlcmF0b3I7CisgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6
OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQ7CisgICAgfTsKKyAgICBzdHJ1Y3QgQ29tcGxleFBh
dGggeworICAgICAgICBjb25zdCBJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVCb3g7CisgICAgfTsK
KyAgICBWYXJpYW50PFNpbXBsZVBhdGgsIENvbXBsZXhQYXRoPiBtX3BhdGhWYXJpYW50OworfTsK
KwogY2xhc3MgVGV4dEJveFJhbmdlIHsKIHB1YmxpYzoKICAgICBUZXh0Qm94UmFuZ2UoVGV4dEJv
eEl0ZXJhdG9yIGJlZ2luKQpAQCAtMTM1LDggKzE4NCwxNzUgQEAgcHJpdmF0ZToKIFRleHRCb3hJ
dGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVyVGV4dCYpOwogVGV4dEJveEl0ZXJh
dG9yIGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0IFJlbmRlclRleHQmKTsKIFRleHRC
b3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4dCYpOworRWxlbWVudEJveEl0ZXJh
dG9yIGVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJik7CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3RlbXBsYXRlPGNsYXNz
IEl0ZXJhdG9yPiBpbmxpbmUgRmxvYXRSZWN0IEJveDxJdGVyYXRvcj46OnJlY3QoKSBjb25zdAor
eworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBh
dGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOworICAg
IH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29t
cGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94LT5mcmFtZVJl
Y3QoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3Bh
dGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRv
cj4gaW5saW5lIEZsb2F0UmVjdCBCb3g8SXRlcmF0b3I+Ojpsb2dpY2FsUmVjdCgpIGNvbnN0Cit7
CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0
aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7CisgICAg
fTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21w
bGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVCb3gtPmxvZ2ljYWxG
cmFtZVJlY3QoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3Io
KS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJ
dGVyYXRvcj4gaW5saW5lIGJvb2wgQm94PEl0ZXJhdG9yPjo6aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRv
cjo6U2ltcGxlUGF0aCYpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIGF1
dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0
aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVCb3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3Bh
dGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRv
cj4gaW5saW5lIGJvb2wgQm94PEl0ZXJhdG9yPjo6ZGlyT3ZlcnJpZGUoKSBjb25zdAoreworICAg
IGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmKSB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OwogCi1pbmxpbmUgYm9vbCBoYXNUZXh0Qm94
ZXMoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkgeyByZXR1cm4gIWZpcnN0VGV4dEJveEZvcih0ZXh0
KS5hdEVuZCgpOyB9CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0
b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveC0+
ZGlyT3ZlcnJpZGUoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0
b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFz
cyBJdGVyYXRvcj4gaW5saW5lIGJvb2wgQm94PEl0ZXJhdG9yPjo6aXNMaW5lQnJlYWsoKSBjb25z
dAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBs
ZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikuaXNMaW5lQnJl
YWsoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRl
cmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJv
eC0+aXNMaW5lQnJlYWsoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRl
cmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxj
bGFzcyBJdGVyYXRvcj4gaW5saW5lIGNvbnN0IEl0ZXJhdG9yJiBCb3g8SXRlcmF0b3I+OjppdGVy
YXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEl0ZXJhdG9yJj4o
KnRoaXMpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGJvb2wgVGV4dEJv
eDxJdGVyYXRvcj46Omhhc0h5cGhlbigpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShj
b25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1
cm4gKCpwYXRoLml0ZXJhdG9yKS5oYXNIeXBoZW4oKTsKKyAgICB9OworCisgICAgYXV0byBjb21w
bGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7Cisg
ICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveC0+aGFzSHlwaGVuKCk7CisgICAgfTsKKworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBj
b21wbGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBTdHJpbmdWaWV3
IFRleHRCb3g8SXRlcmF0b3I+Ojp0ZXh0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtd
KGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiAoKnBhdGguaXRlcmF0b3IpLnRleHQoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4
ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAg
ICAgIHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5saW5lQm94LT5yZW5kZXJlcigpLnRleHQoKSku
c3Vic3RyaW5nKHBhdGguaW5saW5lQm94LT5zdGFydCgpLCBwYXRoLmlubGluZUJveC0+bGVuKCkp
OworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZh
cmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBp
bmxpbmUgdW5zaWduZWQgVGV4dEJveDxJdGVyYXRvcj46OmxvY2FsU3RhcnRPZmZzZXQoKSBjb25z
dAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBs
ZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikubG9jYWxTdGFy
dCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVy
YXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94
LT5zdGFydCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigp
Lm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0
ZXJhdG9yPiBpbmxpbmUgdW5zaWduZWQgVGV4dEJveDxJdGVyYXRvcj46OmxvY2FsRW5kT2Zmc2V0
KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9y
OjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmxv
Y2FsRW5kKCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1l
IEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxp
bmVCb3gtPmVuZCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRv
cigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNz
IEl0ZXJhdG9yPiBpbmxpbmUgdW5zaWduZWQgVGV4dEJveDxJdGVyYXRvcj46Omxlbmd0aCgpIGNv
bnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2lt
cGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5lbmQoKSAt
ICgqcGF0aC5pdGVyYXRvcikuc3RhcnQoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAg
IHJldHVybiBwYXRoLmlubGluZUJveC0+bGVuKCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBib29sIFRleHRCb3g8SXRlcmF0b3I+
Ojppc0xhc3RPbkxpbmUoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlw
ZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgYXV0byBuZXh0ID0g
cGF0aC5pdGVyYXRvcjsKKyAgICAgICAgKytuZXh0OworICAgICAgICByZXR1cm4gbmV4dCA9PSBw
YXRoLmVuZCB8fCAoKnBhdGguaXRlcmF0b3IpLmxpbmVJbmRleCgpICE9ICgqbmV4dCkubGluZUlu
ZGV4KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0
ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICBhdXRvKiBuZXh0ID0gcGF0aC5u
ZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CisgICAgICAgIHJldHVybiAhbmV4dCB8fCAm
cGF0aC5pbmxpbmVCb3gtPnJvb3QoKSAhPSAmbmV4dC0+cm9vdCgpOworICAgIH07CisKKyAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgYm9vbCBUZXh0Qm94
PEl0ZXJhdG9yPjo6aXNMYXN0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0
IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIGF1dG8gbmV4
dCA9IHBhdGguaXRlcmF0b3I7CisgICAgICAgICsrbmV4dDsKKyAgICAgICAgcmV0dXJuIG5leHQg
PT0gcGF0aC5lbmQ7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVu
YW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gIXBhdGgu
bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOworICAgIH07CisKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9
CiAKIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379831</attachid>
            <date>2019-09-30 03:11:40 -0700</date>
            <delta_ts>2019-09-30 06:29:25 -0700</delta_ts>
            <desc>patch</desc>
            <filename>llt-linebreak-4.patch</filename>
            <type>text/plain</type>
            <size>32406</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjI3NjQ0NTQ4MS4uMzZhMDc4NmQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOS0wOS0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuZGVyTGluZUJyZWFrIHNob3VsZCB1c2UgTGluZUxheW91dFRyYXZlcnNh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFj
ZSBtb3JlIHBhdGggc3BlY2lmaWMgY29kZSB3aXRoIExpbmVMYXlvdXRUcmF2ZXJzYWwuCisKKyAg
ICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5n
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVS
ZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRl
UXVhZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6c2ltcGxlTGluZUxheW91dCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVUZXh0Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpj
b21wdXRlQm91bmRpbmdCb3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Y29sbGVjdEFic29sdXRlUmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6cmVuZGVyZXJGb3JQb3NpdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJ
dGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZl
cnNhbDo6ZWxlbWVudEJveEZvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVy
c2FsOjpUZXh0Qm94OjpyZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmxvZ2ljYWxSZWN0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6Omhhc0h5cGhl
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2Fs
OjpUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmRpck92ZXJyaWRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRl
eHRCb3g6OnRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFRyYXZlcnNhbDo6VGV4dEJveDo6aXNMaW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6bG9jYWxTdGFydE9mZnNl
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2Fs
OjpUZXh0Qm94Ojpsb2NhbEVuZE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjpsZW5ndGggY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6aXNMYXN0
T25MaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3g6OmlzTGFzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjppdGVyYXRvciBjb25zdCk6IERlbGV0ZWQu
CisKKyAgICAgICAgTW92ZSB0byBoZWFkZXIgYXMgdGVtcGxhdGVzLgorCisgICAgICAgICogcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oOgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJh
dG9yOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRU
cmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6b3BlcmF0
b3ItPiBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGl0ZXJhdG9yIHR5cGUgZm9yIGVsZW1l
bnQgYm94ZXMuCisgICAgICAgIEl0IGRvZXNuJ3QgY3VycmVudGx5IHJlYWxseSBpdGVyYXRlLCBp
cyBqdXN0IGFsbG93cyB0ZXN0aW5nIGZvciBlbmQuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6OkJveDxJdGVyYXRvcj46OnJlY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9yPjo6bG9naWNhbFJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9y
Pjo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0VHJhdmVyc2FsOjpCb3g8SXRlcmF0b3I+OjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpCb3g8SXRlcmF0b3I+Ojppc0xpbmVC
cmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpCb3g8
SXRlcmF0b3I+OjppdGVyYXRvciBjb25zdCk6CisKKyAgICAgICAgU3BsaXQgcHJvcGVydGllcyB0
aGF0IGFsbCBpbmxpbmUgYm94ZXMgaGF2ZSBvdXQgZnJvbSBUZXh0Qm94LgorICAgICAgICBNYWtl
IGl0IGEgdGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRvcj46OnRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRv
cj46OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRvcj46OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+Ojps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveDxJdGVyYXRvcj46OmlzTGFzdE9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94PEl0ZXJhdG9yPjo6aXNMYXN0IGNvbnN0KToKKwor
ICAgICAgICBNYWtlIGEgdGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6Omhhc1RleHRCb3hlcyk6IERlbGV0ZWQuCisKIDIwMTktMDktMjkgIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOiB1c2UgTGF5ZXJSZXByZXNlbnRhdGlvbiBmb3Igc2Nyb2xsIGNvbnRh
aW5lciwgc2Nyb2xsZWQgY29udGVudHMgbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAyY2Jj
YjNlNGEyYS4uNTRhZjIyZGFkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI1MSw3ICsxMjUx
LDkgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmlu
Zy9IaXRUZXN0UmVxdWVzdC5oCiAgICAgcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAogICAgIHJl
bmRlcmluZy9JbmxpbmVCb3guaAorICAgIHJlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKICAg
ICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisgICAgcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
aAogICAgIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5oCiAgICAgcmVuZGVy
aW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9NYXJrZWRUZXh0LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjg0
N2FmYmI1Yi4uYTE3NjFjNjdiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2NTcsNyArMzY1Nyw3IEBACiAJCUI1NjJEQjYw
MTdEM0NENjMwMDEwQUY5NiAvKiBIVE1MRWxlbWVudFR5cGVIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTYyREI1RTE3RDNDRDU2MDAxMEFG
OTYgLyogSFRNTEVsZW1lbnRUeXBlSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI1NjJEQjYxMTdEM0NENjYwMDEwQUY5NiAvKiBTVkdF
bGVtZW50VHlwZUhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI1NjJEQjVGMTdEM0NENTYwMDEwQUY5NiAvKiBTVkdFbGVtZW50VHlwZUhlbHBl
cnMuaCAqLzsgfTsKIAkJQjU2NTc5QjUxODI0RDEyQTAwRTc5RjIzIC8qIFJlbmRlckNoaWxkSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1
NjU3OUI0MTgyNEQxMkEwMEU3OUYyMyAvKiBSZW5kZXJDaGlsZEl0ZXJhdG9yLmggKi87IH07Ci0J
CUI1N0NCNTJFMTgyQTNFRkMwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTdDQjUyQjE4MkEzN0Y2MDA3
OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oICovOyB9OworCQlCNTdDQjUyRTE4MkEzRUZDMDA3
OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjU3Q0I1MkIxODJBMzdGNjAwNzlBNjQ3IC8qIElubGluZUVsZW1l
bnRCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCNTk1RkY0NzE4MjRDRUUzMDBGRjUxQ0QgLyogUmVuZGVySXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OTVGRjQ2MTgyNENFRTMwMEZG
NTFDRCAvKiBSZW5kZXJJdGVyYXRvci5oICovOyB9OwogCQlCNTlERDY5OTExOTAyOUU1MDA3RTk2
ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNTlERDY5NzExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNh
bGxiYWNrLmggKi87IH07CiAJCUI1OURENjlEMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5z
YWN0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1OURENjlCMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2suaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHAKaW5kZXggMWFhZTA5ZDAwYjIuLmI4ZWJjNDZkZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MV0JSRWxlbWVudC5oIgogI2luY2x1ZGUg
IklubGluZUVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2luY2x1ZGUgIlJlbmRl
ckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVC
b3guaCIKLSNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApA
QCAtNDUsMTMgKzQ1LDYgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlckxpbmVC
cmVhayk7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZExpbmVIZWlnaHQgPSAtMTsKIAotc3Rh
dGljIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dCogc2ltcGxlTGluZUxheW91dChjb25z
dCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlcmVyKQotewotICAgIGlmICghaXM8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIucGFyZW50KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLnNpbXBs
ZUxpbmVMYXlvdXQoKTsKLX0KLQogUmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hN
b2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faW5saW5lQm94
V3JhcHBlcihudWxscHRyKQpAQCAtMTgzLDQ1ICsxNzYsMzEgQEAgTGF5b3V0UmVjdCBSZW5kZXJM
aW5lQnJlYWs6OmxvY2FsQ2FyZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCB1bnNpZ25lZCBj
YXJldE8KIAogSW50UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25z
dAogewotICAgIGlmIChhdXRvKiBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVCb3VuZGluZ0JveCgqdGhpcywg
KmxheW91dCk7Ci0KLSAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKLSAgICAgICAgcmV0dXJu
IEludFJlY3QoKTsKLQotICAgIGZsb2F0IGxvZ2ljYWxMZWZ0U2lkZSA9IG1faW5saW5lQm94V3Jh
cHBlci0+bG9naWNhbExlZnQoKTsKLSAgICBmbG9hdCBsb2dpY2FsUmlnaHRTaWRlID0gbV9pbmxp
bmVCb3hXcmFwcGVyLT5sb2dpY2FsUmlnaHQoKTsKLQotICAgIGJvb2wgaXNIb3Jpem9udGFsID0g
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOworICAgIGF1dG8gYm94ID0gTGluZUxh
eW91dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCisgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBmbG9hdCB4ID0gaXNIb3Jpem9udGFsID8gbG9naWNhbExl
ZnRTaWRlIDogbV9pbmxpbmVCb3hXcmFwcGVyLT54KCk7Ci0gICAgZmxvYXQgeSA9IGlzSG9yaXpv
bnRhbCA/IG1faW5saW5lQm94V3JhcHBlci0+eSgpIDogbG9naWNhbExlZnRTaWRlOwotICAgIGZs
b2F0IHdpZHRoID0gaXNIb3Jpem9udGFsID8gbG9naWNhbFJpZ2h0U2lkZSAtIGxvZ2ljYWxMZWZ0
U2lkZSA6IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbEJvdHRvbSgpIC0geDsKLSAgICBmbG9h
dCBoZWlnaHQgPSBpc0hvcml6b250YWwgPyBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxCb3R0
b20oKSAtIHkgOiBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOwotICAgIHJldHVy
biBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAg
cmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoYm94LT5yZWN0KCkpOwogfQogCiB2b2lkIFJlbmRlckxp
bmVCcmVhazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGxheW91
dCA9IHNpbXBsZUxpbmVMYXlvdXQoKnRoaXMpKSB7Ci0gICAgICAgIHJlY3RzLmFwcGVuZFZlY3Rv
cihTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0QWJzb2x1dGVSZWN0cygqdGhpcywgKmxheW91dCwg
YWNjdW11bGF0ZWRPZmZzZXQpKTsKKyAgICBhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6
OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAgIGlmICghYm94KQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCi0gICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAg
ICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQgKyBtX2lubGluZUJveFdyYXBwZXItPnRvcExlZnQoKSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5z
aXplKCkpKSk7CisgICAgYXV0byByZWN0ID0gYm94LT5yZWN0KCk7CisgICAgcmVjdHMuYXBwZW5k
KGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2Nh
dGlvbigpLCByZWN0LnNpemUoKSkpKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QK
IHsKLSAgICBpZiAoYXV0byogbGF5b3V0ID0gc2ltcGxlTGluZUxheW91dCgqdGhpcykpIHsKLSAg
ICAgICAgcXVhZHMuYXBwZW5kVmVjdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RBYnNvbHV0
ZVF1YWRzKCp0aGlzLCAqbGF5b3V0LCB3YXNGaXhlZCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmICghbV9pbmxpbmVCb3hXcmFwcGVyKQorICAgIGF1dG8gYm94ID0gTGluZUxheW91
dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCiAgICAgICAg
IHJldHVybjsKLSAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qo
bV9pbmxpbmVCb3hXcmFwcGVyLT50b3BMZWZ0KCksIG1faW5saW5lQm94V3JhcHBlci0+c2l6ZSgp
KSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKKworICAgIGF1dG8gcmVjdCA9IGJveC0+cmVj
dCgpOworICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZWN0
LmxvY2F0aW9uKCksIHJlY3Quc2l6ZSgpKSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKIH0K
IAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnVwZGF0ZUZyb21TdHlsZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggN2M4NTljNzRkZDUuLjEx
YjcxOWUzMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJl
bmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAg
ICAvLyBtYW55IHRlc3QgcmVzdWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9
IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0
UnVuTG9jYXRpb24oKSwgdGV4dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAg
aWYgKCFMaW5lTGF5b3V0VHJhdmVyc2FsOjpoYXNUZXh0Qm94ZXModGV4dCkpCisgICAgICAgIGlm
ICghTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94Rm9yKHRleHQpKQogICAgICAgICAg
ICAgYWRqdXN0Rm9yVGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkp
IHsKICAgICAgICAgY29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxp
bmVCcmVhaz4obyk7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCB3cml0ZURlYnVnSW5mbyhUZXh0
U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGlvblNldDxSZW5kZXIK
ICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVuZGVyVGV4dCYgbywgY29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveCYgdGV4
dEJveCkKK3N0YXRpYyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVu
ZGVyVGV4dCYgbywgY29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yOjpC
b3hUeXBlJiB0ZXh0Qm94KQogewogICAgIGF1dG8gcmVjdCA9IHRleHRCb3gucmVjdCgpOwogICAg
IGF1dG8gbG9naWNhbFJlY3QgPSB0ZXh0Qm94LmxvZ2ljYWxSZWN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5k
ZXggNjE5Nzk5N2MwMDIuLjU3NzlkM2VjYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0xODMsMzEgKzE4
Myw2IEBAIHZvaWQgY29sbGVjdEZsb3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNv
bnN0IExheW91dCYgbGF5b3V0KQogICAgIH0KIH0KIAotSW50UmVjdCBjb21wdXRlQm91bmRpbmdC
b3goY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCi17
Ci0gICAgYXV0byYgcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKLSAgICBGbG9hdFJl
Y3QgYm91bmRpbmdCb3hSZWN0OwotICAgIGZvciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5nZUZv
clJlbmRlcmVyKHJlbmRlcmVyKSkgewotICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHJ1bi5yZWN0
KCk7Ci0gICAgICAgIGlmIChib3VuZGluZ0JveFJlY3QgPT0gRmxvYXRSZWN0KCkpCi0gICAgICAg
ICAgICBib3VuZGluZ0JveFJlY3QgPSByZWN0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBi
b3VuZGluZ0JveFJlY3QudW5pdGVFdmVuSWZFbXB0eShyZWN0KTsKLSAgICB9Ci0gICAgcmV0dXJu
IGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdCb3hSZWN0KTsKLX0KLQotVmVjdG9yPEludFJlY3Q+
IGNvbGxlY3RBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IExheW91dCYgbGF5b3V0LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCi17
Ci0gICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwotICAgIGF1dG8mIHJlc29sdmVyID0gbGF5b3V0
LnJ1blJlc29sdmVyKCk7Ci0gICAgZm9yIChhdXRvIHJ1biA6IHJlc29sdmVyLnJhbmdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcnVuLnJlY3QoKTsK
LSAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxh
dGVkT2Zmc2V0ICsgcmVjdC5sb2NhdGlvbigpLCByZWN0LnNpemUoKSkpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHJlY3RzOwotfQotCiBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFk
cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCwgYm9v
bCogd2FzRml4ZWQpCiB7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0yNjIsMTEg
KzIzNyw2IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9yUmFuZ2Uo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zCiAgICAgcmV0dXJuIHF1YWRzOwogfQog
Ci1jb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yUG9zaXRpb24oY29uc3QgRmxvd0NvbnRl
bnRzJiBmbG93Q29udGVudHMsIHVuc2lnbmVkIHBvc2l0aW9uKQotewotICAgIHJldHVybiBmbG93
Q29udGVudHMuc2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKS5yZW5kZXJlcjsKLX0KLQogdm9p
ZCBzaW1wbGVMaW5lTGF5b3V0V2lsbEJlRGVsZXRlZChjb25zdCBMYXlvdXQmIGxheW91dCkKIHsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGF5b3V0LnJ1bkNvdW50KCk7ICsraSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5oCmluZGV4IDcwZDZhZDllOGY2Li4zMmIzNDkxNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC00OSw5ICs0
OSw2IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91
dCYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvCiBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKIHZv
aWQgY29sbGVjdEZsb3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsK
IAotSW50UmVjdCBjb21wdXRlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
TGF5b3V0Jik7Ci0KLVZlY3RvcjxJbnRSZWN0PiBjb2xsZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXQmLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpOwogVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0JiwgYm9vbCogd2FzRml4ZWQpOwogdW5zaWduZWQg
dGV4dE9mZnNldEZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyVGV4dCYs
IGNvbnN0IExheW91dCYpOwogVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNG
b3JSYW5nZShjb25zdCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5k
LCBjb25zdCBMYXlvdXQmLCBib29sKiB3YXNGaXhlZCk7CkBAIC02Miw4ICs1OSw2IEBAIExheW91
dFVuaXQgYmFzZWxpbmVGcm9tRmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIGJvb2wgY2Fu
VXNlRm9yTGluZUJveFRyZWUoUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiB2b2lk
IGdlbmVyYXRlTGluZUJveFRyZWUoUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiAK
LWNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JQb3NpdGlvbihjb25zdCBGbG93Q29udGVu
dHMmLCB1bnNpZ25lZCk7Ci0KIHZvaWQgc2ltcGxlTGluZUxheW91dFdpbGxCZURlbGV0ZWQoY29u
c3QgTGF5b3V0Jik7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCmluZGV4
IDliOGM2MGU3MmQzLi45MGU5ZTA0ZGJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKQEAgLTI2LDE4MCArMjYsMTEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgi
CiAKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgot
I2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgorI2luY2x1ZGUgIlJlbmRlckxp
bmVCcmVhay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGluZUxheW91dFRy
YXZlcnNhbCB7CiAKLUZsb2F0UmVjdCBUZXh0Qm94OjpyZWN0KCkgY29uc3QKLXsKLSAgICBhdXRv
IHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewot
ICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7Ci0gICAgfTsKLQotICAgIGF1
dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgp
IHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZnJhbWVSZWN0KCk7Ci0gICAg
fTsKLQotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwg
c2ltcGxlLCBjb21wbGV4KTsKLX0KLQotRmxvYXRSZWN0IFRleHRCb3g6OmxvZ2ljYWxSZWN0KCkg
Y29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2lt
cGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6
Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+
bG9naWNhbEZyYW1lUmVjdCgpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihp
dGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4
dEJveDo6aGFzSHlwaGVuKCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRl
eHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRo
Lml0ZXJhdG9yKS5oYXNIeXBoZW4oKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5oYXNIeXBoZW4oKTsKLSAgICB9OwotCi0gICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgp
OwotfQotCi1ib29sIFRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAotewot
ICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikg
ewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgfTsK
LQotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2lt
cGxlLCBjb21wbGV4KTsKLX0KLQotYm9vbCBUZXh0Qm94OjpkaXJPdmVycmlkZSgpIGNvbnN0Ci17
Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgm
KSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICBy
ZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5kaXJPdmVycmlkZSgpOwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4dCgpIGNvbnN0Ci17Ci0gICAgYXV0
byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsK
LSAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikudGV4dCgpOwotICAgIH07Ci0KLSAgICBh
dXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRo
KSB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5saW5lVGV4dEJveC0+cmVuZGVy
ZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhwYXRoLmlubGluZVRleHRCb3gtPnN0YXJ0KCksIHBhdGgu
aW5saW5lVGV4dEJveC0+bGVuKCkpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wg
VGV4dEJveDo6aXNMaW5lQnJlYWsoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29u
c3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAo
KnBhdGguaXRlcmF0b3IpLmlzTGluZUJyZWFrKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxl
eCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAg
ICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+aXNMaW5lQnJlYWsoKTsKLSAgICB9OwotCi0g
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBUZXh0Qm94Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29u
c3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxl
UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5sb2NhbFN0YXJ0
KCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJv
eC0+c3RhcnQoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3Io
KS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBUZXh0Qm94
Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikubG9jYWxFbmQoKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5lbmQoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQot
Ci11bnNpZ25lZCBUZXh0Qm94OjpsZW5ndGgoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJl
dHVybiAoKnBhdGguaXRlcmF0b3IpLmVuZCgpIC0gKCpwYXRoLml0ZXJhdG9yKS5zdGFydCgpOwot
ICAgIH07Ci0KLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNv
bXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmxl
bigpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0
aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNMYXN0T25M
aW5lKCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICBhdXRvIG5leHQgPSBwYXRoLml0ZXJhdG9y
OwotICAgICAgICArK25leHQ7Ci0gICAgICAgIHJldHVybiBuZXh0ID09IHBhdGguZW5kIHx8ICgq
cGF0aC5pdGVyYXRvcikubGluZUluZGV4KCkgIT0gKCpuZXh0KS5saW5lSW5kZXgoKTsKLSAgICB9
OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4
UGF0aCYgcGF0aCkgewotICAgICAgICBhdXRvKiBuZXh0ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJv
eEluVGV4dE9yZGVyKCk7Ci0gICAgICAgIHJldHVybiAhbmV4dCB8fCAmcGF0aC5pbmxpbmVUZXh0
Qm94LT5yb290KCkgIT0gJm5leHQtPnJvb3QoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQot
Ci1ib29sIFRleHRCb3g6OmlzTGFzdCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShj
b25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgYXV0byBu
ZXh0ID0gcGF0aC5pdGVyYXRvcjsKLSAgICAgICAgKytuZXh0OwotICAgICAgICByZXR1cm4gbmV4
dCA9PSBwYXRoLmVuZDsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4
dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gIXBhdGgu
bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19
Ci0KLQotaW5saW5lIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0b3IoKSBj
b25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Qm94SXRlcmF0b3ImPigq
dGhpcyk7Ci19Ci0KIFRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGlu
ZVRleHRCb3gqIGlubGluZVRleHRCb3gpCiAgICAgOiBtX3BhdGhWYXJpYW50KENvbXBsZXhQYXRo
IHsgaW5saW5lVGV4dEJveCwgeyB9IH0pCiB7CkBAIC0yMjEsNyArNTIsNyBAQCBUZXh0Qm94SXRl
cmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpCiAgICAg
fTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAg
IHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRCb3goKTsK
KyAgICAgICAgcGF0aC5pbmxpbmVCb3ggPSBwYXRoLmlubGluZUJveC0+bmV4dFRleHRCb3goKTsK
ICAgICB9OwogCiAgICAgV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOwpAQCAtMjM2LDcgKzY3LDcgQEAgY29uc3QgSW5saW5lVGV4dEJveCogVGV4dEJveEl0ZXJh
dG9yOjpDb21wbGV4UGF0aDo6bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigKICAgICAgICAg
ICAgIHJldHVybiBzb3J0ZWRJbmxpbmVUZXh0Qm94ZXNbc29ydGVkSW5saW5lVGV4dEJveEluZGV4
ICsgMV07CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gaW5saW5l
VGV4dEJveC0+bmV4dFRleHRCb3goKTsKKyAgICByZXR1cm4gaW5saW5lQm94LT5uZXh0VGV4dEJv
eCgpOwogfQogCiBUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0
SW5UZXh0T3JkZXIoKQpAQCAtMjQ2LDcgKzc3LDcgQEAgVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkKICAgICB9OwogCiAgICAgYXV0byBj
b21wbGV4ID0gW10oQ29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcGF0aC5pbmxpbmVUZXh0
Qm94ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CisgICAgICAgIHBhdGgu
aW5saW5lQm94ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CiAgICAgICAg
IGlmICghcGF0aC5zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
KytwYXRoLnNvcnRlZElubGluZVRleHRCb3hJbmRleDsKICAgICB9OwpAQCAtMjY2LDcgKzk3LDcg
QEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IENv
bXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3ggPT0g
V1RGOjpnZXQ8Q29tcGxleFBhdGg+KG90aGVyLm1fcGF0aFZhcmlhbnQpLmlubGluZVRleHRCb3g7
CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveCA9PSBXVEY6OmdldDxDb21wbGV4UGF0aD4o
b3RoZXIubV9wYXRoVmFyaWFudCkuaW5saW5lQm94OwogICAgIH07CiAKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjc5LDcgKzEx
MCw3IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiAgICAgfTsKIAogICAg
IGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICBy
ZXR1cm4gIXBhdGguaW5saW5lVGV4dEJveDsKKyAgICAgICAgcmV0dXJuICFwYXRoLmlubGluZUJv
eDsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2lt
cGxlLCBjb21wbGV4KTsKQEAgLTMxMyw1ICsxNDQsMzkgQEAgVGV4dEJveFJhbmdlIHRleHRCb3hl
c0Zvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogICAgIHJldHVybiB7IGZpcnN0VGV4dEJveEZv
cih0ZXh0KSB9OwogfQogCitFbGVtZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihj
b25zdCBJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVFbGVtZW50Qm94KQorICAgIDogbV9wYXRoVmFy
aWFudChDb21wbGV4UGF0aCB7IGlubGluZUVsZW1lbnRCb3ggfSkKK3sKK30KK0VsZW1lbnRCb3hJ
dGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVy
OjpJdGVyYXRvciBpdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJh
dG9yIGVuZCkKKyAgICA6IG1fcGF0aFZhcmlhbnQoU2ltcGxlUGF0aCB7IGl0ZXJhdG9yLCBlbmQg
fSkKK3sKK30KKworYm9vbCBFbGVtZW50Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK3sKKyAg
ICBhdXRvIHNpbXBsZSA9IFsmXShjb25zdCBTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBwYXRoLml0ZXJhdG9yID09IHBhdGguZW5kOworICAgIH07CisKKyAgICBhdXRvIGNvbXBs
ZXggPSBbJl0oY29uc3QgQ29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICFwYXRo
LmlubGluZUJveDsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFy
aWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKworRWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRC
b3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJFbGVtZW50KQoreworICAgIGlmIChh
dXRvJiBwYXJlbnQgPSAqcmVuZGVyRWxlbWVudC5wYXJlbnQoKTsgaXM8UmVuZGVyQmxvY2tGbG93
PihwYXJlbnQpKSB7CisgICAgICAgIGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5b3V0ID0gZG93bmNh
c3Q8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQpLnNpbXBsZUxpbmVMYXlvdXQoKSkgeworICAgICAg
ICAgICAgYXV0byByYW5nZSA9IHNpbXBsZUxpbmVMYXlvdXQtPnJ1blJlc29sdmVyKCkucmFuZ2VG
b3JSZW5kZXJlcihyZW5kZXJFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiB7IHJhbmdlLmJl
Z2luKCksIHJhbmdlLmVuZCgpIH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRWxl
bWVudEJveEl0ZXJhdG9yIHsgcmVuZGVyRWxlbWVudC5pbmxpbmVCb3hXcmFwcGVyKCkgfTsKK30K
KwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dFRyYXZlcnNhbC5oCmluZGV4IGZjOTI3ODE4NDk3Li5hMjJmM2I4MGRmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaApAQCAt
MjYsNiArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgor
I2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJh
bmdlLmg+CkBAIC0zNCw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SW5saW5lVGV4dEJveDsKK2NsYXNzIFJlbmRlckxpbmVCcmVhazsKIGNsYXNzIFJlbmRlclRleHQ7
CiAKIG5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKQEAgLTQ0LDE3ICs0NywzMiBAQCBj
bGFzcyBUZXh0Qm94SXRlcmF0b3I7CiAKIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CiAKLWNsYXNz
IFRleHRCb3ggewordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+CitjbGFzcyBCb3ggewogcHVibGlj
OgogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGxvZ2ljYWxSZWN0
KCkgY29uc3Q7CiAKLSAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0OwogICAgIGJvb2wgaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpIGNvbnN0OwogICAgIGJvb2wgZGlyT3ZlcnJpZGUoKSBjb25zdDsK
KyAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBCb3goKSA9
IGRlZmF1bHQ7CisgICAgQm94KGNvbnN0IEJveCYpID0gZGVmYXVsdDsKKyAgICBCb3goQm94JiYp
ID0gZGVmYXVsdDsKKyAgICB+Qm94KCkgPSBkZWZhdWx0OworICAgIEJveCYgb3BlcmF0b3I9KGNv
bnN0IEJveCYpID0gZGVmYXVsdDsKKyAgICBCb3gmIG9wZXJhdG9yPShCb3gmJikgPSBkZWZhdWx0
OwogCisgICAgY29uc3QgSXRlcmF0b3ImIGl0ZXJhdG9yKCkgY29uc3Q7Cit9OworCit0ZW1wbGF0
ZTxjbGFzcyBJdGVyYXRvcj4KK2NsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94PEl0ZXJhdG9yPiB7
CitwdWJsaWM6CisgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdDsKICAgICBTdHJpbmdWaWV3IHRl
eHQoKSBjb25zdDsKLSAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3Q7CiAKICAgICAvLyBUaGVz
ZSBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgdGV4dCByZW5kZXJlciAobm90IGZsb3cpLgog
ICAgIHVuc2lnbmVkIGxvY2FsU3RhcnRPZmZzZXQoKSBjb25zdDsKQEAgLTcyLDE2ICs5MCwxNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgVGV4dEJveCYgb3BlcmF0b3I9KGNvbnN0IFRleHRCb3gmKSA9IGRl
ZmF1bHQ7CiAgICAgVGV4dEJveCYgb3BlcmF0b3I9KFRleHRCb3gmJikgPSBkZWZhdWx0OwogCi1w
cml2YXRlOgotICAgIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgaXRlcmF0b3IoKSBjb25zdDsKKyAg
ICB1c2luZyBCb3g8SXRlcmF0b3I+OjppdGVyYXRvcjsKIH07CiAKLWNsYXNzIFRleHRCb3hJdGVy
YXRvciA6IHByaXZhdGUgVGV4dEJveCB7CitjbGFzcyBUZXh0Qm94SXRlcmF0b3IgOiBwcml2YXRl
IFRleHRCb3g8VGV4dEJveEl0ZXJhdG9yPiB7CiBwdWJsaWM6CiAgICAgVGV4dEJveEl0ZXJhdG9y
KCkgOiBtX3BhdGhWYXJpYW50KENvbXBsZXhQYXRoIHsgbnVsbHB0ciwgeyB9IH0pIHsgfTsKKwog
ICAgIGV4cGxpY2l0IFRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94Kik7CiAgICAg
VGV4dEJveEl0ZXJhdG9yKFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4mJiBzb3J0ZWQsIHNp
emVfdCBpbmRleCk7Ci0gICAgCiAgICAgVGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6
OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0
ZXJhdG9yIGVuZCk7CiAKICAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVy
biB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7IH0KQEAgLTEwMSw3ICsxMTgsMTAgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0OwogCisgICAgdXNpbmcgQm94VHlwZSA9IFRl
eHRCb3g8VGV4dEJveEl0ZXJhdG9yPjsKKwogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQm94
OwogICAgIGZyaWVuZCBjbGFzcyBUZXh0Qm94OwogCiAgICAgc3RydWN0IFNpbXBsZVBhdGggewpA
QCAtMTA5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1
blJlc29sdmVyOjpJdGVyYXRvciBlbmQ7CiAgICAgfTsKICAgICBzdHJ1Y3QgQ29tcGxleFBhdGgg
ewotICAgICAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVUZXh0Qm94OworICAgICAgICBj
b25zdCBJbmxpbmVUZXh0Qm94KiBpbmxpbmVCb3g7CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxp
bmVUZXh0Qm94Kj4gc29ydGVkSW5saW5lVGV4dEJveGVzOwogICAgICAgICBzaXplX3Qgc29ydGVk
SW5saW5lVGV4dEJveEluZGV4IHsgMCB9OwogCkBAIC0xMTgsNiArMTM4LDM1IEBAIHByaXZhdGU6
CiAgICAgVmFyaWFudDxTaW1wbGVQYXRoLCBDb21wbGV4UGF0aD4gbV9wYXRoVmFyaWFudDsKIH07
CiAKK2NsYXNzIEVsZW1lbnRCb3hJdGVyYXRvciA6IHByaXZhdGUgQm94PEVsZW1lbnRCb3hJdGVy
YXRvcj4geworcHVibGljOgorICAgIEVsZW1lbnRCb3hJdGVyYXRvcigpIDogbV9wYXRoVmFyaWFu
dChDb21wbGV4UGF0aCB7IG51bGxwdHIgfSkgeyB9OworCisgICAgZXhwbGljaXQgRWxlbWVudEJv
eEl0ZXJhdG9yKGNvbnN0IElubGluZUVsZW1lbnRCb3gqKTsKKyAgICBFbGVtZW50Qm94SXRlcmF0
b3IoU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yLCBTaW1wbGVMaW5lTGF5
b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kKTsKKworICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdCB7IHJldHVybiAhYXRFbmQoKTsgfQorCisgICAgY29uc3QgQm94JiBvcGVy
YXRvciooKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQorICAgIGNvbnN0IEJveCogb3BlcmF0b3It
PigpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KKworICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKKwor
ICAgIHVzaW5nIEJveFR5cGUgPSBCb3g8RWxlbWVudEJveEl0ZXJhdG9yPjsKKworcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgQm94OworCisgICAgc3RydWN0IFNpbXBsZVBhdGggeworICAgICAg
ICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRlcmF0b3I7CisgICAg
ICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQ7CisgICAgfTsK
KyAgICBzdHJ1Y3QgQ29tcGxleFBhdGggeworICAgICAgICBjb25zdCBJbmxpbmVFbGVtZW50Qm94
KiBpbmxpbmVCb3g7CisgICAgfTsKKyAgICBWYXJpYW50PFNpbXBsZVBhdGgsIENvbXBsZXhQYXRo
PiBtX3BhdGhWYXJpYW50OworfTsKKwogY2xhc3MgVGV4dEJveFJhbmdlIHsKIHB1YmxpYzoKICAg
ICBUZXh0Qm94UmFuZ2UoVGV4dEJveEl0ZXJhdG9yIGJlZ2luKQpAQCAtMTM1LDggKzE4NCwxNzUg
QEAgcHJpdmF0ZToKIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hGb3IoY29uc3QgUmVuZGVy
VGV4dCYpOwogVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEluVGV4dE9yZGVyRm9yKGNvbnN0
IFJlbmRlclRleHQmKTsKIFRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNGb3IoY29uc3QgUmVuZGVyVGV4
dCYpOworRWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRCb3hGb3IoY29uc3QgUmVuZGVyTGluZUJy
ZWFrJik7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgRmxvYXRSZWN0IEJveDxJdGVy
YXRvcj46OnJlY3QoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5h
bWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5p
dGVyYXRvcikucmVjdCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0
eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBh
dGguaW5saW5lQm94LT5mcmFtZVJlY3QoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIEZsb2F0UmVjdCBCb3g8SXRlcmF0b3I+Ojps
b2dpY2FsUmVjdCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFt
ZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0
ZXJhdG9yKS5yZWN0KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5
cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0
aC5pbmxpbmVCb3gtPmxvZ2ljYWxGcmFtZVJlY3QoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGJvb2wgQm94PEl0ZXJhdG9yPjo6
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShj
b25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYpIHsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJh
dG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVCb3gt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGJvb2wgQm94PEl0ZXJhdG9yPjo6ZGlyT3Zl
cnJpZGUoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRl
cmF0b3I6OlNpbXBsZVBhdGgmKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9OwogCi1p
bmxpbmUgYm9vbCBoYXNUZXh0Qm94ZXMoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkgeyByZXR1cm4g
IWZpcnN0VGV4dEJveEZvcih0ZXh0KS5hdEVuZCgpOyB9CisgICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBwYXRoLmlubGluZUJveC0+ZGlyT3ZlcnJpZGUoKTsKKyAgICB9OworCisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgp
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGJvb2wgQm94PEl0ZXJhdG9y
Pjo6aXNMaW5lQnJlYWsoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlw
ZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikuaXNMaW5lQnJlYWsoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAg
IHJldHVybiBwYXRoLmlubGluZUJveC0+aXNMaW5lQnJlYWsoKTsKKyAgICB9OworCisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGNvbnN0IEl0ZXJhdG9y
JiBCb3g8SXRlcmF0b3I+OjppdGVyYXRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEl0ZXJhdG9yJj4oKnRoaXMpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRv
cj4gaW5saW5lIGJvb2wgVGV4dEJveDxJdGVyYXRvcj46Omhhc0h5cGhlbigpIGNvbnN0Cit7Cisg
ICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5oYXNIeXBoZW4oKTsKKyAg
ICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNv
bXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveC0+aGFzSHlw
aGVuKCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9w
YXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0
b3I+IGlubGluZSBTdHJpbmdWaWV3IFRleHRCb3g8SXRlcmF0b3I+Ojp0ZXh0KCkgY29uc3QKK3sK
KyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRo
JiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnRleHQoKTsKKyAgICB9
OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBs
ZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5saW5lQm94
LT5yZW5kZXJlcigpLnRleHQoKSkuc3Vic3RyaW5nKHBhdGguaW5saW5lQm94LT5zdGFydCgpLCBw
YXRoLmlubGluZUJveC0+bGVuKCkpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgdW5zaWduZWQgVGV4dEJveDxJdGVyYXRvcj46Omxv
Y2FsU3RhcnRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlw
ZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikubG9jYWxTdGFydCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBb
XShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAg
cmV0dXJuIHBhdGguaW5saW5lQm94LT5zdGFydCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgdW5zaWduZWQgVGV4dEJveDxJdGVy
YXRvcj46OmxvY2FsRW5kT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNv
bnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVy
biAoKnBhdGguaXRlcmF0b3IpLmxvY2FsRW5kKCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxl
eCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAg
ICAgICByZXR1cm4gcGF0aC5pbmxpbmVCb3gtPmVuZCgpOworICAgIH07CisKKyAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgdW5zaWduZWQgVGV4dEJveDxJ
dGVyYXRvcj46Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0
eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpw
YXRoLml0ZXJhdG9yKS5lbmQoKSAtICgqcGF0aC5pdGVyYXRvcikuc3RhcnQoKTsKKyAgICB9Owor
CisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQ
YXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveC0+bGVuKCk7CisgICAg
fTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwg
c2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBi
b29sIFRleHRCb3g8SXRlcmF0b3I+Ojppc0xhc3RPbkxpbmUoKSBjb25zdAoreworICAgIGF1dG8g
c2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsK
KyAgICAgICAgYXV0byBuZXh0ID0gcGF0aC5pdGVyYXRvcjsKKyAgICAgICAgKytuZXh0OworICAg
ICAgICByZXR1cm4gbmV4dCA9PSBwYXRoLmVuZCB8fCAoKnBhdGguaXRlcmF0b3IpLmxpbmVJbmRl
eCgpICE9ICgqbmV4dCkubGluZUluZGV4KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9
IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAg
ICBhdXRvKiBuZXh0ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CisgICAg
ICAgIHJldHVybiAhbmV4dCB8fCAmcGF0aC5pbmxpbmVCb3gtPnJvb3QoKSAhPSAmbmV4dC0+cm9v
dCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0
aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9y
PiBpbmxpbmUgYm9vbCBUZXh0Qm94PEl0ZXJhdG9yPjo6aXNMYXN0KCkgY29uc3QKK3sKKyAgICBh
dXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRo
KSB7CisgICAgICAgIGF1dG8gbmV4dCA9IHBhdGguaXRlcmF0b3I7CisgICAgICAgICsrbmV4dDsK
KyAgICAgICAgcmV0dXJuIG5leHQgPT0gcGF0aC5lbmQ7CisgICAgfTsKKworICAgIGF1dG8gY29t
cGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewor
ICAgICAgICByZXR1cm4gIXBhdGgubmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOworICAg
IH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQs
IHNpbXBsZSwgY29tcGxleCk7Cit9CiAKIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379832</attachid>
            <date>2019-09-30 06:29:25 -0700</date>
            <delta_ts>2019-09-30 07:12:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>llt-linebreak-5.patch</filename>
            <type>text/plain</type>
            <size>32518</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjI3NjQ0NTQ4MS4uMzZhMDc4NmQ5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOS0wOS0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuZGVyTGluZUJyZWFrIHNob3VsZCB1c2UgTGluZUxheW91dFRyYXZlcnNh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFj
ZSBtb3JlIHBhdGggc3BlY2lmaWMgY29kZSB3aXRoIExpbmVMYXlvdXRUcmF2ZXJzYWwuCisKKyAg
ICAgICAgKiBIZWFkZXJzLmNtYWtlOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5n
Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6YWJzb2x1dGVS
ZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRl
UXVhZHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6c2ltcGxlTGluZUxheW91dCk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5kZXJPYmplY3QpOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVUZXh0Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpj
b21wdXRlQm91bmRpbmdCb3gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6Y29sbGVjdEFic29sdXRlUmVjdHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U2ltcGxlTGluZUxheW91dDo6cmVuZGVyZXJGb3JQb3NpdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJh
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJ
dGVyYXRvcjo6YXRFbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZl
cnNhbDo6ZWxlbWVudEJveEZvcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVy
c2FsOjpUZXh0Qm94OjpyZWN0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxp
bmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmxvZ2ljYWxSZWN0IGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6Omhhc0h5cGhl
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2Fs
OjpUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmRpck92ZXJyaWRlIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRl
eHRCb3g6OnRleHQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFRyYXZlcnNhbDo6VGV4dEJveDo6aXNMaW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6bG9jYWxTdGFydE9mZnNl
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2Fs
OjpUZXh0Qm94Ojpsb2NhbEVuZE9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjpsZW5ndGggY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6aXNMYXN0
T25MaW5lIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3g6OmlzTGFzdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjppdGVyYXRvciBjb25zdCk6IERlbGV0ZWQu
CisKKyAgICAgICAgTW92ZSB0byBoZWFkZXIgYXMgdGVtcGxhdGVzLgorCisgICAgICAgICogcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oOgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6RWxlbWVudEJveEl0ZXJh
dG9yOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRU
cmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6b3BlcmF0b3IqIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6b3BlcmF0
b3ItPiBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgbmV3IGl0ZXJhdG9yIHR5cGUgZm9yIGVsZW1l
bnQgYm94ZXMuCisgICAgICAgIEl0IGRvZXNuJ3QgY3VycmVudGx5IHJlYWxseSBpdGVyYXRlLCBp
cyBqdXN0IGFsbG93cyB0ZXN0aW5nIGZvciBlbmQuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6OkJveDxJdGVyYXRvcj46OnJlY3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9yPjo6bG9naWNhbFJlY3QgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9y
Pjo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0VHJhdmVyc2FsOjpCb3g8SXRlcmF0b3I+OjpkaXJPdmVycmlkZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpCb3g8SXRlcmF0b3I+Ojppc0xpbmVC
cmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpCb3g8
SXRlcmF0b3I+OjppdGVyYXRvciBjb25zdCk6CisKKyAgICAgICAgU3BsaXQgcHJvcGVydGllcyB0
aGF0IGFsbCBpbmxpbmUgYm94ZXMgaGF2ZSBvdXQgZnJvbSBUZXh0Qm94LgorICAgICAgICBNYWtl
IGl0IGEgdGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2
ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+OjpoYXNIeXBoZW4gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRvcj46OnRleHQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRv
cj46OmxvY2FsU3RhcnRPZmZzZXQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91
dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRvcj46OmxvY2FsRW5kT2Zmc2V0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+Ojps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4
dEJveDxJdGVyYXRvcj46OmlzTGFzdE9uTGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94PEl0ZXJhdG9yPjo6aXNMYXN0IGNvbnN0KToKKwor
ICAgICAgICBNYWtlIGEgdGVtcGxhdGUgY2xhc3MuCisKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6Omhhc1RleHRCb3hlcyk6IERlbGV0ZWQuCisKIDIwMTktMDktMjkgIFph
biBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOiB1c2UgTGF5ZXJSZXByZXNlbnRhdGlvbiBmb3Igc2Nyb2xsIGNvbnRh
aW5lciwgc2Nyb2xsZWQgY29udGVudHMgbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAyY2Jj
YjNlNGEyYS4uNTRhZjIyZGFkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI1MSw3ICsxMjUx
LDkgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmlu
Zy9IaXRUZXN0UmVxdWVzdC5oCiAgICAgcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaAogICAgIHJl
bmRlcmluZy9JbmxpbmVCb3guaAorICAgIHJlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKICAg
ICByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisgICAgcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
aAogICAgIHJlbmRlcmluZy9MYXllckFuY2VzdG9yQ2xpcHBpbmdTdGFjay5oCiAgICAgcmVuZGVy
aW5nL0xheWVyRnJhZ21lbnQuaAogICAgIHJlbmRlcmluZy9NYXJrZWRUZXh0LmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjg0
N2FmYmI1Yi4uYTE3NjFjNjdiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM2NTcsNyArMzY1Nyw3IEBACiAJCUI1NjJEQjYw
MTdEM0NENjMwMDEwQUY5NiAvKiBIVE1MRWxlbWVudFR5cGVIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTYyREI1RTE3RDNDRDU2MDAxMEFG
OTYgLyogSFRNTEVsZW1lbnRUeXBlSGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUI1NjJEQjYxMTdEM0NENjYwMDEwQUY5NiAvKiBTVkdF
bGVtZW50VHlwZUhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEI1NjJEQjVGMTdEM0NENTYwMDEwQUY5NiAvKiBTVkdFbGVtZW50VHlwZUhlbHBl
cnMuaCAqLzsgfTsKIAkJQjU2NTc5QjUxODI0RDEyQTAwRTc5RjIzIC8qIFJlbmRlckNoaWxkSXRl
cmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1
NjU3OUI0MTgyNEQxMkEwMEU3OUYyMyAvKiBSZW5kZXJDaGlsZEl0ZXJhdG9yLmggKi87IH07Ci0J
CUI1N0NCNTJFMTgyQTNFRkMwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50Qm94LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTdDQjUyQjE4MkEzN0Y2MDA3
OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oICovOyB9OworCQlCNTdDQjUyRTE4MkEzRUZDMDA3
OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjU3Q0I1MkIxODJBMzdGNjAwNzlBNjQ3IC8qIElubGluZUVsZW1l
bnRCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlCNTk1RkY0NzE4MjRDRUUzMDBGRjUxQ0QgLyogUmVuZGVySXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1OTVGRjQ2MTgyNENFRTMwMEZG
NTFDRCAvKiBSZW5kZXJJdGVyYXRvci5oICovOyB9OwogCQlCNTlERDY5OTExOTAyOUU1MDA3RTk2
ODQgLyogSlNEYXRhYmFzZUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCNTlERDY5NzExOTAyOUU1MDA3RTk2ODQgLyogSlNEYXRhYmFzZUNh
bGxiYWNrLmggKi87IH07CiAJCUI1OURENjlEMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5z
YWN0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI1OURENjlCMTE5MDJBNDIwMDdFOTY4NCAvKiBKU1NRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2suaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHAKaW5kZXggMWFhZTA5ZDAwYjIuLmI4ZWJjNDZkZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMjcsMTEgKzI3LDExIEBACiAjaW5jbHVk
ZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MV0JSRWxlbWVudC5oIgogI2luY2x1ZGUg
IklubGluZUVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oIgogI2luY2x1ZGUgIlJlbmRl
ckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVC
b3guaCIKLSNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVBvc2l0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApA
QCAtNDUsMTMgKzQ1LDYgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlckxpbmVC
cmVhayk7CiAKIHN0YXRpYyBjb25zdCBpbnQgaW52YWxpZExpbmVIZWlnaHQgPSAtMTsKIAotc3Rh
dGljIGNvbnN0IFNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dCogc2ltcGxlTGluZUxheW91dChjb25z
dCBSZW5kZXJMaW5lQnJlYWsmIHJlbmRlcmVyKQotewotICAgIGlmICghaXM8UmVuZGVyQmxvY2tG
bG93PigqcmVuZGVyZXIucGFyZW50KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqcmVuZGVyZXIucGFyZW50KCkpLnNpbXBs
ZUxpbmVMYXlvdXQoKTsKLX0KLQogUmVuZGVyTGluZUJyZWFrOjpSZW5kZXJMaW5lQnJlYWsoSFRN
TEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCb3hN
b2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1faW5saW5lQm94
V3JhcHBlcihudWxscHRyKQpAQCAtMTgzLDQ1ICsxNzYsMzEgQEAgTGF5b3V0UmVjdCBSZW5kZXJM
aW5lQnJlYWs6OmxvY2FsQ2FyZXRSZWN0KElubGluZUJveCogaW5saW5lQm94LCB1bnNpZ25lZCBj
YXJldE8KIAogSW50UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25z
dAogewotICAgIGlmIChhdXRvKiBsYXlvdXQgPSBzaW1wbGVMaW5lTGF5b3V0KCp0aGlzKSkKLSAg
ICAgICAgcmV0dXJuIFNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVCb3VuZGluZ0JveCgqdGhpcywg
KmxheW91dCk7Ci0KLSAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKLSAgICAgICAgcmV0dXJu
IEludFJlY3QoKTsKLQotICAgIGZsb2F0IGxvZ2ljYWxMZWZ0U2lkZSA9IG1faW5saW5lQm94V3Jh
cHBlci0+bG9naWNhbExlZnQoKTsKLSAgICBmbG9hdCBsb2dpY2FsUmlnaHRTaWRlID0gbV9pbmxp
bmVCb3hXcmFwcGVyLT5sb2dpY2FsUmlnaHQoKTsKLQotICAgIGJvb2wgaXNIb3Jpem9udGFsID0g
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOworICAgIGF1dG8gYm94ID0gTGluZUxh
eW91dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCisgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBmbG9hdCB4ID0gaXNIb3Jpem9udGFsID8gbG9naWNhbExl
ZnRTaWRlIDogbV9pbmxpbmVCb3hXcmFwcGVyLT54KCk7Ci0gICAgZmxvYXQgeSA9IGlzSG9yaXpv
bnRhbCA/IG1faW5saW5lQm94V3JhcHBlci0+eSgpIDogbG9naWNhbExlZnRTaWRlOwotICAgIGZs
b2F0IHdpZHRoID0gaXNIb3Jpem9udGFsID8gbG9naWNhbFJpZ2h0U2lkZSAtIGxvZ2ljYWxMZWZ0
U2lkZSA6IG1faW5saW5lQm94V3JhcHBlci0+bG9naWNhbEJvdHRvbSgpIC0geDsKLSAgICBmbG9h
dCBoZWlnaHQgPSBpc0hvcml6b250YWwgPyBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxCb3R0
b20oKSAtIHkgOiBsb2dpY2FsUmlnaHRTaWRlIC0gbG9naWNhbExlZnRTaWRlOwotICAgIHJldHVy
biBlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAg
cmV0dXJuIGVuY2xvc2luZ0ludFJlY3QoYm94LT5yZWN0KCkpOwogfQogCiB2b2lkIFJlbmRlckxp
bmVCcmVhazo6YWJzb2x1dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGxheW91
dCA9IHNpbXBsZUxpbmVMYXlvdXQoKnRoaXMpKSB7Ci0gICAgICAgIHJlY3RzLmFwcGVuZFZlY3Rv
cihTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0QWJzb2x1dGVSZWN0cygqdGhpcywgKmxheW91dCwg
YWNjdW11bGF0ZWRPZmZzZXQpKTsKKyAgICBhdXRvIGJveCA9IExpbmVMYXlvdXRUcmF2ZXJzYWw6
OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAgIGlmICghYm94KQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCi0gICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCi0gICAgICAgIHJldHVybjsKLSAg
ICByZWN0cy5hcHBlbmQoZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoYWNjdW11bGF0ZWRPZmZz
ZXQgKyBtX2lubGluZUJveFdyYXBwZXItPnRvcExlZnQoKSwgbV9pbmxpbmVCb3hXcmFwcGVyLT5z
aXplKCkpKSk7CisgICAgYXV0byByZWN0ID0gYm94LT5yZWN0KCk7CisgICAgcmVjdHMuYXBwZW5k
KGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0ICsgcmVjdC5sb2Nh
dGlvbigpLCByZWN0LnNpemUoKSkpKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OmFic29s
dXRlUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QK
IHsKLSAgICBpZiAoYXV0byogbGF5b3V0ID0gc2ltcGxlTGluZUxheW91dCgqdGhpcykpIHsKLSAg
ICAgICAgcXVhZHMuYXBwZW5kVmVjdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OmNvbGxlY3RBYnNvbHV0
ZVF1YWRzKCp0aGlzLCAqbGF5b3V0LCB3YXNGaXhlZCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmICghbV9pbmxpbmVCb3hXcmFwcGVyKQorICAgIGF1dG8gYm94ID0gTGluZUxheW91
dFRyYXZlcnNhbDo6ZWxlbWVudEJveEZvcigqdGhpcyk7CisgICAgaWYgKCFib3gpCiAgICAgICAg
IHJldHVybjsKLSAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qo
bV9pbmxpbmVCb3hXcmFwcGVyLT50b3BMZWZ0KCksIG1faW5saW5lQm94V3JhcHBlci0+c2l6ZSgp
KSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKKworICAgIGF1dG8gcmVjdCA9IGJveC0+cmVj
dCgpOworICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChyZWN0
LmxvY2F0aW9uKCksIHJlY3Quc2l6ZSgpKSwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKIH0K
IAogdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnVwZGF0ZUZyb21TdHlsZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggN2M4NTljNzRkZDUuLjEx
YjcxOWUzMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBSZW5kZXJUcmVlQXNUZXh0Ojp3cml0ZVJl
bmRlck9iamVjdChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvLAogICAgICAg
ICAvLyBtYW55IHRlc3QgcmVzdWx0cy4KICAgICAgICAgY29uc3QgUmVuZGVyVGV4dCYgdGV4dCA9
IGRvd25jYXN0PFJlbmRlclRleHQ+KG8pOwogICAgICAgICByID0gSW50UmVjdCh0ZXh0LmZpcnN0
UnVuTG9jYXRpb24oKSwgdGV4dC5saW5lc0JvdW5kaW5nQm94KCkuc2l6ZSgpKTsKLSAgICAgICAg
aWYgKCFMaW5lTGF5b3V0VHJhdmVyc2FsOjpoYXNUZXh0Qm94ZXModGV4dCkpCisgICAgICAgIGlm
ICghTGluZUxheW91dFRyYXZlcnNhbDo6Zmlyc3RUZXh0Qm94Rm9yKHRleHQpKQogICAgICAgICAg
ICAgYWRqdXN0Rm9yVGFibGVDZWxscyA9IGZhbHNlOwogICAgIH0gZWxzZSBpZiAoby5pc0JSKCkp
IHsKICAgICAgICAgY29uc3QgUmVuZGVyTGluZUJyZWFrJiBiciA9IGRvd25jYXN0PFJlbmRlckxp
bmVCcmVhaz4obyk7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCB3cml0ZURlYnVnSW5mbyhUZXh0
U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvYmplY3QsIE9wdGlvblNldDxSZW5kZXIK
ICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVuZGVyVGV4dCYgbywgY29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveCYgdGV4
dEJveCkKK3N0YXRpYyB2b2lkIHdyaXRlVGV4dEJveChUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVu
ZGVyVGV4dCYgbywgY29uc3QgTGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveEl0ZXJhdG9yOjpC
b3hUeXBlJiB0ZXh0Qm94KQogewogICAgIGF1dG8gcmVjdCA9IHRleHRCb3gucmVjdCgpOwogICAg
IGF1dG8gbG9naWNhbFJlY3QgPSB0ZXh0Qm94LmxvZ2ljYWxSZWN0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKaW5k
ZXggNjE5Nzk5N2MwMDIuLjU3NzlkM2VjYTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC0xODMsMzEgKzE4
Myw2IEBAIHZvaWQgY29sbGVjdEZsb3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIGNv
bnN0IExheW91dCYgbGF5b3V0KQogICAgIH0KIH0KIAotSW50UmVjdCBjb21wdXRlQm91bmRpbmdC
b3goY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQpCi17
Ci0gICAgYXV0byYgcmVzb2x2ZXIgPSBsYXlvdXQucnVuUmVzb2x2ZXIoKTsKLSAgICBGbG9hdFJl
Y3QgYm91bmRpbmdCb3hSZWN0OwotICAgIGZvciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5nZUZv
clJlbmRlcmVyKHJlbmRlcmVyKSkgewotICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHJ1bi5yZWN0
KCk7Ci0gICAgICAgIGlmIChib3VuZGluZ0JveFJlY3QgPT0gRmxvYXRSZWN0KCkpCi0gICAgICAg
ICAgICBib3VuZGluZ0JveFJlY3QgPSByZWN0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBi
b3VuZGluZ0JveFJlY3QudW5pdGVFdmVuSWZFbXB0eShyZWN0KTsKLSAgICB9Ci0gICAgcmV0dXJu
IGVuY2xvc2luZ0ludFJlY3QoYm91bmRpbmdCb3hSZWN0KTsKLX0KLQotVmVjdG9yPEludFJlY3Q+
IGNvbGxlY3RBYnNvbHV0ZVJlY3RzKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IExheW91dCYgbGF5b3V0LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpCi17
Ci0gICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOwotICAgIGF1dG8mIHJlc29sdmVyID0gbGF5b3V0
LnJ1blJlc29sdmVyKCk7Ci0gICAgZm9yIChhdXRvIHJ1biA6IHJlc29sdmVyLnJhbmdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIEZsb2F0UmVjdCByZWN0ID0gcnVuLnJlY3QoKTsK
LSAgICAgICAgcmVjdHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxh
dGVkT2Zmc2V0ICsgcmVjdC5sb2NhdGlvbigpLCByZWN0LnNpemUoKSkpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIHJlY3RzOwotfQotCiBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFk
cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXQmIGxheW91dCwgYm9v
bCogd2FzRml4ZWQpCiB7CiAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0yNjIsMTEg
KzIzNyw2IEBAIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9yUmFuZ2Uo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgdW5zCiAgICAgcmV0dXJuIHF1YWRzOwogfQog
Ci1jb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yUG9zaXRpb24oY29uc3QgRmxvd0NvbnRl
bnRzJiBmbG93Q29udGVudHMsIHVuc2lnbmVkIHBvc2l0aW9uKQotewotICAgIHJldHVybiBmbG93
Q29udGVudHMuc2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9uKS5yZW5kZXJlcjsKLX0KLQogdm9p
ZCBzaW1wbGVMaW5lTGF5b3V0V2lsbEJlRGVsZXRlZChjb25zdCBMYXlvdXQmIGxheW91dCkKIHsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGF5b3V0LnJ1bkNvdW50KCk7ICsraSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5oCmluZGV4IDcwZDZhZDllOGY2Li4zMmIzNDkxNGRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCkBAIC00OSw5ICs0
OSw2IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91
dCYsIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvCiBib29sIGhpdFRlc3RGbG93KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0
VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwg
Y29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKIHZv
aWQgY29sbGVjdEZsb3dPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmKTsK
IAotSW50UmVjdCBjb21wdXRlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
TGF5b3V0Jik7Ci0KLVZlY3RvcjxJbnRSZWN0PiBjb2xsZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXQmLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQpOwogVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0JiwgYm9vbCogd2FzRml4ZWQpOwogdW5zaWduZWQg
dGV4dE9mZnNldEZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyVGV4dCYs
IGNvbnN0IExheW91dCYpOwogVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHNG
b3JSYW5nZShjb25zdCBSZW5kZXJPYmplY3QmLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5k
LCBjb25zdCBMYXlvdXQmLCBib29sKiB3YXNGaXhlZCk7CkBAIC02Miw4ICs1OSw2IEBAIExheW91
dFVuaXQgYmFzZWxpbmVGcm9tRmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmKTsKIGJvb2wgY2Fu
VXNlRm9yTGluZUJveFRyZWUoUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiB2b2lk
IGdlbmVyYXRlTGluZUJveFRyZWUoUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiAK
LWNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JQb3NpdGlvbihjb25zdCBGbG93Q29udGVu
dHMmLCB1bnNpZ25lZCk7Ci0KIHZvaWQgc2ltcGxlTGluZUxheW91dFdpbGxCZURlbGV0ZWQoY29u
c3QgTGF5b3V0Jik7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCmluZGV4
IDliOGM2MGU3MmQzLi45MGU5ZTA0ZGJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAKQEAgLTI2LDE4MCArMjYsMTEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMaW5lTGF5b3V0VHJhdmVyc2FsLmgi
CiAKLSNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgot
I2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oIgorI2luY2x1ZGUgIlJlbmRlckxp
bmVCcmVhay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGluZUxheW91dFRy
YXZlcnNhbCB7CiAKLUZsb2F0UmVjdCBUZXh0Qm94OjpyZWN0KCkgY29uc3QKLXsKLSAgICBhdXRv
IHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewot
ICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7Ci0gICAgfTsKLQotICAgIGF1
dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgp
IHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZnJhbWVSZWN0KCk7Ci0gICAg
fTsKLQotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwg
c2ltcGxlLCBjb21wbGV4KTsKLX0KLQotRmxvYXRSZWN0IFRleHRCb3g6OmxvZ2ljYWxSZWN0KCkg
Y29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2lt
cGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5yZWN0KCk7
Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6
Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+
bG9naWNhbEZyYW1lUmVjdCgpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihp
dGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4
dEJveDo6aGFzSHlwaGVuKCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRl
eHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRo
Lml0ZXJhdG9yKS5oYXNIeXBoZW4oKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5oYXNIeXBoZW4oKTsKLSAgICB9OwotCi0gICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgp
OwotfQotCi1ib29sIFRleHRCb3g6OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAotewot
ICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikg
ewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Ci0gICAgfTsK
LQotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2lt
cGxlLCBjb21wbGV4KTsKLX0KLQotYm9vbCBUZXh0Qm94OjpkaXJPdmVycmlkZSgpIGNvbnN0Ci17
Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgm
KSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICBy
ZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5kaXJPdmVycmlkZSgpOwotICAgIH07Ci0KLSAgICBy
ZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29t
cGxleCk7Ci19Ci0KLVN0cmluZ1ZpZXcgVGV4dEJveDo6dGV4dCgpIGNvbnN0Ci17Ci0gICAgYXV0
byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsK
LSAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikudGV4dCgpOwotICAgIH07Ci0KLSAgICBh
dXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRo
KSB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdWaWV3KHBhdGguaW5saW5lVGV4dEJveC0+cmVuZGVy
ZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhwYXRoLmlubGluZVRleHRCb3gtPnN0YXJ0KCksIHBhdGgu
aW5saW5lVGV4dEJveC0+bGVuKCkpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wg
VGV4dEJveDo6aXNMaW5lQnJlYWsoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29u
c3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAo
KnBhdGguaXRlcmF0b3IpLmlzTGluZUJyZWFrKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxl
eCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAg
ICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJveC0+aXNMaW5lQnJlYWsoKTsKLSAgICB9OwotCi0g
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUs
IGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBUZXh0Qm94Ojpsb2NhbFN0YXJ0T2Zmc2V0KCkgY29u
c3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxl
UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS5sb2NhbFN0YXJ0
KCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lVGV4dEJv
eC0+c3RhcnQoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3Io
KS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi11bnNpZ25lZCBUZXh0Qm94
Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBU
ZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikubG9jYWxFbmQoKTsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5lbmQoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQot
Ci11bnNpZ25lZCBUZXh0Qm94OjpsZW5ndGgoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0g
W10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJl
dHVybiAoKnBhdGguaXRlcmF0b3IpLmVuZCgpIC0gKCpwYXRoLml0ZXJhdG9yKS5zdGFydCgpOwot
ICAgIH07Ci0KLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNv
bXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmxl
bigpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0
aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6aXNMYXN0T25M
aW5lKCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRv
cjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICBhdXRvIG5leHQgPSBwYXRoLml0ZXJhdG9y
OwotICAgICAgICArK25leHQ7Ci0gICAgICAgIHJldHVybiBuZXh0ID09IHBhdGguZW5kIHx8ICgq
cGF0aC5pdGVyYXRvcikubGluZUluZGV4KCkgIT0gKCpuZXh0KS5saW5lSW5kZXgoKTsKLSAgICB9
OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4
UGF0aCYgcGF0aCkgewotICAgICAgICBhdXRvKiBuZXh0ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJv
eEluVGV4dE9yZGVyKCk7Ci0gICAgICAgIHJldHVybiAhbmV4dCB8fCAmcGF0aC5pbmxpbmVUZXh0
Qm94LT5yb290KCkgIT0gJm5leHQtPnJvb3QoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQot
Ci1ib29sIFRleHRCb3g6OmlzTGFzdCgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShj
b25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgYXV0byBu
ZXh0ID0gcGF0aC5pdGVyYXRvcjsKLSAgICAgICAgKytuZXh0OwotICAgICAgICByZXR1cm4gbmV4
dCA9PSBwYXRoLmVuZDsKLSAgICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4
dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gIXBhdGgu
bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOwotICAgIH07Ci0KLSAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Ci19
Ci0KLQotaW5saW5lIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgVGV4dEJveDo6aXRlcmF0b3IoKSBj
b25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Qm94SXRlcmF0b3ImPigq
dGhpcyk7Ci19Ci0KIFRleHRCb3hJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yKGNvbnN0IElubGlu
ZVRleHRCb3gqIGlubGluZVRleHRCb3gpCiAgICAgOiBtX3BhdGhWYXJpYW50KENvbXBsZXhQYXRo
IHsgaW5saW5lVGV4dEJveCwgeyB9IH0pCiB7CkBAIC0yMjEsNyArNTIsNyBAQCBUZXh0Qm94SXRl
cmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpCiAgICAg
fTsKIAogICAgIGF1dG8gY29tcGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAg
IHBhdGguaW5saW5lVGV4dEJveCA9IHBhdGguaW5saW5lVGV4dEJveC0+bmV4dFRleHRCb3goKTsK
KyAgICAgICAgcGF0aC5pbmxpbmVCb3ggPSBwYXRoLmlubGluZUJveC0+bmV4dFRleHRCb3goKTsK
ICAgICB9OwogCiAgICAgV1RGOjpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOwpAQCAtMjM2LDcgKzY3LDcgQEAgY29uc3QgSW5saW5lVGV4dEJveCogVGV4dEJveEl0ZXJh
dG9yOjpDb21wbGV4UGF0aDo6bmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigKICAgICAgICAg
ICAgIHJldHVybiBzb3J0ZWRJbmxpbmVUZXh0Qm94ZXNbc29ydGVkSW5saW5lVGV4dEJveEluZGV4
ICsgMV07CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gaW5saW5l
VGV4dEJveC0+bmV4dFRleHRCb3goKTsKKyAgICByZXR1cm4gaW5saW5lQm94LT5uZXh0VGV4dEJv
eCgpOwogfQogCiBUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3hJdGVyYXRvcjo6dHJhdmVyc2VOZXh0
SW5UZXh0T3JkZXIoKQpAQCAtMjQ2LDcgKzc3LDcgQEAgVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94
SXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVGV4dE9yZGVyKCkKICAgICB9OwogCiAgICAgYXV0byBj
b21wbGV4ID0gW10oQ29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcGF0aC5pbmxpbmVUZXh0
Qm94ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CisgICAgICAgIHBhdGgu
aW5saW5lQm94ID0gcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CiAgICAgICAg
IGlmICghcGF0aC5zb3J0ZWRJbmxpbmVUZXh0Qm94ZXMuaXNFbXB0eSgpKQogICAgICAgICAgICAg
KytwYXRoLnNvcnRlZElubGluZVRleHRCb3hJbmRleDsKICAgICB9OwpAQCAtMjY2LDcgKzk3LDcg
QEAgYm9vbCBUZXh0Qm94SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgVGV4dEJveEl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKICAgICB9OwogCiAgICAgYXV0byBjb21wbGV4ID0gWyZdKGNvbnN0IENv
bXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3ggPT0g
V1RGOjpnZXQ8Q29tcGxleFBhdGg+KG90aGVyLm1fcGF0aFZhcmlhbnQpLmlubGluZVRleHRCb3g7
CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveCA9PSBXVEY6OmdldDxDb21wbGV4UGF0aD4o
b3RoZXIubV9wYXRoVmFyaWFudCkuaW5saW5lQm94OwogICAgIH07CiAKICAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihtX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwpAQCAtMjc5LDcgKzEx
MCw3IEBAIGJvb2wgVGV4dEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0CiAgICAgfTsKIAogICAg
IGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICBy
ZXR1cm4gIXBhdGguaW5saW5lVGV4dEJveDsKKyAgICAgICAgcmV0dXJuICFwYXRoLmlubGluZUJv
eDsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2lt
cGxlLCBjb21wbGV4KTsKQEAgLTMxMyw1ICsxNDQsMzkgQEAgVGV4dEJveFJhbmdlIHRleHRCb3hl
c0Zvcihjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KQogICAgIHJldHVybiB7IGZpcnN0VGV4dEJveEZv
cih0ZXh0KSB9OwogfQogCitFbGVtZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihj
b25zdCBJbmxpbmVFbGVtZW50Qm94KiBpbmxpbmVFbGVtZW50Qm94KQorICAgIDogbV9wYXRoVmFy
aWFudChDb21wbGV4UGF0aCB7IGlubGluZUVsZW1lbnRCb3ggfSkKK3sKK30KK0VsZW1lbnRCb3hJ
dGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVy
OjpJdGVyYXRvciBpdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJh
dG9yIGVuZCkKKyAgICA6IG1fcGF0aFZhcmlhbnQoU2ltcGxlUGF0aCB7IGl0ZXJhdG9yLCBlbmQg
fSkKK3sKK30KKworYm9vbCBFbGVtZW50Qm94SXRlcmF0b3I6OmF0RW5kKCkgY29uc3QKK3sKKyAg
ICBhdXRvIHNpbXBsZSA9IFsmXShjb25zdCBTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBwYXRoLml0ZXJhdG9yID09IHBhdGguZW5kOworICAgIH07CisKKyAgICBhdXRvIGNvbXBs
ZXggPSBbJl0oY29uc3QgQ29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICFwYXRo
LmlubGluZUJveDsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFy
aWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKworRWxlbWVudEJveEl0ZXJhdG9yIGVsZW1lbnRC
b3hGb3IoY29uc3QgUmVuZGVyTGluZUJyZWFrJiByZW5kZXJFbGVtZW50KQoreworICAgIGlmIChh
dXRvJiBwYXJlbnQgPSAqcmVuZGVyRWxlbWVudC5wYXJlbnQoKTsgaXM8UmVuZGVyQmxvY2tGbG93
PihwYXJlbnQpKSB7CisgICAgICAgIGlmIChhdXRvKiBzaW1wbGVMaW5lTGF5b3V0ID0gZG93bmNh
c3Q8UmVuZGVyQmxvY2tGbG93PihwYXJlbnQpLnNpbXBsZUxpbmVMYXlvdXQoKSkgeworICAgICAg
ICAgICAgYXV0byByYW5nZSA9IHNpbXBsZUxpbmVMYXlvdXQtPnJ1blJlc29sdmVyKCkucmFuZ2VG
b3JSZW5kZXJlcihyZW5kZXJFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiB7IHJhbmdlLmJl
Z2luKCksIHJhbmdlLmVuZCgpIH07CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gRWxl
bWVudEJveEl0ZXJhdG9yIHsgcmVuZGVyRWxlbWVudC5pbmxpbmVCb3hXcmFwcGVyKCkgfTsKK30K
KwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxh
eW91dFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91
dFRyYXZlcnNhbC5oCmluZGV4IGZjOTI3ODE4NDk3Li4wNDI1NmU5YjlmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaApAQCAt
MjYsNiArMjYsOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCisjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgor
I2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UmVzb2x2
ZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJh
bmdlLmg+CkBAIC0zNCw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SW5saW5lVGV4dEJveDsKK2NsYXNzIFJlbmRlckxpbmVCcmVhazsKIGNsYXNzIFJlbmRlclRleHQ7
CiAKIG5hbWVzcGFjZSBMaW5lTGF5b3V0VHJhdmVyc2FsIHsKQEAgLTQ0LDE3ICs0NywzMiBAQCBj
bGFzcyBUZXh0Qm94SXRlcmF0b3I7CiAKIHN0cnVjdCBFbmRJdGVyYXRvciB7IH07CiAKLWNsYXNz
IFRleHRCb3ggewordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+CitjbGFzcyBCb3ggewogcHVibGlj
OgogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3Q7CiAgICAgRmxvYXRSZWN0IGxvZ2ljYWxSZWN0
KCkgY29uc3Q7CiAKLSAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0OwogICAgIGJvb2wgaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpIGNvbnN0OwogICAgIGJvb2wgZGlyT3ZlcnJpZGUoKSBjb25zdDsK
KyAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBCb3goKSA9
IGRlZmF1bHQ7CisgICAgQm94KGNvbnN0IEJveCYpID0gZGVmYXVsdDsKKyAgICBCb3goQm94JiYp
ID0gZGVmYXVsdDsKKyAgICB+Qm94KCkgPSBkZWZhdWx0OworICAgIEJveCYgb3BlcmF0b3I9KGNv
bnN0IEJveCYpID0gZGVmYXVsdDsKKyAgICBCb3gmIG9wZXJhdG9yPShCb3gmJikgPSBkZWZhdWx0
OwogCisgICAgY29uc3QgSXRlcmF0b3ImIGl0ZXJhdG9yKCkgY29uc3Q7Cit9OworCit0ZW1wbGF0
ZTxjbGFzcyBJdGVyYXRvcj4KK2NsYXNzIFRleHRCb3ggOiBwdWJsaWMgQm94PEl0ZXJhdG9yPiB7
CitwdWJsaWM6CisgICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdDsKICAgICBTdHJpbmdWaWV3IHRl
eHQoKSBjb25zdDsKLSAgICBib29sIGlzTGluZUJyZWFrKCkgY29uc3Q7CiAKICAgICAvLyBUaGVz
ZSBvZmZzZXRzIGFyZSByZWxhdGl2ZSB0byB0aGUgdGV4dCByZW5kZXJlciAobm90IGZsb3cpLgog
ICAgIHVuc2lnbmVkIGxvY2FsU3RhcnRPZmZzZXQoKSBjb25zdDsKQEAgLTcyLDE2ICs5MCwxNSBA
QCBwcm90ZWN0ZWQ6CiAgICAgVGV4dEJveCYgb3BlcmF0b3I9KGNvbnN0IFRleHRCb3gmKSA9IGRl
ZmF1bHQ7CiAgICAgVGV4dEJveCYgb3BlcmF0b3I9KFRleHRCb3gmJikgPSBkZWZhdWx0OwogCi1w
cml2YXRlOgotICAgIGNvbnN0IFRleHRCb3hJdGVyYXRvciYgaXRlcmF0b3IoKSBjb25zdDsKKyAg
ICB1c2luZyBCb3g8SXRlcmF0b3I+OjppdGVyYXRvcjsKIH07CiAKLWNsYXNzIFRleHRCb3hJdGVy
YXRvciA6IHByaXZhdGUgVGV4dEJveCB7CitjbGFzcyBUZXh0Qm94SXRlcmF0b3IgOiBwcml2YXRl
IFRleHRCb3g8VGV4dEJveEl0ZXJhdG9yPiB7CiBwdWJsaWM6CiAgICAgVGV4dEJveEl0ZXJhdG9y
KCkgOiBtX3BhdGhWYXJpYW50KENvbXBsZXhQYXRoIHsgbnVsbHB0ciwgeyB9IH0pIHsgfTsKKwog
ICAgIGV4cGxpY2l0IFRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVUZXh0Qm94Kik7CiAgICAg
VGV4dEJveEl0ZXJhdG9yKFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4mJiBzb3J0ZWQsIHNp
emVfdCBpbmRleCk7Ci0gICAgCiAgICAgVGV4dEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6
OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0
ZXJhdG9yIGVuZCk7CiAKICAgICBUZXh0Qm94SXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVy
biB0cmF2ZXJzZU5leHRJblZpc3VhbE9yZGVyKCk7IH0KQEAgLTEwMSwxNSArMTE4LDE4IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKIAorICAgIHVzaW5nIEJveFR5cGUgPSBU
ZXh0Qm94PFRleHRCb3hJdGVyYXRvcj47CisKIHByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFRl
eHRCb3g7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4gZnJpZW5kIGNsYXNzIEJveDsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBUPiBmcmllbmQgY2xhc3MgVGV4dEJveDsKIAogICAgIHN0cnVjdCBTaW1wbGVQ
YXRoIHsKICAgICAgICAgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGl0
ZXJhdG9yOwogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3Ig
ZW5kOwogICAgIH07CiAgICAgc3RydWN0IENvbXBsZXhQYXRoIHsKLSAgICAgICAgY29uc3QgSW5s
aW5lVGV4dEJveCogaW5saW5lVGV4dEJveDsKKyAgICAgICAgY29uc3QgSW5saW5lVGV4dEJveCog
aW5saW5lQm94OwogICAgICAgICBWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+IHNvcnRlZElu
bGluZVRleHRCb3hlczsKICAgICAgICAgc2l6ZV90IHNvcnRlZElubGluZVRleHRCb3hJbmRleCB7
IDAgfTsKIApAQCAtMTE4LDYgKzEzOCwzNSBAQCBwcml2YXRlOgogICAgIFZhcmlhbnQ8U2ltcGxl
UGF0aCwgQ29tcGxleFBhdGg+IG1fcGF0aFZhcmlhbnQ7CiB9OwogCitjbGFzcyBFbGVtZW50Qm94
SXRlcmF0b3IgOiBwcml2YXRlIEJveDxFbGVtZW50Qm94SXRlcmF0b3I+IHsKK3B1YmxpYzoKKyAg
ICBFbGVtZW50Qm94SXRlcmF0b3IoKSA6IG1fcGF0aFZhcmlhbnQoQ29tcGxleFBhdGggeyBudWxs
cHRyIH0pIHsgfTsKKworICAgIGV4cGxpY2l0IEVsZW1lbnRCb3hJdGVyYXRvcihjb25zdCBJbmxp
bmVFbGVtZW50Qm94Kik7CisgICAgRWxlbWVudEJveEl0ZXJhdG9yKFNpbXBsZUxpbmVMYXlvdXQ6
OlJ1blJlc29sdmVyOjpJdGVyYXRvciwgU2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0
ZXJhdG9yIGVuZCk7CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1
cm4gIWF0RW5kKCk7IH0KKworICAgIGNvbnN0IEJveCYgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1
cm4gKnRoaXM7IH0KKyAgICBjb25zdCBCb3gqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiB0
aGlzOyB9CisKKyAgICBib29sIGF0RW5kKCkgY29uc3Q7CisKKyAgICB1c2luZyBCb3hUeXBlID0g
Qm94PEVsZW1lbnRCb3hJdGVyYXRvcj47CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGU8Y2xhc3Mg
VD4gZnJpZW5kIGNsYXNzIEJveDsKKworICAgIHN0cnVjdCBTaW1wbGVQYXRoIHsKKyAgICAgICAg
U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGl0ZXJhdG9yOworICAgICAg
ICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgZW5kOworICAgIH07Cisg
ICAgc3RydWN0IENvbXBsZXhQYXRoIHsKKyAgICAgICAgY29uc3QgSW5saW5lRWxlbWVudEJveCog
aW5saW5lQm94OworICAgIH07CisgICAgVmFyaWFudDxTaW1wbGVQYXRoLCBDb21wbGV4UGF0aD4g
bV9wYXRoVmFyaWFudDsKK307CisKIGNsYXNzIFRleHRCb3hSYW5nZSB7CiBwdWJsaWM6CiAgICAg
VGV4dEJveFJhbmdlKFRleHRCb3hJdGVyYXRvciBiZWdpbikKQEAgLTEzNSw4ICsxODQsMTc1IEBA
IHByaXZhdGU6CiBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94Rm9yKGNvbnN0IFJlbmRlclRl
eHQmKTsKIFRleHRCb3hJdGVyYXRvciBmaXJzdFRleHRCb3hJblRleHRPcmRlckZvcihjb25zdCBS
ZW5kZXJUZXh0Jik7CiBUZXh0Qm94UmFuZ2UgdGV4dEJveGVzRm9yKGNvbnN0IFJlbmRlclRleHQm
KTsKK0VsZW1lbnRCb3hJdGVyYXRvciBlbGVtZW50Qm94Rm9yKGNvbnN0IFJlbmRlckxpbmVCcmVh
ayYpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIEZsb2F0UmVjdCBCb3g8SXRlcmF0
b3I+OjpyZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1l
IEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRl
cmF0b3IpLnJlY3QoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlw
ZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRo
LmlubGluZUJveC0+ZnJhbWVSZWN0KCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBGbG9hdFJlY3QgQm94PEl0ZXJhdG9yPjo6bG9n
aWNhbFJlY3QoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUg
SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVy
YXRvcikucmVjdCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBl
bmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGgu
aW5saW5lQm94LT5sb2dpY2FsRnJhbWVSZWN0KCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBib29sIEJveDxJdGVyYXRvcj46Omlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29u
c3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmKSB7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRv
cjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94LT5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVt
cGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBib29sIEJveDxJdGVyYXRvcj46OmRpck92ZXJy
aWRlKCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJh
dG9yOjpTaW1wbGVQYXRoJikgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfTsKIAotaW5s
aW5lIGJvb2wgaGFzVGV4dEJveGVzKGNvbnN0IFJlbmRlclRleHQmIHRleHQpIHsgcmV0dXJuICFm
aXJzdFRleHRCb3hGb3IodGV4dCkuYXRFbmQoKTsgfQorICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVCb3gtPmRpck92ZXJyaWRlKCk7CisgICAgfTsKKworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsK
K30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBib29sIEJveDxJdGVyYXRvcj46
OmlzTGluZUJyZWFrKCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVu
YW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGgu
aXRlcmF0b3IpLmlzTGluZUJyZWFrKCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtd
KGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICBy
ZXR1cm4gcGF0aC5pbmxpbmVCb3gtPmlzTGluZUJyZWFrKCk7CisgICAgfTsKKworICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4
KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBjb25zdCBJdGVyYXRvciYg
Qm94PEl0ZXJhdG9yPjo6aXRlcmF0b3IoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBJdGVyYXRvciY+KCp0aGlzKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+
IGlubGluZSBib29sIFRleHRCb3g8SXRlcmF0b3I+OjpoYXNIeXBoZW4oKSBjb25zdAoreworICAg
IGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBh
dGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikuaGFzSHlwaGVuKCk7CisgICAg
fTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21w
bGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVCb3gtPmhhc0h5cGhl
bigpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0
aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9y
PiBpbmxpbmUgU3RyaW5nVmlldyBUZXh0Qm94PEl0ZXJhdG9yPjo6dGV4dCgpIGNvbnN0Cit7Cisg
ICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYg
cGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJhdG9yKS50ZXh0KCk7CisgICAgfTsK
KworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4
UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhwYXRoLmlubGluZUJveC0+
cmVuZGVyZXIoKS50ZXh0KCkpLnN1YnN0cmluZyhwYXRoLmlubGluZUJveC0+c3RhcnQoKSwgcGF0
aC5pbmxpbmVCb3gtPmxlbigpKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
aXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0
ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIHVuc2lnbmVkIFRleHRCb3g8SXRlcmF0b3I+Ojpsb2Nh
bFN0YXJ0T2Zmc2V0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVu
YW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGgu
aXRlcmF0b3IpLmxvY2FsU3RhcnQoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJl
dHVybiBwYXRoLmlubGluZUJveC0+c3RhcnQoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIHVuc2lnbmVkIFRleHRCb3g8SXRlcmF0
b3I+Ojpsb2NhbEVuZE9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25z
dCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4g
KCpwYXRoLml0ZXJhdG9yKS5sb2NhbEVuZCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXgg
PSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAg
ICAgcmV0dXJuIHBhdGguaW5saW5lQm94LT5lbmQoKTsKKyAgICB9OworCisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIHVuc2lnbmVkIFRleHRCb3g8SXRl
cmF0b3I+OjpsZW5ndGgoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlw
ZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0
aC5pdGVyYXRvcikuZW5kKCkgLSAoKnBhdGguaXRlcmF0b3IpLnN0YXJ0KCk7CisgICAgfTsKKwor
ICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0
aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVCb3gtPmxlbigpOworICAgIH07
CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNp
bXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgYm9v
bCBUZXh0Qm94PEl0ZXJhdG9yPjo6aXNMYXN0T25MaW5lKCkgY29uc3QKK3sKKyAgICBhdXRvIHNp
bXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Cisg
ICAgICAgIGF1dG8gbmV4dCA9IHBhdGguaXRlcmF0b3I7CisgICAgICAgICsrbmV4dDsKKyAgICAg
ICAgcmV0dXJuIG5leHQgPT0gcGF0aC5lbmQgfHwgKCpwYXRoLml0ZXJhdG9yKS5saW5lSW5kZXgo
KSAhPSAoKm5leHQpLmxpbmVJbmRleCgpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBb
XShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAg
YXV0byogbmV4dCA9IHBhdGgubmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOworICAgICAg
ICByZXR1cm4gIW5leHQgfHwgJnBhdGguaW5saW5lQm94LT5yb290KCkgIT0gJm5leHQtPnJvb3Qo
KTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhW
YXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4g
aW5saW5lIGJvb2wgVGV4dEJveDxJdGVyYXRvcj46OmlzTGFzdCgpIGNvbnN0Cit7CisgICAgYXV0
byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkg
eworICAgICAgICBhdXRvIG5leHQgPSBwYXRoLml0ZXJhdG9yOworICAgICAgICArK25leHQ7Cisg
ICAgICAgIHJldHVybiBuZXh0ID09IHBhdGguZW5kOworICAgIH07CisKKyAgICBhdXRvIGNvbXBs
ZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAg
ICAgICAgcmV0dXJuICFwYXRoLm5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKTsKKyAgICB9
OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBz
aW1wbGUsIGNvbXBsZXgpOworfQogCiB9CiB9Cg==
</data>
<flag name="review"
          id="395554"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379834</attachid>
            <date>2019-09-30 07:12:07 -0700</date>
            <delta_ts>2019-09-30 08:55:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>llt-linebreak-6.patch</filename>
            <type>text/plain</type>
            <size>32516</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjI3NjQ0NTQ4MS4uZTZjYjY0MzAzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxOS0wOS0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVuZGVyTGluZUJyZWFrIHNob3VsZCB1c2UgTGluZUxheW91dFRyYXZlcnNh
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyMzE2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgorCisgICAgICAgIFJlcGxhY2Ug
bW9yZSBwYXRoIHNwZWNpZmljIGNvZGUgd2l0aCBMaW5lTGF5b3V0VHJhdmVyc2FsLgorCisgICAg
ICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCcmVhazo6bGluZXNCb3VuZGluZ0Jv
eCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmFic29sdXRlUmVj
dHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjphYnNvbHV0ZVF1
YWRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnNpbXBsZUxpbmVMYXlvdXQpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRyZWVBc1RleHQ6OndyaXRlUmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OndyaXRlVGV4dEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXRGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29t
cHV0ZUJvdW5kaW5nQm94KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVM
YXlvdXQ6OmNvbGxlY3RBYnNvbHV0ZVJlY3RzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OnJlbmRlcmVyRm9yUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
aW5lTGF5b3V0VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRv
cik6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRl
cmF0b3I6OmF0RW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJz
YWw6OmVsZW1lbnRCb3hGb3IpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNh
bDo6VGV4dEJveDo6cmVjdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5l
TGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94Ojpsb2dpY2FsUmVjdCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjpoYXNIeXBoZW4g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6
VGV4dEJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94OjpkaXJPdmVycmlkZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0
Qm94Ojp0ZXh0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRU
cmF2ZXJzYWw6OlRleHRCb3g6OmlzTGluZUJyZWFrIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmxvY2FsU3RhcnRPZmZzZXQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6
VGV4dEJveDo6bG9jYWxFbmRPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6bGVuZ3RoIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g6OmlzTGFzdE9u
TGluZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVy
c2FsOjpUZXh0Qm94Ojppc0xhc3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGluZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDo6aXRlcmF0b3IgY29uc3QpOiBEZWxldGVkLgor
CisgICAgICAgIE1vdmUgdG8gaGVhZGVyIGFzIHRlbXBsYXRlcy4KKworICAgICAgICAqIHJlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVM
YXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRvcjo6RWxlbWVudEJveEl0ZXJhdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVyYXRv
cjo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJh
dmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3I6Om9wZXJhdG9yKiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpFbGVtZW50Qm94SXRlcmF0b3I6Om9wZXJhdG9y
LT4gY29uc3QpOgorCisgICAgICAgIEFkZCBhIG5ldyBpdGVyYXRvciB0eXBlIGZvciBlbGVtZW50
IGJveGVzLgorICAgICAgICBJdCBkb2Vzbid0IGN1cnJlbnRseSByZWFsbHkgaXRlcmF0ZSwgaXMg
anVzdCBhbGxvd3MgdGVzdGluZyBmb3IgZW5kLgorCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0VHJhdmVyc2FsOjpCb3g8SXRlcmF0b3I+OjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkJveDxJdGVyYXRvcj46OmxvZ2ljYWxSZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkJveDxJdGVyYXRvcj46
OmlzTGVmdFRvUmlnaHREaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxh
eW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9yPjo6ZGlyT3ZlcnJpZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0ZXJhdG9yPjo6aXNMaW5lQnJl
YWsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGluZUxheW91dFRyYXZlcnNhbDo6Qm94PEl0
ZXJhdG9yPjo6aXRlcmF0b3IgY29uc3QpOgorCisgICAgICAgIFNwbGl0IHByb3BlcnRpZXMgdGhh
dCBhbGwgaW5saW5lIGJveGVzIGhhdmUgb3V0IGZyb20gVGV4dEJveC4KKyAgICAgICAgTWFrZSBp
dCBhIHRlbXBsYXRlIGNsYXNzLgorCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVy
c2FsOjpUZXh0Qm94PEl0ZXJhdG9yPjo6aGFzSHlwaGVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+Ojp0ZXh0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+
Ojpsb2NhbFN0YXJ0T2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRU
cmF2ZXJzYWw6OlRleHRCb3g8SXRlcmF0b3I+Ojpsb2NhbEVuZE9mZnNldCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpUZXh0Qm94PEl0ZXJhdG9yPjo6bGVu
Z3RoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRC
b3g8SXRlcmF0b3I+Ojppc0xhc3RPbkxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGlu
ZUxheW91dFRyYXZlcnNhbDo6VGV4dEJveDxJdGVyYXRvcj46OmlzTGFzdCBjb25zdCk6CisKKyAg
ICAgICAgTWFrZSBhIHRlbXBsYXRlIGNsYXNzLgorCisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5
b3V0VHJhdmVyc2FsOjpoYXNUZXh0Qm94ZXMpOiBEZWxldGVkLgorCiAyMDE5LTA5LTI5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZTogdXNlIExheWVyUmVwcmVzZW50YXRpb24gZm9yIHNjcm9sbCBjb250YWlu
ZXIsIHNjcm9sbGVkIGNvbnRlbnRzIGxheWVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMmNiY2Iz
ZTRhMmEuLjU0YWYyMmRhZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTEyNTEsNyArMTI1MSw5
IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcv
SGl0VGVzdFJlcXVlc3QuaAogICAgIHJlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKICAgICByZW5k
ZXJpbmcvSW5saW5lQm94LmgKKyAgICByZW5kZXJpbmcvSW5saW5lRWxlbWVudEJveC5oCiAgICAg
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guaAorICAgIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgK
ICAgICByZW5kZXJpbmcvTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaAogICAgIHJlbmRlcmlu
Zy9MYXllckZyYWdtZW50LmgKICAgICByZW5kZXJpbmcvTWFya2VkVGV4dC5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjY4NDdh
ZmJiNWIuLmExNzYxYzY3YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNjU3LDcgKzM2NTcsNyBAQAogCQlCNTYyREI2MDE3
RDNDRDYzMDAxMEFGOTYgLyogSFRNTEVsZW1lbnRUeXBlSGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU2MkRCNUUxN0QzQ0Q1NjAwMTBBRjk2
IC8qIEhUTUxFbGVtZW50VHlwZUhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCNTYyREI2MTE3RDNDRDY2MDAxMEFGOTYgLyogU1ZHRWxl
bWVudFR5cGVIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNTYyREI1RjE3RDNDRDU2MDAxMEFGOTYgLyogU1ZHRWxlbWVudFR5cGVIZWxwZXJz
LmggKi87IH07CiAJCUI1NjU3OUI1MTgyNEQxMkEwMEU3OUYyMyAvKiBSZW5kZXJDaGlsZEl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTY1
NzlCNDE4MjREMTJBMDBFNzlGMjMgLyogUmVuZGVyQ2hpbGRJdGVyYXRvci5oICovOyB9OwotCQlC
NTdDQjUyRTE4MkEzRUZDMDA3OUE2NDcgLyogSW5saW5lRWxlbWVudEJveC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU3Q0I1MkIxODJBMzdGNjAwNzlB
NjQ3IC8qIElubGluZUVsZW1lbnRCb3guaCAqLzsgfTsKKwkJQjU3Q0I1MkUxODJBM0VGQzAwNzlB
NjQ3IC8qIElubGluZUVsZW1lbnRCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEI1N0NCNTJCMTgyQTM3RjYwMDc5QTY0NyAvKiBJbmxpbmVFbGVtZW50
Qm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QjU5NUZGNDcxODI0Q0VFMzAwRkY1MUNEIC8qIFJlbmRlckl0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTk1RkY0NjE4MjRDRUUzMDBGRjUx
Q0QgLyogUmVuZGVySXRlcmF0b3IuaCAqLzsgfTsKIAkJQjU5REQ2OTkxMTkwMjlFNTAwN0U5Njg0
IC8qIEpTRGF0YWJhc2VDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjU5REQ2OTcxMTkwMjlFNTAwN0U5Njg0IC8qIEpTRGF0YWJhc2VDYWxs
YmFjay5oICovOyB9OwogCQlCNTlERDY5RDExOTAyQTQyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNTlERDY5QjExOTAyQTQyMDA3RTk2ODQgLyogSlNTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
LmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
CmluZGV4IDFhYWUwOWQwMGIyLi5iOGViYzQ2ZGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFdCUkVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bmxpbmVFbGVtZW50Qm94LmgiCisjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgogI2lu
Y2x1ZGUgIkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaCIKICNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94
LmgiCi0jaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlZp
c2libGVQb3NpdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKQEAg
LTQ1LDEzICs0NSw2IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChSZW5kZXJMaW5lQnJl
YWspOwogCiBzdGF0aWMgY29uc3QgaW50IGludmFsaWRMaW5lSGVpZ2h0ID0gLTE7CiAKLXN0YXRp
YyBjb25zdCBTaW1wbGVMaW5lTGF5b3V0OjpMYXlvdXQqIHNpbXBsZUxpbmVMYXlvdXQoY29uc3Qg
UmVuZGVyTGluZUJyZWFrJiByZW5kZXJlcikKLXsKLSAgICBpZiAoIWlzPFJlbmRlckJsb2NrRmxv
dz4oKnJlbmRlcmVyLnBhcmVudCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oKnJlbmRlcmVyLnBhcmVudCgpKS5zaW1wbGVM
aW5lTGF5b3V0KCk7Ci19Ci0KIFJlbmRlckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKEhUTUxF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQm94TW9k
ZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2lubGluZUJveFdy
YXBwZXIobnVsbHB0cikKQEAgLTE4Myw0NSArMTc2LDMxIEBAIExheW91dFJlY3QgUmVuZGVyTGlu
ZUJyZWFrOjpsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqIGlubGluZUJveCwgdW5zaWduZWQgY2Fy
ZXRPCiAKIEludFJlY3QgUmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5nQm94KCkgY29uc3QK
IHsKLSAgICBpZiAoYXV0byogbGF5b3V0ID0gc2ltcGxlTGluZUxheW91dCgqdGhpcykpCi0gICAg
ICAgIHJldHVybiBTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRlQm91bmRpbmdCb3goKnRoaXMsICps
YXlvdXQpOwotCi0gICAgaWYgKCFtX2lubGluZUJveFdyYXBwZXIpCi0gICAgICAgIHJldHVybiBJ
bnRSZWN0KCk7Ci0KLSAgICBmbG9hdCBsb2dpY2FsTGVmdFNpZGUgPSBtX2lubGluZUJveFdyYXBw
ZXItPmxvZ2ljYWxMZWZ0KCk7Ci0gICAgZmxvYXQgbG9naWNhbFJpZ2h0U2lkZSA9IG1faW5saW5l
Qm94V3JhcHBlci0+bG9naWNhbFJpZ2h0KCk7Ci0KLSAgICBib29sIGlzSG9yaXpvbnRhbCA9IHN0
eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKKyAgICBhdXRvIGJveCA9IExpbmVMYXlv
dXRUcmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAgIGlmICghYm94KQorICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgeCA9IGlzSG9yaXpvbnRhbCA/IGxvZ2ljYWxMZWZ0
U2lkZSA6IG1faW5saW5lQm94V3JhcHBlci0+eCgpOwotICAgIGZsb2F0IHkgPSBpc0hvcml6b250
YWwgPyBtX2lubGluZUJveFdyYXBwZXItPnkoKSA6IGxvZ2ljYWxMZWZ0U2lkZTsKLSAgICBmbG9h
dCB3aWR0aCA9IGlzSG9yaXpvbnRhbCA/IGxvZ2ljYWxSaWdodFNpZGUgLSBsb2dpY2FsTGVmdFNp
ZGUgOiBtX2lubGluZUJveFdyYXBwZXItPmxvZ2ljYWxCb3R0b20oKSAtIHg7Ci0gICAgZmxvYXQg
aGVpZ2h0ID0gaXNIb3Jpem9udGFsID8gbV9pbmxpbmVCb3hXcmFwcGVyLT5sb2dpY2FsQm90dG9t
KCkgLSB5IDogbG9naWNhbFJpZ2h0U2lkZSAtIGxvZ2ljYWxMZWZ0U2lkZTsKLSAgICByZXR1cm4g
ZW5jbG9zaW5nSW50UmVjdChGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIHJl
dHVybiBlbmNsb3NpbmdJbnRSZWN0KGJveC0+cmVjdCgpKTsKIH0KIAogdm9pZCBSZW5kZXJMaW5l
QnJlYWs6OmFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cywgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25zdAogewotICAgIGlmIChhdXRvKiBsYXlvdXQg
PSBzaW1wbGVMaW5lTGF5b3V0KCp0aGlzKSkgewotICAgICAgICByZWN0cy5hcHBlbmRWZWN0b3Io
U2ltcGxlTGluZUxheW91dDo6Y29sbGVjdEFic29sdXRlUmVjdHMoKnRoaXMsICpsYXlvdXQsIGFj
Y3VtdWxhdGVkT2Zmc2V0KSk7CisgICAgYXV0byBib3ggPSBMaW5lTGF5b3V0VHJhdmVyc2FsOjpl
bGVtZW50Qm94Rm9yKCp0aGlzKTsKKyAgICBpZiAoIWJveCkKICAgICAgICAgcmV0dXJuOwotICAg
IH0KIAotICAgIGlmICghbV9pbmxpbmVCb3hXcmFwcGVyKQotICAgICAgICByZXR1cm47Ci0gICAg
cmVjdHMuYXBwZW5kKGVuY2xvc2luZ0ludFJlY3QoRmxvYXRSZWN0KGFjY3VtdWxhdGVkT2Zmc2V0
ICsgbV9pbmxpbmVCb3hXcmFwcGVyLT50b3BMZWZ0KCksIG1faW5saW5lQm94V3JhcHBlci0+c2l6
ZSgpKSkpOworICAgIGF1dG8gcmVjdCA9IGJveC0+cmVjdCgpOworICAgIHJlY3RzLmFwcGVuZChl
bmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRlZE9mZnNldCArIHJlY3QubG9jYXRp
b24oKSwgcmVjdC5zaXplKCkpKSk7CiB9CiAKIHZvaWQgUmVuZGVyTGluZUJyZWFrOjphYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiB7
Ci0gICAgaWYgKGF1dG8qIGxheW91dCA9IHNpbXBsZUxpbmVMYXlvdXQoKnRoaXMpKSB7Ci0gICAg
ICAgIHF1YWRzLmFwcGVuZFZlY3RvcihTaW1wbGVMaW5lTGF5b3V0Ojpjb2xsZWN0QWJzb2x1dGVR
dWFkcygqdGhpcywgKmxheW91dCwgd2FzRml4ZWQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoIW1faW5saW5lQm94V3JhcHBlcikKKyAgICBhdXRvIGJveCA9IExpbmVMYXlvdXRU
cmF2ZXJzYWw6OmVsZW1lbnRCb3hGb3IoKnRoaXMpOworICAgIGlmICghYm94KQogICAgICAgICBy
ZXR1cm47Ci0gICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KG1f
aW5saW5lQm94V3JhcHBlci0+dG9wTGVmdCgpLCBtX2lubGluZUJveFdyYXBwZXItPnNpemUoKSks
IFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVkKSk7CisKKyAgICBhdXRvIHJlY3QgPSBib3gtPnJlY3Qo
KTsKKyAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocmVjdC5s
b2NhdGlvbigpLCByZWN0LnNpemUoKSksIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVkKSk7CiB9CiAK
IHZvaWQgUmVuZGVyTGluZUJyZWFrOjp1cGRhdGVGcm9tU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDdjODU5Yzc0ZGQ1Li4xMWI3
MTllMzFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVB
c1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgUmVuZGVyVHJlZUFzVGV4dDo6d3JpdGVSZW5k
ZXJPYmplY3QoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgbywKICAgICAgICAg
Ly8gbWFueSB0ZXN0IHJlc3VsdHMuCiAgICAgICAgIGNvbnN0IFJlbmRlclRleHQmIHRleHQgPSBk
b3duY2FzdDxSZW5kZXJUZXh0PihvKTsKICAgICAgICAgciA9IEludFJlY3QodGV4dC5maXJzdFJ1
bkxvY2F0aW9uKCksIHRleHQubGluZXNCb3VuZGluZ0JveCgpLnNpemUoKSk7Ci0gICAgICAgIGlm
ICghTGluZUxheW91dFRyYXZlcnNhbDo6aGFzVGV4dEJveGVzKHRleHQpKQorICAgICAgICBpZiAo
IUxpbmVMYXlvdXRUcmF2ZXJzYWw6OmZpcnN0VGV4dEJveEZvcih0ZXh0KSkKICAgICAgICAgICAg
IGFkanVzdEZvclRhYmxlQ2VsbHMgPSBmYWxzZTsKICAgICB9IGVsc2UgaWYgKG8uaXNCUigpKSB7
CiAgICAgICAgIGNvbnN0IFJlbmRlckxpbmVCcmVhayYgYnIgPSBkb3duY2FzdDxSZW5kZXJMaW5l
QnJlYWs+KG8pOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgd3JpdGVEZWJ1Z0luZm8oVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFJlbmRlck9iamVjdCYgb2JqZWN0LCBPcHRpb25TZXQ8UmVuZGVyCiAg
ICAgfQogfQogCi1zdGF0aWMgdm9pZCB3cml0ZVRleHRCb3goVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFJlbmRlclRleHQmIG8sIGNvbnN0IExpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3gmIHRleHRC
b3gpCitzdGF0aWMgdm9pZCB3cml0ZVRleHRCb3goVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRl
clRleHQmIG8sIGNvbnN0IExpbmVMYXlvdXRUcmF2ZXJzYWw6OlRleHRCb3hJdGVyYXRvcjo6Qm94
VHlwZSYgdGV4dEJveCkKIHsKICAgICBhdXRvIHJlY3QgPSB0ZXh0Qm94LnJlY3QoKTsKICAgICBh
dXRvIGxvZ2ljYWxSZWN0ID0gdGV4dEJveC5sb2dpY2FsUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4
IDYxOTc5OTdjMDAyLi41Nzc5ZDNlY2EwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTgzLDMxICsxODMs
NiBAQCB2b2lkIGNvbGxlY3RGbG93T3ZlcmZsb3coUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25z
dCBMYXlvdXQmIGxheW91dCkKICAgICB9CiB9CiAKLUludFJlY3QgY29tcHV0ZUJvdW5kaW5nQm94
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExheW91dCYgbGF5b3V0KQotewot
ICAgIGF1dG8mIHJlc29sdmVyID0gbGF5b3V0LnJ1blJlc29sdmVyKCk7Ci0gICAgRmxvYXRSZWN0
IGJvdW5kaW5nQm94UmVjdDsKLSAgICBmb3IgKGF1dG8gcnVuIDogcmVzb2x2ZXIucmFuZ2VGb3JS
ZW5kZXJlcihyZW5kZXJlcikpIHsKLSAgICAgICAgRmxvYXRSZWN0IHJlY3QgPSBydW4ucmVjdCgp
OwotICAgICAgICBpZiAoYm91bmRpbmdCb3hSZWN0ID09IEZsb2F0UmVjdCgpKQotICAgICAgICAg
ICAgYm91bmRpbmdCb3hSZWN0ID0gcmVjdDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYm91
bmRpbmdCb3hSZWN0LnVuaXRlRXZlbklmRW1wdHkocmVjdCk7Ci0gICAgfQotICAgIHJldHVybiBl
bmNsb3NpbmdJbnRSZWN0KGJvdW5kaW5nQm94UmVjdCk7Ci19Ci0KLVZlY3RvcjxJbnRSZWN0PiBj
b2xsZWN0QWJzb2x1dGVSZWN0cyhjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBM
YXlvdXQmIGxheW91dCwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KQotewot
ICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKLSAgICBhdXRvJiByZXNvbHZlciA9IGxheW91dC5y
dW5SZXNvbHZlcigpOwotICAgIGZvciAoYXV0byBydW4gOiByZXNvbHZlci5yYW5nZUZvclJlbmRl
cmVyKHJlbmRlcmVyKSkgewotICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHJ1bi5yZWN0KCk7Ci0g
ICAgICAgIHJlY3RzLmFwcGVuZChlbmNsb3NpbmdJbnRSZWN0KEZsb2F0UmVjdChhY2N1bXVsYXRl
ZE9mZnNldCArIHJlY3QubG9jYXRpb24oKSwgcmVjdC5zaXplKCkpKSk7Ci0gICAgfQotICAgIHJl
dHVybiByZWN0czsKLX0KLQogVmVjdG9yPEZsb2F0UXVhZD4gY29sbGVjdEFic29sdXRlUXVhZHMo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0JiBsYXlvdXQsIGJvb2wq
IHdhc0ZpeGVkKQogewogICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMjYyLDExICsy
MzcsNiBAQCBWZWN0b3I8RmxvYXRRdWFkPiBjb2xsZWN0QWJzb2x1dGVRdWFkc0ZvclJhbmdlKGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIHVucwogICAgIHJldHVybiBxdWFkczsKIH0KIAot
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlckZvclBvc2l0aW9uKGNvbnN0IEZsb3dDb250ZW50
cyYgZmxvd0NvbnRlbnRzLCB1bnNpZ25lZCBwb3NpdGlvbikKLXsKLSAgICByZXR1cm4gZmxvd0Nv
bnRlbnRzLnNlZ21lbnRGb3JQb3NpdGlvbihwb3NpdGlvbikucmVuZGVyZXI7Ci19Ci0KIHZvaWQg
c2ltcGxlTGluZUxheW91dFdpbGxCZURlbGV0ZWQoY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxheW91dC5ydW5Db3VudCgpOyArK2kpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9u
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMu
aAppbmRleCA3MGQ2YWQ5ZThmNi4uMzJiMzQ5MTRkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaApAQCAtNDksOSArNDks
NiBAQCB2b2lkIHBhaW50Rmxvdyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQm
LCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQbwogYm9vbCBoaXRUZXN0Rmxvdyhjb25zdCBSZW5k
ZXJCbG9ja0Zsb3cmLCBjb25zdCBMYXlvdXQmLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbik7CiB2b2lk
IGNvbGxlY3RGbG93T3ZlcmZsb3coUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgTGF5b3V0Jik7CiAK
LUludFJlY3QgY29tcHV0ZUJvdW5kaW5nQm94KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IExh
eW91dCYpOwotCi1WZWN0b3I8SW50UmVjdD4gY29sbGVjdEFic29sdXRlUmVjdHMoY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVk
T2Zmc2V0KTsKIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IExheW91dCYsIGJvb2wqIHdhc0ZpeGVkKTsKIHVuc2lnbmVkIHRl
eHRPZmZzZXRGb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclRleHQmLCBj
b25zdCBMYXlvdXQmKTsKIFZlY3RvcjxGbG9hdFF1YWQ+IGNvbGxlY3RBYnNvbHV0ZVF1YWRzRm9y
UmFuZ2UoY29uc3QgUmVuZGVyT2JqZWN0JiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwg
Y29uc3QgTGF5b3V0JiwgYm9vbCogd2FzRml4ZWQpOwpAQCAtNjIsOCArNTksNiBAQCBMYXlvdXRV
bml0IGJhc2VsaW5lRnJvbUZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiBib29sIGNhblVz
ZUZvckxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYpOwogdm9pZCBn
ZW5lcmF0ZUxpbmVCb3hUcmVlKFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IExheW91dCYpOwogCi1j
b25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyRm9yUG9zaXRpb24oY29uc3QgRmxvd0NvbnRlbnRz
JiwgdW5zaWduZWQpOwotCiB2b2lkIHNpbXBsZUxpbmVMYXlvdXRXaWxsQmVEZWxldGVkKGNvbnN0
IExheW91dCYpOwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmNwcAppbmRleCA5
YjhjNjBlNzJkMy4uOTBlOWUwNGRiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuY3BwCkBAIC0yNiwxODAgKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGluZUxheW91dFRyYXZlcnNhbC5oIgog
Ci0jaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgotI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNp
bmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJMaW5l
QnJlYWsuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExpbmVMYXlvdXRUcmF2
ZXJzYWwgewogCi1GbG9hdFJlY3QgVGV4dEJveDo6cmVjdCgpIGNvbnN0Ci17Ci0gICAgYXV0byBz
aW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAg
ICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOwotICAgIH07Ci0KLSAgICBhdXRv
IGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7
Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmZyYW1lUmVjdCgpOwotICAgIH07
Ci0KLSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNp
bXBsZSwgY29tcGxleCk7Ci19Ci0KLUZsb2F0UmVjdCBUZXh0Qm94Ojpsb2dpY2FsUmVjdCgpIGNv
bnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBs
ZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikucmVjdCgpOwot
ICAgIH07Ci0KLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNv
bXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmxv
Z2ljYWxGcmFtZVJlY3QoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRl
cmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi1ib29sIFRleHRC
b3g6Omhhc0h5cGhlbigpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0
Qm94SXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0aC5p
dGVyYXRvcikuaGFzSHlwaGVuKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJu
IHBhdGguaW5saW5lVGV4dEJveC0+aGFzSHlwaGVuKCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsK
LX0KLQotYm9vbCBUZXh0Qm94Ojppc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QKLXsKLSAg
ICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYpIHsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJu
IHBhdGguaW5saW5lVGV4dEJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwotICAgIH07Ci0K
LSAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBs
ZSwgY29tcGxleCk7Ci19Ci0KLWJvb2wgVGV4dEJveDo6ZGlyT3ZlcnJpZGUoKSBjb25zdAotewot
ICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikg
ewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtd
KGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0
dXJuIHBhdGguaW5saW5lVGV4dEJveC0+ZGlyT3ZlcnJpZGUoKTsKLSAgICB9OwotCi0gICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBs
ZXgpOwotfQotCi1TdHJpbmdWaWV3IFRleHRCb3g6OnRleHQoKSBjb25zdAotewotICAgIGF1dG8g
c2ltcGxlID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0g
ICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLnRleHQoKTsKLSAgICB9OwotCi0gICAgYXV0
byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkg
ewotICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhwYXRoLmlubGluZVRleHRCb3gtPnJlbmRlcmVy
KCkudGV4dCgpKS5zdWJzdHJpbmcocGF0aC5pbmxpbmVUZXh0Qm94LT5zdGFydCgpLCBwYXRoLmlu
bGluZVRleHRCb3gtPmxlbigpKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
aXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi1ib29sIFRl
eHRCb3g6OmlzTGluZUJyZWFrKCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0
IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gKCpw
YXRoLml0ZXJhdG9yKS5pc0xpbmVCcmVhaygpOwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXBsZXgg
PSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAg
IHJldHVybiBwYXRoLmlubGluZVRleHRCb3gtPmlzTGluZUJyZWFrKCk7Ci0gICAgfTsKLQotICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBj
b21wbGV4KTsKLX0KLQotdW5zaWduZWQgVGV4dEJveDo6bG9jYWxTdGFydE9mZnNldCgpIGNvbnN0
Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6OlNpbXBsZVBh
dGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikubG9jYWxTdGFydCgp
OwotICAgIH07Ci0KLSAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6
OkNvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiBwYXRoLmlubGluZVRleHRCb3gt
PnN0YXJ0KCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCku
bV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKLX0KLQotdW5zaWduZWQgVGV4dEJveDo6
bG9jYWxFbmRPZmZzZXQoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3QgVGV4
dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHJldHVybiAoKnBhdGgu
aXRlcmF0b3IpLmxvY2FsRW5kKCk7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJu
IHBhdGguaW5saW5lVGV4dEJveC0+ZW5kKCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKLX0KLQot
dW5zaWduZWQgVGV4dEJveDo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICBhdXRvIHNpbXBsZSA9IFtd
KGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgewotICAgICAgICByZXR1
cm4gKCpwYXRoLml0ZXJhdG9yKS5lbmQoKSAtICgqcGF0aC5pdGVyYXRvcikuc3RhcnQoKTsKLSAg
ICB9OwotCi0gICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgVGV4dEJveEl0ZXJhdG9yOjpDb21w
bGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94LT5sZW4o
KTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhW
YXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQotCi1ib29sIFRleHRCb3g6OmlzTGFzdE9uTGlu
ZSgpIGNvbnN0Ci17Ci0gICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCBUZXh0Qm94SXRlcmF0b3I6
OlNpbXBsZVBhdGgmIHBhdGgpIHsKLSAgICAgICAgYXV0byBuZXh0ID0gcGF0aC5pdGVyYXRvcjsK
LSAgICAgICAgKytuZXh0OwotICAgICAgICByZXR1cm4gbmV4dCA9PSBwYXRoLmVuZCB8fCAoKnBh
dGguaXRlcmF0b3IpLmxpbmVJbmRleCgpICE9ICgqbmV4dCkubGluZUluZGV4KCk7Ci0gICAgfTsK
LQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRCb3hJdGVyYXRvcjo6Q29tcGxleFBh
dGgmIHBhdGgpIHsKLSAgICAgICAgYXV0byogbmV4dCA9IHBhdGgubmV4dElubGluZVRleHRCb3hJ
blRleHRPcmRlcigpOwotICAgICAgICByZXR1cm4gIW5leHQgfHwgJnBhdGguaW5saW5lVGV4dEJv
eC0+cm9vdCgpICE9ICZuZXh0LT5yb290KCk7Ci0gICAgfTsKLQotICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKLX0KLQot
Ym9vbCBUZXh0Qm94Ojppc0xhc3QoKSBjb25zdAotewotICAgIGF1dG8gc2ltcGxlID0gW10oY29u
c3QgVGV4dEJveEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7Ci0gICAgICAgIGF1dG8gbmV4
dCA9IHBhdGguaXRlcmF0b3I7Ci0gICAgICAgICsrbmV4dDsKLSAgICAgICAgcmV0dXJuIG5leHQg
PT0gcGF0aC5lbmQ7Ci0gICAgfTsKLQotICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IFRleHRC
b3hJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0dXJuICFwYXRoLm5l
eHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKTsKLSAgICB9OwotCi0gICAgcmV0dXJuIFdURjo6
c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOwotfQot
Ci0KLWlubGluZSBjb25zdCBUZXh0Qm94SXRlcmF0b3ImIFRleHRCb3g6Oml0ZXJhdG9yKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dEJveEl0ZXJhdG9yJj4oKnRo
aXMpOwotfQotCiBUZXh0Qm94SXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvcihjb25zdCBJbmxpbmVU
ZXh0Qm94KiBpbmxpbmVUZXh0Qm94KQogICAgIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7
IGlubGluZVRleHRCb3gsIHsgfSB9KQogewpAQCAtMjIxLDcgKzUyLDcgQEAgVGV4dEJveEl0ZXJh
dG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dEluVmlzdWFsT3JkZXIoKQogICAgIH07
CiAKICAgICBhdXRvIGNvbXBsZXggPSBbXShDb21wbGV4UGF0aCYgcGF0aCkgewotICAgICAgICBw
YXRoLmlubGluZVRleHRCb3ggPSBwYXRoLmlubGluZVRleHRCb3gtPm5leHRUZXh0Qm94KCk7Cisg
ICAgICAgIHBhdGguaW5saW5lQm94ID0gcGF0aC5pbmxpbmVCb3gtPm5leHRUZXh0Qm94KCk7CiAg
ICAgfTsKIAogICAgIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4
KTsKQEAgLTIzNiw3ICs2Nyw3IEBAIGNvbnN0IElubGluZVRleHRCb3gqIFRleHRCb3hJdGVyYXRv
cjo6Q29tcGxleFBhdGg6Om5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoCiAgICAgICAgICAg
ICByZXR1cm4gc29ydGVkSW5saW5lVGV4dEJveGVzW3NvcnRlZElubGluZVRleHRCb3hJbmRleCAr
IDFdOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIGlubGluZVRl
eHRCb3gtPm5leHRUZXh0Qm94KCk7CisgICAgcmV0dXJuIGlubGluZUJveC0+bmV4dFRleHRCb3go
KTsKIH0KIAogVGV4dEJveEl0ZXJhdG9yJiBUZXh0Qm94SXRlcmF0b3I6OnRyYXZlcnNlTmV4dElu
VGV4dE9yZGVyKCkKQEAgLTI0Niw3ICs3Nyw3IEBAIFRleHRCb3hJdGVyYXRvciYgVGV4dEJveEl0
ZXJhdG9yOjp0cmF2ZXJzZU5leHRJblRleHRPcmRlcigpCiAgICAgfTsKIAogICAgIGF1dG8gY29t
cGxleCA9IFtdKENvbXBsZXhQYXRoJiBwYXRoKSB7Ci0gICAgICAgIHBhdGguaW5saW5lVGV4dEJv
eCA9IHBhdGgubmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOworICAgICAgICBwYXRoLmlu
bGluZUJveCA9IHBhdGgubmV4dElubGluZVRleHRCb3hJblRleHRPcmRlcigpOwogICAgICAgICBp
ZiAoIXBhdGguc29ydGVkSW5saW5lVGV4dEJveGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICsr
cGF0aC5zb3J0ZWRJbmxpbmVUZXh0Qm94SW5kZXg7CiAgICAgfTsKQEAgLTI2Niw3ICs5Nyw3IEBA
IGJvb2wgVGV4dEJveEl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IFRleHRCb3hJdGVyYXRvciYg
b3RoZXIpIGNvbnN0CiAgICAgfTsKIAogICAgIGF1dG8gY29tcGxleCA9IFsmXShjb25zdCBDb21w
bGV4UGF0aCYgcGF0aCkgewotICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVUZXh0Qm94ID09IFdU
Rjo6Z2V0PENvbXBsZXhQYXRoPihvdGhlci5tX3BhdGhWYXJpYW50KS5pbmxpbmVUZXh0Qm94Owor
ICAgICAgICByZXR1cm4gcGF0aC5pbmxpbmVCb3ggPT0gV1RGOjpnZXQ8Q29tcGxleFBhdGg+KG90
aGVyLm1fcGF0aFZhcmlhbnQpLmlubGluZUJveDsKICAgICB9OwogCiAgICAgcmV0dXJuIFdURjo6
c3dpdGNoT24obV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKQEAgLTI3OSw3ICsxMTAs
NyBAQCBib29sIFRleHRCb3hJdGVyYXRvcjo6YXRFbmQoKSBjb25zdAogICAgIH07CiAKICAgICBh
dXRvIGNvbXBsZXggPSBbJl0oY29uc3QgQ29tcGxleFBhdGgmIHBhdGgpIHsKLSAgICAgICAgcmV0
dXJuICFwYXRoLmlubGluZVRleHRCb3g7CisgICAgICAgIHJldHVybiAhcGF0aC5pbmxpbmVCb3g7
CiAgICAgfTsKIAogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlhbnQsIHNpbXBs
ZSwgY29tcGxleCk7CkBAIC0zMTMsNSArMTQ0LDM5IEBAIFRleHRCb3hSYW5nZSB0ZXh0Qm94ZXNG
b3IoY29uc3QgUmVuZGVyVGV4dCYgdGV4dCkKICAgICByZXR1cm4geyBmaXJzdFRleHRCb3hGb3Io
dGV4dCkgfTsKIH0KIAorRWxlbWVudEJveEl0ZXJhdG9yOjpFbGVtZW50Qm94SXRlcmF0b3IoY29u
c3QgSW5saW5lRWxlbWVudEJveCogaW5saW5lRWxlbWVudEJveCkKKyAgICA6IG1fcGF0aFZhcmlh
bnQoQ29tcGxleFBhdGggeyBpbmxpbmVFbGVtZW50Qm94IH0pCit7Cit9CitFbGVtZW50Qm94SXRl
cmF0b3I6OkVsZW1lbnRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6
SXRlcmF0b3IgaXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRv
ciBlbmQpCisgICAgOiBtX3BhdGhWYXJpYW50KFNpbXBsZVBhdGggeyBpdGVyYXRvciwgZW5kIH0p
Cit7Cit9CisKK2Jvb2wgRWxlbWVudEJveEl0ZXJhdG9yOjphdEVuZCgpIGNvbnN0Cit7CisgICAg
YXV0byBzaW1wbGUgPSBbJl0oY29uc3QgU2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1
cm4gcGF0aC5pdGVyYXRvciA9PSBwYXRoLmVuZDsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4
ID0gWyZdKGNvbnN0IENvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAhcGF0aC5p
bmxpbmVCb3g7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0aFZhcmlh
bnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK0VsZW1lbnRCb3hJdGVyYXRvciBlbGVtZW50Qm94
Rm9yKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgcmVuZGVyRWxlbWVudCkKK3sKKyAgICBpZiAoYXV0
byYgcGFyZW50ID0gKnJlbmRlckVsZW1lbnQucGFyZW50KCk7IGlzPFJlbmRlckJsb2NrRmxvdz4o
cGFyZW50KSkgeworICAgICAgICBpZiAoYXV0byogc2ltcGxlTGluZUxheW91dCA9IGRvd25jYXN0
PFJlbmRlckJsb2NrRmxvdz4ocGFyZW50KS5zaW1wbGVMaW5lTGF5b3V0KCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gcmFuZ2UgPSBzaW1wbGVMaW5lTGF5b3V0LT5ydW5SZXNvbHZlcigpLnJhbmdlRm9y
UmVuZGVyZXIocmVuZGVyRWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4geyByYW5nZS5iZWdp
bigpLCByYW5nZS5lbmQoKSB9OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEVsZW1l
bnRCb3hJdGVyYXRvciB7IHJlbmRlckVsZW1lbnQuaW5saW5lQm94V3JhcHBlcigpIH07Cit9CisK
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlv
dXRUcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRU
cmF2ZXJzYWwuaAppbmRleCBmYzkyNzgxODQ5Ny4uZjQwMWU4MzExZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsLmgKQEAgLTI2
LDYgKzI2LDkgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiSW5saW5lRWxlbWVudEJveC5oIgorI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNp
bmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5n
ZS5oPgpAQCAtMzQsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElu
bGluZVRleHRCb3g7CitjbGFzcyBSZW5kZXJMaW5lQnJlYWs7CiBjbGFzcyBSZW5kZXJUZXh0Owog
CiBuYW1lc3BhY2UgTGluZUxheW91dFRyYXZlcnNhbCB7CkBAIC00NCwxNyArNDcsMzIgQEAgY2xh
c3MgVGV4dEJveEl0ZXJhdG9yOwogCiBzdHJ1Y3QgRW5kSXRlcmF0b3IgeyB9OwogCi1jbGFzcyBU
ZXh0Qm94IHsKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPgorY2xhc3MgQm94IHsKIHB1YmxpYzoK
ICAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0OwogICAgIEZsb2F0UmVjdCBsb2dpY2FsUmVjdCgp
IGNvbnN0OwogCi0gICAgYm9vbCBoYXNIeXBoZW4oKSBjb25zdDsKICAgICBib29sIGlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSBjb25zdDsKICAgICBib29sIGRpck92ZXJyaWRlKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgQm94KCkgPSBk
ZWZhdWx0OworICAgIEJveChjb25zdCBCb3gmKSA9IGRlZmF1bHQ7CisgICAgQm94KEJveCYmKSA9
IGRlZmF1bHQ7CisgICAgfkJveCgpID0gZGVmYXVsdDsKKyAgICBCb3gmIG9wZXJhdG9yPShjb25z
dCBCb3gmKSA9IGRlZmF1bHQ7CisgICAgQm94JiBvcGVyYXRvcj0oQm94JiYpID0gZGVmYXVsdDsK
IAorICAgIGNvbnN0IEl0ZXJhdG9yJiBpdGVyYXRvcigpIGNvbnN0OworfTsKKwordGVtcGxhdGU8
Y2xhc3MgSXRlcmF0b3I+CitjbGFzcyBUZXh0Qm94IDogcHVibGljIEJveDxJdGVyYXRvcj4gewor
cHVibGljOgorICAgIGJvb2wgaGFzSHlwaGVuKCkgY29uc3Q7CiAgICAgU3RyaW5nVmlldyB0ZXh0
KCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0OwogCiAgICAgLy8gVGhlc2Ug
b2Zmc2V0cyBhcmUgcmVsYXRpdmUgdG8gdGhlIHRleHQgcmVuZGVyZXIgKG5vdCBmbG93KS4KICAg
ICB1bnNpZ25lZCBsb2NhbFN0YXJ0T2Zmc2V0KCkgY29uc3Q7CkBAIC03MiwxNiArOTAsMTUgQEAg
cHJvdGVjdGVkOgogICAgIFRleHRCb3gmIG9wZXJhdG9yPShjb25zdCBUZXh0Qm94JikgPSBkZWZh
dWx0OwogICAgIFRleHRCb3gmIG9wZXJhdG9yPShUZXh0Qm94JiYpID0gZGVmYXVsdDsKIAotcHJp
dmF0ZToKLSAgICBjb25zdCBUZXh0Qm94SXRlcmF0b3ImIGl0ZXJhdG9yKCkgY29uc3Q7CisgICAg
dXNpbmcgQm94PEl0ZXJhdG9yPjo6aXRlcmF0b3I7CiB9OwogCi1jbGFzcyBUZXh0Qm94SXRlcmF0
b3IgOiBwcml2YXRlIFRleHRCb3ggeworY2xhc3MgVGV4dEJveEl0ZXJhdG9yIDogcHJpdmF0ZSBU
ZXh0Qm94PFRleHRCb3hJdGVyYXRvcj4gewogcHVibGljOgogICAgIFRleHRCb3hJdGVyYXRvcigp
IDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IG51bGxwdHIsIHsgfSB9KSB7IH07CisKICAg
ICBleHBsaWNpdCBUZXh0Qm94SXRlcmF0b3IoY29uc3QgSW5saW5lVGV4dEJveCopOwogICAgIFRl
eHRCb3hJdGVyYXRvcihWZWN0b3I8Y29uc3QgSW5saW5lVGV4dEJveCo+JiYgc29ydGVkLCBzaXpl
X3QgaW5kZXgpOwotICAgIAogICAgIFRleHRCb3hJdGVyYXRvcihTaW1wbGVMaW5lTGF5b3V0OjpS
dW5SZXNvbHZlcjo6SXRlcmF0b3IsIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVy
YXRvciBlbmQpOwogCiAgICAgVGV4dEJveEl0ZXJhdG9yJiBvcGVyYXRvcisrKCkgeyByZXR1cm4g
dHJhdmVyc2VOZXh0SW5WaXN1YWxPcmRlcigpOyB9CkBAIC0xMDEsMTUgKzExOCwxOCBAQCBwdWJs
aWM6CiAKICAgICBib29sIGF0RW5kKCkgY29uc3Q7CiAKKyAgICB1c2luZyBCb3hUeXBlID0gVGV4
dEJveDxUZXh0Qm94SXRlcmF0b3I+OworCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBUZXh0
Qm94OworICAgIGZyaWVuZCBjbGFzcyBCb3g8VGV4dEJveEl0ZXJhdG9yPjsKKyAgICBmcmllbmQg
Y2xhc3MgVGV4dEJveDxUZXh0Qm94SXRlcmF0b3I+OwogCiAgICAgc3RydWN0IFNpbXBsZVBhdGgg
ewogICAgICAgICBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0b3IgaXRlcmF0
b3I7CiAgICAgICAgIFNpbXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBlbmQ7
CiAgICAgfTsKICAgICBzdHJ1Y3QgQ29tcGxleFBhdGggewotICAgICAgICBjb25zdCBJbmxpbmVU
ZXh0Qm94KiBpbmxpbmVUZXh0Qm94OworICAgICAgICBjb25zdCBJbmxpbmVUZXh0Qm94KiBpbmxp
bmVCb3g7CiAgICAgICAgIFZlY3Rvcjxjb25zdCBJbmxpbmVUZXh0Qm94Kj4gc29ydGVkSW5saW5l
VGV4dEJveGVzOwogICAgICAgICBzaXplX3Qgc29ydGVkSW5saW5lVGV4dEJveEluZGV4IHsgMCB9
OwogCkBAIC0xMTgsNiArMTM4LDM1IEBAIHByaXZhdGU6CiAgICAgVmFyaWFudDxTaW1wbGVQYXRo
LCBDb21wbGV4UGF0aD4gbV9wYXRoVmFyaWFudDsKIH07CiAKK2NsYXNzIEVsZW1lbnRCb3hJdGVy
YXRvciA6IHByaXZhdGUgQm94PEVsZW1lbnRCb3hJdGVyYXRvcj4geworcHVibGljOgorICAgIEVs
ZW1lbnRCb3hJdGVyYXRvcigpIDogbV9wYXRoVmFyaWFudChDb21wbGV4UGF0aCB7IG51bGxwdHIg
fSkgeyB9OworCisgICAgZXhwbGljaXQgRWxlbWVudEJveEl0ZXJhdG9yKGNvbnN0IElubGluZUVs
ZW1lbnRCb3gqKTsKKyAgICBFbGVtZW50Qm94SXRlcmF0b3IoU2ltcGxlTGluZUxheW91dDo6UnVu
UmVzb2x2ZXI6Okl0ZXJhdG9yLCBTaW1wbGVMaW5lTGF5b3V0OjpSdW5SZXNvbHZlcjo6SXRlcmF0
b3IgZW5kKTsKKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
YXRFbmQoKTsgfQorCisgICAgY29uc3QgQm94JiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAq
dGhpczsgfQorICAgIGNvbnN0IEJveCogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHRoaXM7
IH0KKworICAgIGJvb2wgYXRFbmQoKSBjb25zdDsKKworICAgIHVzaW5nIEJveFR5cGUgPSBCb3g8
RWxlbWVudEJveEl0ZXJhdG9yPjsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQm94PEVs
ZW1lbnRCb3hJdGVyYXRvcj47CisKKyAgICBzdHJ1Y3QgU2ltcGxlUGF0aCB7CisgICAgICAgIFNp
bXBsZUxpbmVMYXlvdXQ6OlJ1blJlc29sdmVyOjpJdGVyYXRvciBpdGVyYXRvcjsKKyAgICAgICAg
U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6Okl0ZXJhdG9yIGVuZDsKKyAgICB9OworICAg
IHN0cnVjdCBDb21wbGV4UGF0aCB7CisgICAgICAgIGNvbnN0IElubGluZUVsZW1lbnRCb3gqIGlu
bGluZUJveDsKKyAgICB9OworICAgIFZhcmlhbnQ8U2ltcGxlUGF0aCwgQ29tcGxleFBhdGg+IG1f
cGF0aFZhcmlhbnQ7Cit9OworCiBjbGFzcyBUZXh0Qm94UmFuZ2UgewogcHVibGljOgogICAgIFRl
eHRCb3hSYW5nZShUZXh0Qm94SXRlcmF0b3IgYmVnaW4pCkBAIC0xMzUsOCArMTg0LDE3NSBAQCBw
cml2YXRlOgogVGV4dEJveEl0ZXJhdG9yIGZpcnN0VGV4dEJveEZvcihjb25zdCBSZW5kZXJUZXh0
Jik7CiBUZXh0Qm94SXRlcmF0b3IgZmlyc3RUZXh0Qm94SW5UZXh0T3JkZXJGb3IoY29uc3QgUmVu
ZGVyVGV4dCYpOwogVGV4dEJveFJhbmdlIHRleHRCb3hlc0Zvcihjb25zdCBSZW5kZXJUZXh0Jik7
CitFbGVtZW50Qm94SXRlcmF0b3IgZWxlbWVudEJveEZvcihjb25zdCBSZW5kZXJMaW5lQnJlYWsm
KTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSBGbG9hdFJlY3QgQm94PEl0ZXJhdG9y
Pjo6cmVjdCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJ
dGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0ZXJh
dG9yKS5yZWN0KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNvbnN0IHR5cGVu
YW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gcGF0aC5p
bmxpbmVCb3gtPmZyYW1lUmVjdCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgRmxvYXRSZWN0IEJveDxJdGVyYXRvcj46OmxvZ2lj
YWxSZWN0KCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0
ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0
b3IpLnJlY3QoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5h
bWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlu
bGluZUJveC0+bG9naWNhbEZyYW1lUmVjdCgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgYm9vbCBCb3g8SXRlcmF0b3I+Ojppc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0
IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJikgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6
OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiBwYXRoLmlubGluZUJveC0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpOworICAgIH07CisKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9CisKK3RlbXBs
YXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgYm9vbCBCb3g8SXRlcmF0b3I+OjpkaXJPdmVycmlk
ZSgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRv
cjo6U2ltcGxlUGF0aCYpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH07CiAKLWlubGlu
ZSBib29sIGhhc1RleHRCb3hlcyhjb25zdCBSZW5kZXJUZXh0JiB0ZXh0KSB7IHJldHVybiAhZmly
c3RUZXh0Qm94Rm9yKHRleHQpLmF0RW5kKCk7IH0KKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25z
dCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJu
IHBhdGguaW5saW5lQm94LT5kaXJPdmVycmlkZSgpOworICAgIH07CisKKyAgICByZXR1cm4gV1RG
Ojpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgYm9vbCBCb3g8SXRlcmF0b3I+Ojpp
c0xpbmVCcmVhaygpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFt
ZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0
ZXJhdG9yKS5pc0xpbmVCcmVhaygpOworICAgIH07CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShj
b25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0
dXJuIHBhdGguaW5saW5lQm94LT5pc0xpbmVCcmVhaygpOworICAgIH07CisKKyAgICByZXR1cm4g
V1RGOjpzd2l0Y2hPbihpdGVyYXRvcigpLm1fcGF0aFZhcmlhbnQsIHNpbXBsZSwgY29tcGxleCk7
Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBpbmxpbmUgY29uc3QgSXRlcmF0b3ImIEJv
eDxJdGVyYXRvcj46Oml0ZXJhdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Y29uc3QgSXRlcmF0b3ImPigqdGhpcyk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPiBp
bmxpbmUgYm9vbCBUZXh0Qm94PEl0ZXJhdG9yPjo6aGFzSHlwaGVuKCkgY29uc3QKK3sKKyAgICBh
dXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRo
KSB7CisgICAgICAgIHJldHVybiAoKnBhdGguaXRlcmF0b3IpLmhhc0h5cGhlbigpOworICAgIH07
CisKKyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxl
eFBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94LT5oYXNIeXBoZW4o
KTsKKyAgICB9OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhW
YXJpYW50LCBzaW1wbGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4g
aW5saW5lIFN0cmluZ1ZpZXcgVGV4dEJveDxJdGVyYXRvcj46OnRleHQoKSBjb25zdAoreworICAg
IGF1dG8gc2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBh
dGgpIHsKKyAgICAgICAgcmV0dXJuICgqcGF0aC5pdGVyYXRvcikudGV4dCgpOworICAgIH07CisK
KyAgICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBh
dGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcocGF0aC5pbmxpbmVCb3gtPnJl
bmRlcmVyKCkudGV4dCgpKS5zdWJzdHJpbmcocGF0aC5pbmxpbmVCb3gtPnN0YXJ0KCksIHBhdGgu
aW5saW5lQm94LT5sZW4oKSk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0
ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVtcGxhdGU8
Y2xhc3MgSXRlcmF0b3I+IGlubGluZSB1bnNpZ25lZCBUZXh0Qm94PEl0ZXJhdG9yPjo6bG9jYWxT
dGFydE9mZnNldCgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1wbGUgPSBbXShjb25zdCB0eXBlbmFt
ZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAgICAgICByZXR1cm4gKCpwYXRoLml0
ZXJhdG9yKS5sb2NhbFN0YXJ0KCk7CisgICAgfTsKKworICAgIGF1dG8gY29tcGxleCA9IFtdKGNv
bnN0IHR5cGVuYW1lIEl0ZXJhdG9yOjpDb21wbGV4UGF0aCYgcGF0aCkgeworICAgICAgICByZXR1
cm4gcGF0aC5pbmxpbmVCb3gtPnN0YXJ0KCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwor
dGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSB1bnNpZ25lZCBUZXh0Qm94PEl0ZXJhdG9y
Pjo6bG9jYWxFbmRPZmZzZXQoKSBjb25zdAoreworICAgIGF1dG8gc2ltcGxlID0gW10oY29uc3Qg
dHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuICgq
cGF0aC5pdGVyYXRvcikubG9jYWxFbmQoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0g
W10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAg
IHJldHVybiBwYXRoLmlubGluZUJveC0+ZW5kKCk7CisgICAgfTsKKworICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlubGluZSB1bnNpZ25lZCBUZXh0Qm94PEl0ZXJh
dG9yPjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICBhdXRvIHNpbXBsZSA9IFtdKGNvbnN0IHR5cGVu
YW1lIEl0ZXJhdG9yOjpTaW1wbGVQYXRoJiBwYXRoKSB7CisgICAgICAgIHJldHVybiAoKnBhdGgu
aXRlcmF0b3IpLmVuZCgpIC0gKCpwYXRoLml0ZXJhdG9yKS5zdGFydCgpOworICAgIH07CisKKyAg
ICBhdXRvIGNvbXBsZXggPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6Q29tcGxleFBhdGgm
IHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaW5saW5lQm94LT5sZW4oKTsKKyAgICB9Owor
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oaXRlcmF0b3IoKS5tX3BhdGhWYXJpYW50LCBzaW1w
bGUsIGNvbXBsZXgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4gaW5saW5lIGJvb2wg
VGV4dEJveDxJdGVyYXRvcj46OmlzTGFzdE9uTGluZSgpIGNvbnN0Cit7CisgICAgYXV0byBzaW1w
bGUgPSBbXShjb25zdCB0eXBlbmFtZSBJdGVyYXRvcjo6U2ltcGxlUGF0aCYgcGF0aCkgeworICAg
ICAgICBhdXRvIG5leHQgPSBwYXRoLml0ZXJhdG9yOworICAgICAgICArK25leHQ7CisgICAgICAg
IHJldHVybiBuZXh0ID09IHBhdGguZW5kIHx8ICgqcGF0aC5pdGVyYXRvcikubGluZUluZGV4KCkg
IT0gKCpuZXh0KS5saW5lSW5kZXgoKTsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4ID0gW10o
Y29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAgICAgIGF1
dG8qIG5leHQgPSBwYXRoLm5leHRJbmxpbmVUZXh0Qm94SW5UZXh0T3JkZXIoKTsKKyAgICAgICAg
cmV0dXJuICFuZXh0IHx8ICZwYXRoLmlubGluZUJveC0+cm9vdCgpICE9ICZuZXh0LT5yb290KCk7
CisgICAgfTsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFy
aWFudCwgc2ltcGxlLCBjb21wbGV4KTsKK30KKwordGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+IGlu
bGluZSBib29sIFRleHRCb3g8SXRlcmF0b3I+Ojppc0xhc3QoKSBjb25zdAoreworICAgIGF1dG8g
c2ltcGxlID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OlNpbXBsZVBhdGgmIHBhdGgpIHsK
KyAgICAgICAgYXV0byBuZXh0ID0gcGF0aC5pdGVyYXRvcjsKKyAgICAgICAgKytuZXh0OworICAg
ICAgICByZXR1cm4gbmV4dCA9PSBwYXRoLmVuZDsKKyAgICB9OworCisgICAgYXV0byBjb21wbGV4
ID0gW10oY29uc3QgdHlwZW5hbWUgSXRlcmF0b3I6OkNvbXBsZXhQYXRoJiBwYXRoKSB7CisgICAg
ICAgIHJldHVybiAhcGF0aC5uZXh0SW5saW5lVGV4dEJveEluVGV4dE9yZGVyKCk7CisgICAgfTsK
KworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGl0ZXJhdG9yKCkubV9wYXRoVmFyaWFudCwgc2lt
cGxlLCBjb21wbGV4KTsKK30KIAogfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>