<?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>190698</bug_id>
          
          <creation_ts>2018-10-17 21:26:43 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add generic inline line breaker</short_desc>
          <delta_ts>2018-10-19 09:33:34 -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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</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>1470471</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-17 21:26:43 -0700</bug_when>
    <thetext>Break inline runs for any type of inline content (replaced, text, float, inline-block etc)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470475</commentid>
    <comment_count>1</comment_count>
      <attachid>352685</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-10-17 21:41:13 -0700</bug_when>
    <thetext>Created attachment 352685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470878</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-19 09:31:25 -0700</bug_when>
    <thetext>Committed r237287: &lt;https://trac.webkit.org/changeset/237287&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1470880</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-19 09:33:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/45407217&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352685</attachid>
            <date>2018-10-17 21:41:13 -0700</date>
            <delta_ts>2018-10-19 08:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>27841</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NTE1NGJiNTM1ZS4uNDA5ZmYyMWRkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOC0xMC0xNyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gQWRkIGdlbmVyaWMgaW5saW5lIGxpbmUgYnJlYWtlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjk4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5saW5lTGluZUJy
ZWFrZXIgdGFrZXMgdGhlIGlubGluZSBydW5zIGFuZCBhcHBsaWVzIHRoZSBhcHByb3ByaWF0ZSBs
aW5lIGJyZWFraW5nIHJ1bGVzIG9uIHRoZW0uIAorICAgICAgICBJbmxpbmVSdW5Qcm92aWRlcjo6
UnVuIG9iamVjdHMgLT4KKworICAgICAgICAgICAgImZvb2JhciIKKyAgICAgICAgICAgIDxpbWFn
ZSBib3g+CisgICAgICAgICAgICAiaGVsbG8iCisgICAgICAgICAgICAiICIKKyAgICAgICAgICAg
ICJ3b3JsZCIKKworICAgICAgICBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuIC0+CisKKyAgICAgICAg
ICAgIGZvb2JhcjxpbWFnZSBib3g+CisgICAgICAgICAgICBoZWxsbyB3b3JsZAorCisgICAgICAg
IElubGluZUxpbmVCcmVha2VyOjpSdW4gYWxzbyBjb250YWlucyBpbmZvcm1hdGlvbiB3aGV0aGVy
IHRoZSBydW4gaXMgYXQgdGhlIGJlZ2lubmluZyBvciBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9MYXlvdXRDb250ZXh0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6Omhhc0Rpc3BsYXlCb3ggY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxpbmVCcmVha2VyOjpJbmxp
bmVMaW5lQnJlYWtlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUxpbmVCcmVh
a2VyOjpuZXh0TGF5b3V0UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGlu
ZUJyZWFrZXI6OmlzQXRDb250ZW50RW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lTGluZUJyZWFrZXI6OmxpbmVCcmVha2luZ0JlaGF2aW9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lTGluZUJyZWFrZXI6OnJ1bldpZHRoIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGluZUJyZWFrZXI6OnNwbGl0UnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGluZUJyZWFrZXI6OmFkanVzdFNwbGl0UG9zaXRp
b25XaXRoSHlwaGVuYXRpb24gY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCcmVha2VyLmg6IEFkZGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL3RleHRsYXlvdXQvVGV4dFV0aWwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6VGV4dFV0aWw6OlRleHRVdGlsKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VGV4dFV0aWw6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGV4
dFV0aWw6Omh5cGhlblBvc2l0aW9uQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VGV4dFV0aWw6OnRleHRXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRleHRVdGlsOjpmaXhlZFBpdGNoV2lkdGggY29uc3QpOgorICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQvVGV4dFV0aWwuaDogQWRkZWQuCisgICAgICAgICog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcDoKKwogMjAxOC0xMC0xNyAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIGdlbmVyaWMg
aW5saW5lIHJ1biBnZW5lcmF0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMxOTVhZmJjNmRkLi43NGRj
MDA4MTBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEyNTMsOCArMTI1MywxMCBAQCBsYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nU3RhdGUuY3BwCiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5jcHAKIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdTdGF0ZS5jcHAKIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUludmFsaWRhdGlvbi5j
cHAKK2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcAogbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuUHJvdmlkZXIuY3BwCiBsYXlvdXQvaW5saW5lZm9y
bWF0dGluZy90ZXh0bGF5b3V0L1RleHRDb250ZW50UHJvdmlkZXIuY3BwCitsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy90ZXh0bGF5b3V0L1RleHRVdGlsLmNwcAogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvdGV4dGxheW91dC9zaW1wbGUvU2ltcGxlVGV4dFJ1bkdlbmVyYXRvci5jcHAKIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQvc2ltcGxlL1NpbXBsZUxpbmVCcmVha2VyLmNwcAog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0QmxvY2tDb250YWluZXIuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDIzMDQ0OWFk
ZjQuLjZiNTliN2Q0OGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDA1LDYgKzIwMDUsOCBAQAogCQk2Rjk5NUEzODFBNzA4
MzM3MDBBNzM1RjQgLyogSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Rjk5NUEyRTFBNzA4MzM3MDBBNzM1RjQg
LyogSlNXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggKi87IH07CiAJCTZGOTk1QTNBMUE3MDgzMzcw
MEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTMwMUE3MDgzMzcwMEE3MzVGNCAvKiBK
U1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNkZBNDQ1NEU4OThGMkZDMTY4QkMz
OEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5MDIyQiAvKiBKU0JlZm9yZVVu
bG9hZEV2ZW50LmggKi87IH07CisJCTZGQjExQjVDMjE3ODNGRDAwMEUyQTU3NCAvKiBUZXh0VXRp
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCMTFC
NTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8qIElu
bGluZUxpbmVCcmVha2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RkUxOTgxNTIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkU3Q0ZB
MjIxNzdFRUYyMDA1QjE1NzMgLyogSW5saW5lSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTczIC8qIElubGlu
ZUl0ZW0uaCAqLzsgfTsKIAkJNkZFN0NGQTQyMTc3RUYxMDAwNUIxNTczIC8qIExheW91dExpbmVC
cmVha0JveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkZFN0NGQTMyMTc3RUYxMDAwNUIxNTczIC8qIExheW91dExpbmVCcmVha0JveC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGRkRDNDQyMjEyRUZG
MTcwMEE5Q0E5MSAvKiBGbG9hdEF2b2lkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZGRkRDNDQwMjEyRUZGMTYwMEE5Q0E5MSAvKiBGbG9hdEF2b2lk
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA4OSwxMCArOTA5MSwxNCBAQAogCQk2Rjk5NUEyRTFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
Rjk5NUEyRjFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGOTk1QTMwMUE3MDgzMzcw
MEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTZGQjExQjU5MjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0VXRpbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VXRpbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2RkIxMUI1QjIxNzgzRkNGMDBFMkE1NzQgLyogVGV4dFV0aWwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFV0aWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkJCODYwNTIwQjQ2NEI2MDBEQUQ5MzggLyogRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZDRDE5
QzEyMEY5NzI3QTAwRkQ0NTI5IC8qIFRleHRDb250ZW50UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dENvbnRlbnRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
RkNEMTlDNzIwRjk3MjdEMDBGRDQ1MjkgLyogVGV4dENvbnRlbnRQcm92aWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXh0Q29udGVudFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkZDRjk3NTIyMEYwMkIzNTAwMjE0OTYwIC8qIFJ1bnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUnVucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RkUxOTgxMzIxNzgz
OTdCMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lTGluZUJyZWFrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RkUxOTgxNTIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lTGluZUJyZWFr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZUJyZWFrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZFN0NGQTAyMTc3RUVGMTAwNUIxNTcz
IC8qIElubGluZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5l
SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkU3Q0ZBMzIxNzdFRjEwMDA1
QjE1NzMgLyogTGF5b3V0TGluZUJyZWFrQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExheW91dExpbmVCcmVha0JveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RkU3Q0ZBNTIxNzdGMDY5MDA1QjE1NzMgLyogTGF5b3V0TGluZUJyZWFrQm94LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dExpbmVCcmVha0JveC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjAxOCw2ICsxNjAyNCw4IEBACiAJCTEx
NUNGQTlBMjA4QkMxNDAwMDFFNjk5MSAvKiBpbmxpbmVmb3JtYXR0aW5nICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2RkUxOTgxMzIxNzgzOTdCMDA0NDZG
MDggLyogSW5saW5lTGluZUJyZWFrZXIuY3BwICovLAorCQkJCTZGRTE5ODE1MjE3ODM5N0MwMDQ0
NkYwOCAvKiBJbmxpbmVMaW5lQnJlYWtlci5oICovLAogCQkJCTZGRTdEREREMjBFQzZFOEIwMDhC
NUI0RSAvKiB0ZXh0bGF5b3V0ICovLAogCQkJCTZGN0NBM0M5MjA4QzJCMkUwMDJGMjlBQiAvKiBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJNkY3Q0EzQzgyMDhDMkIyRTAwMkYy
OUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggKi8sCkBAIC0xOTg5OCw2ICsxOTkwNiw4
IEBACiAJCTZGRTdEREREMjBFQzZFOEIwMDhCNUI0RSAvKiB0ZXh0bGF5b3V0ICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk2RkIxMUI1QjIxNzgzRkNGMDBF
MkE1NzQgLyogVGV4dFV0aWwuY3BwICovLAorCQkJCTZGQjExQjU5MjE3ODNGQ0YwMEUyQTU3NCAv
KiBUZXh0VXRpbC5oICovLAogCQkJCTZGMTNBMTIzMjBGOTk0OUMwMDFDMDI1QSAvKiBzaW1wbGUg
Ki8sCiAJCQkJNkZDRjk3NTIyMEYwMkIzNTAwMjE0OTYwIC8qIFJ1bnMuaCAqLywKIAkJCQk2RkNE
MTlDNzIwRjk3MjdEMDBGRDQ1MjkgLyogVGV4dENvbnRlbnRQcm92aWRlci5jcHAgKi8sCkBAIC0y
OTQxNiw2ICsyOTQyNiw3IEBACiAJCQkJQTg0RUJEODMwQ0I4Qzk3NzAwMDc5NjA5IC8qIEpTU3R5
bGVTaGVldExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MUYyMTg5MURBNTdDNTQwMDVDOUVG
RCAvKiBKU1N1YnRsZUNyeXB0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIwMTExMDgwQUI3NzQw
NTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQjExQjVD
MjE3ODNGRDAwMEUyQTU3NCAvKiBUZXh0VXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjREOTEy
OTIxM0NBOTUxRTAwRDIxOTE1IC8qIEpTU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NTE1RUM5MjBEOTcyM0ZGMDA2M0Q0OUEgLyogSlNTVkdBbHRHbHlwaEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI0RDkxMjk2MTNDQTk1NjEwMEQyMTkxNSAvKiBKU1NW
R0FsdEdseXBoSXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzAwNjQsNiArMzAwNzUs
NyBAQAogCQkJCUE4OERENDg3MEI0NjI5QTMwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJENTAwMkZDMUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEZBNkU1RDBFNENGREVEMDBENUNGNDkgLyog
UGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZFMTk4MTcyMTc4Mzk3QzAwNDQ2RjA4IC8q
IElubGluZUxpbmVCcmVha2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzk3MTBEMDBCRjIy
MDA3MUI3ODIgLyogUGF0dGVybkF0dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNjc3
RTA4MjEzRTAyNEMwMEEwOEMzNCAvKiBQYXllckVycm9yRmllbGRzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQThBNjQzQTFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVudC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaAppbmRleCBlNmY4ZjNiYWUyNy4uYzU4
NzVlYzhhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaApAQCAtODIsNiAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgRm9ybWF0dGluZ1N0YXRlJiBjcmVhdGVGb3JtYXR0aW5nU3Rh
dGVGb3JGb3JtYXR0aW5nUm9vdElmTmVlZGVkKGNvbnN0IEJveCYgZm9ybWF0dGluZ1Jvb3QpOwog
CiAgICAgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5
b3V0Qm94KSBjb25zdDsKKyAgICBib29sIGhhc0Rpc3BsYXlCb3goY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0VG9EaXNwbGF5Qm94LmNvbnRhaW5zKCZsYXlvdXRC
b3gpOyB9CiAKICAgICBib29sIGluUXVpcmtzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5RdWly
a3NNb2RlOyB9CiAgICAgLy8gRm9yIHRlc3RpbmcgcHVycG9zZXMgb25seQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJy
ZWFrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMmRkY2Q0
YzE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcApAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmxpbmVMaW5lQnJlYWtlci5oIgor
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJGb250
Q2FzY2FkZS5oIgorI2luY2x1ZGUgIkh5cGhlbmF0aW9uLmgiCisjaW5jbHVkZSAiSW5saW5lUnVu
UHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKElubGluZUxpbmVCcmVha2VyKTsKKworSW5saW5lTGluZUJyZWFrZXI6OklubGluZUxp
bmVCcmVha2VyKGNvbnN0IExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IElubGlu
ZUNvbnRlbnQmIGlubGluZUNvbnRlbnQsIGNvbnN0IElubGluZVJ1blByb3ZpZGVyOjpSdW5zJiBp
bmxpbmVSdW5zKQorICAgIDogbV9sYXlvdXRDb250ZXh0KGxheW91dENvbnRleHQpCisgICAgLCBt
X3RleHRVdGlsKGlubGluZUNvbnRlbnQpCisgICAgLCBtX2lubGluZVJ1bnMoaW5saW5lUnVucykK
K3sKK30KKworc3RkOjpvcHRpb25hbDxJbmxpbmVMaW5lQnJlYWtlcjo6UnVuPiBJbmxpbmVMaW5l
QnJlYWtlcjo6bmV4dExheW91dFJ1bihMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCwgTGF5
b3V0VW5pdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBsaW5lSXNFbXB0eSkKK3sKKyAgICBpZiAoaXNB
dENvbnRlbnRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIElubGlu
ZVJ1blByb3ZpZGVyOjpSdW4gY3VycmVudElubGluZVJ1biA9IG1faW5saW5lUnVuc1ttX2N1cnJl
bnRSdW5JbmRleF07CisgICAgLy8gQWRqdXN0IHRoZSBjdXJyZW50IHJ1biBpZiBpdCBpcyBzcGxp
dCBtaWR3b3JkLgorICAgIGlmIChtX3NwbGl0UG9zaXRpb24pIHsKKyAgICAgICAgQVNTRVJUKGN1
cnJlbnRJbmxpbmVSdW4uaXNUZXh0KCkpOworICAgICAgICBjdXJyZW50SW5saW5lUnVuLnRleHRD
b250ZXh0KCktPnNldFN0YXJ0KCptX3NwbGl0UG9zaXRpb24pOworICAgICAgICBtX3NwbGl0UG9z
aXRpb24gPSBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgaWYgKGN1cnJlbnRJbmxpbmVSdW4u
aXNMaW5lQnJlYWsoKSkgeworICAgICAgICArK21fY3VycmVudFJ1bkluZGV4OworICAgICAgICBy
ZXR1cm4gUnVuIHsgUnVuOjpQb3NpdGlvbjo6TGluZUVuZCwgY3VycmVudElubGluZVJ1biwgMCB9
OworICAgIH0KKworICAgIGF1dG8gY29udGVudFdpZHRoID0gcnVuV2lkdGgoY3VycmVudElubGlu
ZVJ1biwgY29udGVudExvZ2ljYWxMZWZ0KTsKKyAgICAvLyAxLiBQbGVudHkgb2Ygc3BhY2UgbGVm
dC4KKyAgICBpZiAoY29udGVudFdpZHRoIDw9IGF2YWlsYWJsZVdpZHRoKSB7CisgICAgICAgICsr
bV9jdXJyZW50UnVuSW5kZXg7CisgICAgICAgIHJldHVybiBSdW4geyBsaW5lSXNFbXB0eSA/IFJ1
bjo6UG9zaXRpb246OkxpbmVCZWdpbiA6IFJ1bjo6UG9zaXRpb246OlVuZGV0ZXJtaW5lZCwgY3Vy
cmVudElubGluZVJ1biwgY29udGVudFdpZHRoIH07CisgICAgfQorCisgICAgLy8gMi4gTm8gc3Bh
Y2UgbGVmdCB3aGF0c29ldmVyLgorICAgIGlmIChhdmFpbGFibGVXaWR0aCA8PSAwKSB7CisgICAg
ICAgICsrbV9jdXJyZW50UnVuSW5kZXg7CisgICAgICAgIHJldHVybiBSdW4geyBSdW46OlBvc2l0
aW9uOjpMaW5lQmVnaW4sIGN1cnJlbnRJbmxpbmVSdW4sIGNvbnRlbnRXaWR0aCB9OworICAgIH0K
KworICAgIC8vIDMuIFNvbWUgc3BhY2UgbGVmdC4gTGV0J3MgZmluZCBvdXQgd2hhdCB3ZSBuZWVk
IHRvIGRvIHdpdGggdGhpcyBydW4uCisgICAgYXV0byBicmVha2luZ0JlaGF2aW9yID0gbGluZUJy
ZWFraW5nQmVoYXZpb3IoY3VycmVudElubGluZVJ1biwgbGluZUlzRW1wdHkpOworICAgIGlmIChi
cmVha2luZ0JlaGF2aW9yID09IExpbmVCcmVha2luZ0JlaGF2aW9yOjpLZWVwKSB7CisgICAgICAg
ICsrbV9jdXJyZW50UnVuSW5kZXg7CisgICAgICAgIHJldHVybiBSdW4geyBsaW5lSXNFbXB0eSA/
IFJ1bjo6UG9zaXRpb246OkxpbmVCZWdpbiA6IFJ1bjo6UG9zaXRpb246OlVuZGV0ZXJtaW5lZCwg
Y3VycmVudElubGluZVJ1biwgY29udGVudFdpZHRoIH07CisgICAgfQorCisgICAgaWYgKGJyZWFr
aW5nQmVoYXZpb3IgPT0gTGluZUJyZWFraW5nQmVoYXZpb3I6OldyYXBUb05leHRMaW5lKSB7Cisg
ICAgICAgICsrbV9jdXJyZW50UnVuSW5kZXg7CisgICAgICAgIHJldHVybiBSdW4geyBSdW46OlBv
c2l0aW9uOjpMaW5lQmVnaW4sIGN1cnJlbnRJbmxpbmVSdW4sIGNvbnRlbnRXaWR0aCB9OworICAg
IH0KKworICAgIEFTU0VSVChicmVha2luZ0JlaGF2aW9yID09IExpbmVCcmVha2luZ0JlaGF2aW9y
OjpCcmVhayk7CisgICAgLy8gU3BsaXQgY29udGVudC4KKyAgICByZXR1cm4gc3BsaXRSdW4oY3Vy
cmVudElubGluZVJ1biwgY29udGVudExvZ2ljYWxMZWZ0LCBhdmFpbGFibGVXaWR0aCwgbGluZUlz
RW1wdHkpOworfQorCitib29sIElubGluZUxpbmVCcmVha2VyOjppc0F0Q29udGVudEVuZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY3VycmVudFJ1bkluZGV4ID09IG1faW5saW5lUnVucy5zaXpl
KCk7Cit9CisKK0lubGluZUxpbmVCcmVha2VyOjpMaW5lQnJlYWtpbmdCZWhhdmlvciBJbmxpbmVM
aW5lQnJlYWtlcjo6bGluZUJyZWFraW5nQmVoYXZpb3IoY29uc3QgSW5saW5lUnVuUHJvdmlkZXI6
OlJ1biYgaW5saW5lUnVuLCBib29sIGxpbmVJc0VtcHR5KQoreworICAgIC8vIExpbmUgYnJlYWtp
bmcgYmVoYXZpb3VyOgorICAgIC8vIDEuIFdoaXRlc2FwY2UgY29sbGFwc2Ugb24gLT4gcHVzaCB3
aGl0ZXNwYWNlIHRvIG5leHQgbGluZS4KKyAgICAvLyAyLiBXaGl0ZXNwYWNlIGNvbGxhcHNlIG9m
ZiAtPiB3aGl0ZXNwYWNlIGlzIHNwbGl0IHdoZXJlIHBvc3NpYmxlLgorICAgIC8vIDMuIE5vbi13
aGl0ZXNwYWNlIC0+IGZpcnN0IHJ1biBvbiB0aGUgbGluZSAtPiBlaXRoZXIgc3BsaXQgb3Iga2Vw
dCBvbiB0aGUgbGluZS4gKGRlcGVuZHMgb24gb3ZlcmZsb3ctd3JhcCkKKyAgICAvLyA0LiBOb24t
d2hpdGVzcGFjZSAtPiBhbHJlYWR5IGNvbnRlbnQgb24gdGhlIGxpbmUgLT4gZWl0aGVyIGdldHMg
c3BsaXQgKHdvcmQtYnJlYWs6IGJyZWFrLWFsbCkgb3IgZ2V0cyBwdXNoZWQgdG8gdGhlIG5leHQg
bGluZS4KKyAgICAvLyAoSHlwaGVuYXRlIHdoZW4gcG9zc2libGUpCisgICAgLy8gNS4gTm9uLXRl
eHQgdHlwZSAtPiBuZXh0IGxpbmUKKyAgICBhdXRvJiBzdHlsZSA9IGlubGluZVJ1bi5zdHlsZSgp
OworCisgICAgaWYgKGlubGluZVJ1bi5pc1doaXRlc3BhY2UoKSkKKyAgICAgICAgcmV0dXJuIHN0
eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpID8gTGluZUJyZWFraW5nQmVoYXZpb3I6OldyYXBUb05l
eHRMaW5lIDogTGluZUJyZWFraW5nQmVoYXZpb3I6OkJyZWFrOworCisgICAgaWYgKGlubGluZVJ1
bi5pc05vbldoaXRlc3BhY2UoKSkgeworICAgICAgICBhdXRvIHNob3VsZEh5cGVuYXRlID0gIW1f
aHlwaGVuYXRpb25Jc0Rpc2FibGVkICYmIHN0eWxlLmh5cGhlbnMoKSA9PSBIeXBoZW5zOjpBdXRv
ICYmIGNhbkh5cGhlbmF0ZShzdHlsZS5sb2NhbGUoKSk7CisgICAgICAgIGlmIChzaG91bGRIeXBl
bmF0ZSkKKyAgICAgICAgICAgIHJldHVybiBMaW5lQnJlYWtpbmdCZWhhdmlvcjo6QnJlYWs7CisK
KyAgICAgICAgaWYgKHN0eWxlLmF1dG9XcmFwKCkpIHsKKyAgICAgICAgICAgIC8vIEJyZWFrIGFu
eSB3b3JkCisgICAgICAgICAgICBpZiAoc3R5bGUud29yZEJyZWFrKCkgPT0gV29yZEJyZWFrOjpC
cmVha0FsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTGluZUJyZWFraW5nQmVoYXZpb3I6OkJy
ZWFrOworCisgICAgICAgICAgICAvLyBCcmVhayBmaXJzdCBydW4gb24gbGluZS4KKyAgICAgICAg
ICAgIGlmIChsaW5lSXNFbXB0eSAmJiBzdHlsZS5icmVha1dvcmRzKCkgJiYgc3R5bGUucHJlc2Vy
dmVOZXdsaW5lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIExpbmVCcmVha2luZ0JlaGF2aW9y
OjpCcmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vbi1icmVha2FibGUgbm9uLXdoaXRl
c3BhY2UgcnVuLgorICAgICAgICByZXR1cm4gbGluZUlzRW1wdHkgPyBMaW5lQnJlYWtpbmdCZWhh
dmlvcjo6S2VlcCA6IExpbmVCcmVha2luZ0JlaGF2aW9yOjpXcmFwVG9OZXh0TGluZTsKKyAgICB9
CisKKyAgICBBU1NFUlQoaW5saW5lUnVuLmlzQm94KCkgfHwgaW5saW5lUnVuLmlzRmxvYXQoKSk7
CisgICAgLy8gTm9uLXRleHQgaW5saW5lIHJ1bnMuCisgICAgcmV0dXJuIExpbmVCcmVha2luZ0Jl
aGF2aW9yOjpXcmFwVG9OZXh0TGluZTsKK30KKworTGF5b3V0VW5pdCBJbmxpbmVMaW5lQnJlYWtl
cjo6cnVuV2lkdGgoY29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biYgaW5saW5lUnVuLCBMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIWlubGluZVJ1
bi5pc0xpbmVCcmVhaygpKTsKKworICAgIGlmIChpbmxpbmVSdW4uaXNUZXh0KCkpIHsKKyAgICAg
ICAgYXV0byB0ZXh0Q29udGV4dCA9IGlubGluZVJ1bi50ZXh0Q29udGV4dCgpOworICAgICAgICBy
ZXR1cm4gbV90ZXh0VXRpbC53aWR0aChpbmxpbmVSdW4uaW5saW5lSXRlbSgpLCB0ZXh0Q29udGV4
dC0+c3RhcnQoKSwgdGV4dENvbnRleHQtPmlzQ29sbGFwc2VkKCkgPyAxIDogdGV4dENvbnRleHQt
Pmxlbmd0aCgpLCBjb250ZW50TG9naWNhbExlZnQpOworICAgIH0KKworICAgIEFTU0VSVChpbmxp
bmVSdW4uaXNCb3goKSB8fCBpbmxpbmVSdW4uaXNGbG9hdCgpKTsKKyAgICBhdXRvJiBsYXlvdXRC
b3ggPSBpbmxpbmVSdW4uaW5saW5lSXRlbSgpLmxheW91dEJveCgpOworICAgIEFTU0VSVChtX2xh
eW91dENvbnRleHQuaGFzRGlzcGxheUJveChsYXlvdXRCb3gpKTsKKyAgICBhdXRvJiBkaXNwbGF5
Qm94ID0gbV9sYXlvdXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
KyAgICByZXR1cm4gZGlzcGxheUJveC53aWR0aCgpOworfQorCitJbmxpbmVMaW5lQnJlYWtlcjo6
UnVuIElubGluZUxpbmVCcmVha2VyOjpzcGxpdFJ1bihjb25zdCBJbmxpbmVSdW5Qcm92aWRlcjo6
UnVuJiBpbmxpbmVSdW4sIExheW91dFVuaXQsIExheW91dFVuaXQsIGJvb2wpCit7CisgICAgcmV0
dXJuIHsgUnVuOjpQb3NpdGlvbjo6VW5kZXRlcm1pbmVkLCBpbmxpbmVSdW4sIHsgfSB9OworfQor
CitzdGQ6Om9wdGlvbmFsPEl0ZW1Qb3NpdGlvbj4gSW5saW5lTGluZUJyZWFrZXI6OmFkanVzdFNw
bGl0UG9zaXRpb25XaXRoSHlwaGVuYXRpb24oY29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biYs
IEl0ZW1Qb3NpdGlvbiwgTGF5b3V0VW5pdCwgTGF5b3V0VW5pdCwgYm9vbCkgY29uc3QKK3sKKyAg
ICByZXR1cm4geyB9OworfQorCit9Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZjg0ZjEwOTFkMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCcmVha2VyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxp
bmVSdW5Qcm92aWRlci5oIgorI2luY2x1ZGUgIlRleHRVdGlsLmgiCisjaW5jbHVkZSA8d3RmL0lz
b01hbGxvYy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKwor
Y2xhc3MgSW5saW5lTGluZUJyZWFrZXIgeworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSW5s
aW5lTGluZUJyZWFrZXIpOworcHVibGljOgorICAgIElubGluZUxpbmVCcmVha2VyKGNvbnN0IExh
eW91dENvbnRleHQmLCBjb25zdCBJbmxpbmVDb250ZW50JiwgY29uc3QgSW5saW5lUnVuUHJvdmlk
ZXI6OlJ1bnMmKTsKKworICAgIHN0cnVjdCBSdW4geworICAgICAgICBlbnVtIGNsYXNzIFBvc2l0
aW9uIHsgVW5kZXRlcm1pbmVkLCBMaW5lQmVnaW4sIExpbmVFbmQgfTsKKyAgICAgICAgUG9zaXRp
b24gcG9zaXRpb247CisgICAgICAgIElubGluZVJ1blByb3ZpZGVyOjpSdW4gaW5saW5lUnVuOwor
ICAgICAgICBMYXlvdXRVbml0IHdpZHRoOworICAgIH07CisgICAgc3RkOjpvcHRpb25hbDxSdW4+
IG5leHRMYXlvdXRSdW4oTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIExheW91dFVuaXQg
YXZhaWxhYmxlV2lkdGgsIGJvb2wgbGluZUlzRW1wdHkpOworCitwcml2YXRlOgorICAgIGVudW0g
Y2xhc3MgTGluZUJyZWFraW5nQmVoYXZpb3IgeyBLZWVwLCBCcmVhaywgV3JhcFRvTmV4dExpbmUg
fTsKKyAgICBMaW5lQnJlYWtpbmdCZWhhdmlvciBsaW5lQnJlYWtpbmdCZWhhdmlvcihjb25zdCBJ
bmxpbmVSdW5Qcm92aWRlcjo6UnVuJiwgYm9vbCBsaW5lSXNFbXB0eSk7CisgICAgYm9vbCBpc0F0
Q29udGVudEVuZCgpIGNvbnN0OworICAgIFJ1biBzcGxpdFJ1bihjb25zdCBJbmxpbmVSdW5Qcm92
aWRlcjo6UnVuJiwgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIExheW91dFVuaXQgYXZh
aWxhYmxlV2lkdGgsIGJvb2wgbGluZUlzRW1wdHkpOworICAgIExheW91dFVuaXQgcnVuV2lkdGgo
Y29uc3QgSW5saW5lUnVuUHJvdmlkZXI6OlJ1biYsIExheW91dFVuaXQgY29udGVudExvZ2ljYWxM
ZWZ0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEl0ZW1Qb3NpdGlvbj4gYWRqdXN0U3BsaXRQ
b3NpdGlvbldpdGhIeXBoZW5hdGlvbihjb25zdCBJbmxpbmVSdW5Qcm92aWRlcjo6UnVuJiwgSXRl
bVBvc2l0aW9uIHNwbGl0UG9zaXRpb24sIExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0LCBM
YXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzTGluZUVtcHR5KSBjb25zdDsKKworICAg
IGNvbnN0IExheW91dENvbnRleHQmIG1fbGF5b3V0Q29udGV4dDsKKyAgICBjb25zdCBUZXh0VXRp
bCBtX3RleHRVdGlsOworICAgIGNvbnN0IElubGluZVJ1blByb3ZpZGVyOjpSdW5zJiBtX2lubGlu
ZVJ1bnM7CisKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRSdW5JbmRleCB7IDAgfTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEl0ZW1Qb3NpdGlvbj4gbV9zcGxpdFBvc2l0aW9uOworICAgIGJvb2wgbV9oeXBo
ZW5hdGlvbklzRGlzYWJsZWQgeyBmYWxzZSB9OworfTsKKworfQorfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0bGF5b3V0L1Rl
eHRVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL3RleHRs
YXlvdXQvVGV4dFV0aWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5kNjUxM2ZlZjYzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL3RleHRsYXlvdXQvVGV4dFV0aWwuY3BwCkBAIC0wLDAgKzEsMTIzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRleHRVdGlsLmgi
CisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkZv
bnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDx3dGYvSXNv
TWFsbG9jSW5saW5lcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0
IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRleHRVdGlsKTsKKworVGV4dFV0aWw6
OlRleHRVdGlsKGNvbnN0IElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQpCisgICAgOiBtX2lu
bGluZUNvbnRlbnQoaW5saW5lQ29udGVudCkKK3sKK30KKworTGF5b3V0VW5pdCBUZXh0VXRpbDo6
d2lkdGgoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSXRlbVBvc2l0aW9uIGZyb20sIHVu
c2lnbmVkIGxlbmd0aCwgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQpIGNvbnN0Cit7Cisg
ICAgTGF5b3V0VW5pdCB3aWR0aDsKKyAgICBhdXRvIHN0YXJ0UG9zaXRpb24gPSBmcm9tOworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX2lubGluZUNvbnRlbnQuZmluZDxjb25zdCBJbmxpbmVJdGVtJiwg
SW5saW5lSXRlbUhhc2hUcmFuc2xhdG9yPihpbmxpbmVJdGVtKTsKKyAgICBhdXRvIGlubGluZUl0
ZW1FbmQgPSBtX2lubGluZUNvbnRlbnQuZW5kKCk7CisgICAgd2hpbGUgKGxlbmd0aCkgeworICAg
ICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gaW5saW5lSXRlbUVuZCk7CisgICAgICAgIGF1dG8mIGN1
cnJlbnRJbmxpbmVJdGVtID0gKippdGVyYXRvcjsKKyAgICAgICAgYXV0byBlbmRQb3NpdGlvbiA9
IHN0ZDo6bWluPEl0ZW1Qb3NpdGlvbj4oc3RhcnRQb3NpdGlvbiArIGxlbmd0aCwgY3VycmVudElu
bGluZUl0ZW0udGV4dENvbnRlbnQoKS5sZW5ndGgoKSk7CisgICAgICAgIGF1dG8gdGV4dFdpZHRo
ID0gdGhpcy0+dGV4dFdpZHRoKGN1cnJlbnRJbmxpbmVJdGVtLCBzdGFydFBvc2l0aW9uLCBlbmRQ
b3NpdGlvbiwgY29udGVudExvZ2ljYWxMZWZ0KTsKKworICAgICAgICBjb250ZW50TG9naWNhbExl
ZnQgKz0gdGV4dFdpZHRoOworICAgICAgICB3aWR0aCArPSB0ZXh0V2lkdGg7CisgICAgICAgIGxl
bmd0aCAtPSAoZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uKTsKKworICAgICAgICBzdGFydFBv
c2l0aW9uID0gMDsKKyAgICAgICAgKytpdGVyYXRvcjsKKyAgICB9CisKKyAgICByZXR1cm4gd2lk
dGg7Cit9CisKK3N0ZDo6b3B0aW9uYWw8SXRlbVBvc2l0aW9uPiBUZXh0VXRpbDo6aHlwaGVuUG9z
aXRpb25CZWZvcmUoY29uc3QgSW5saW5lSXRlbSYsIEl0ZW1Qb3NpdGlvbiwgdW5zaWduZWQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworTGF5b3V0VW5pdCBUZXh0VXRp
bDo6dGV4dFdpZHRoKGNvbnN0IElubGluZUl0ZW0mIGlubGluZVRleHRJdGVtLCBJdGVtUG9zaXRp
b24gZnJvbSwgSXRlbVBvc2l0aW9uIHRvLCBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCkg
Y29uc3QKK3sKKyAgICBhdXRvJiBzdHlsZSA9IGlubGluZVRleHRJdGVtLnN0eWxlKCk7CisgICAg
YXV0byYgZm9udCA9IHN0eWxlLmZvbnRDYXNjYWRlKCk7CisgICAgaWYgKCFmb250LnNpemUoKSB8
fCBmcm9tID09IHRvKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGF1dG8gdGV4dCA9IGlubGlu
ZVRleHRJdGVtLnRleHRDb250ZW50KCk7CisgICAgaWYgKGZvbnQuaXNGaXhlZFBpdGNoKCkpCisg
ICAgICAgIHJldHVybiBmaXhlZFBpdGNoV2lkdGgodGV4dCwgc3R5bGUsIGZyb20sIHRvLCBjb250
ZW50TG9naWNhbExlZnQpOworCisgICAgYXV0byBoYXNLZXJuaW5nT3JMaWdhdHVyZXMgPSBmb250
LmVuYWJsZUtlcm5pbmcoKSB8fCBmb250LnJlcXVpcmVzU2hhcGluZygpOworICAgIGF1dG8gbWVh
c3VyZVdpdGhFbmRTcGFjZSA9IGhhc0tlcm5pbmdPckxpZ2F0dXJlcyAmJiB0byA8IHRleHQubGVu
Z3RoKCkgJiYgdGV4dFt0b10gPT0gJyAnOworICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNlKQor
ICAgICAgICArK3RvOworICAgIExheW91dFVuaXQgd2lkdGg7CisgICAgYXV0byB0YWJXaWR0aCA9
IHN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpID8gMCA6IHN0eWxlLnRhYlNpemUoKTsKKworICAg
IFdlYkNvcmU6OlRleHRSdW4gcnVuKFN0cmluZ1ZpZXcodGV4dCkuc3Vic3RyaW5nKGZyb20sIHRv
IC0gZnJvbSksIGNvbnRlbnRMb2dpY2FsTGVmdCk7CisgICAgaWYgKHRhYldpZHRoKQorICAgICAg
ICBydW4uc2V0VGFiU2l6ZSh0cnVlLCB0YWJXaWR0aCk7CisgICAgd2lkdGggPSBmb250LndpZHRo
KHJ1bik7CisKKyAgICBpZiAobWVhc3VyZVdpdGhFbmRTcGFjZSkKKyAgICAgICAgd2lkdGggLT0g
KGZvbnQuc3BhY2VXaWR0aCgpICsgZm9udC53b3JkU3BhY2luZygpKTsKKworICAgIHJldHVybiBz
dGQ6Om1heDxMYXlvdXRVbml0PigwLCB3aWR0aCk7Cit9CisKK0xheW91dFVuaXQgVGV4dFV0aWw6
OmZpeGVkUGl0Y2hXaWR0aChTdHJpbmcgdGV4dCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJ
dGVtUG9zaXRpb24gZnJvbSwgSXRlbVBvc2l0aW9uIHRvLCBMYXlvdXRVbml0IGNvbnRlbnRMb2dp
Y2FsTGVmdCkgY29uc3QKK3sKKyAgICBhdXRvJiBmb250ID0gc3R5bGUuZm9udENhc2NhZGUoKTsK
KyAgICBhdXRvIG1vbm9zcGFjZUNoYXJhY3RlcldpZHRoID0gZm9udC5zcGFjZVdpZHRoKCk7Cisg
ICAgTGF5b3V0VW5pdCB3aWR0aDsKKyAgICBmb3IgKGF1dG8gaSA9IGZyb207IGkgPCB0bzsgKytp
KSB7CisgICAgICAgIGF1dG8gY2hhcmFjdGVyID0gdGV4dFtpXTsKKyAgICAgICAgaWYgKGNoYXJh
Y3RlciA+PSAnICcgfHwgY2hhcmFjdGVyID09ICdcbicpCisgICAgICAgICAgICB3aWR0aCArPSBt
b25vc3BhY2VDaGFyYWN0ZXJXaWR0aDsKKyAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyID09ICdc
dCcpCisgICAgICAgICAgICB3aWR0aCArPSBzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSA/IG1v
bm9zcGFjZUNoYXJhY3RlcldpZHRoIDogZm9udC50YWJXaWR0aChzdHlsZS50YWJTaXplKCksIGNv
bnRlbnRMb2dpY2FsTGVmdCArIHdpZHRoKTsKKworICAgICAgICBpZiAoaSA+IGZyb20gJiYgKGNo
YXJhY3RlciA9PSAnICcgfHwgY2hhcmFjdGVyID09ICdcdCcgfHwgY2hhcmFjdGVyID09ICdcbicp
KQorICAgICAgICAgICAgd2lkdGggKz0gZm9udC53b3JkU3BhY2luZygpOworICAgIH0KKworICAg
IHJldHVybiB3aWR0aDsKK30KKworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0bGF5b3V0L1RleHRVdGlsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy90ZXh0bGF5b3V0L1RleHRVdGlsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZkNzVjYmM1MWY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvdGV4
dGxheW91dC9UZXh0VXRpbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVk
ZSAiSW5saW5lSXRlbS5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCituYW1lc3BhY2UgTGF5b3V0IHsKKworY2xhc3MgVGV4dFV0aWwgeworICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGV4dFV0aWwpOworcHVibGljOgorICAgIFRleHRVdGls
KGNvbnN0IElubGluZUNvbnRlbnQmKTsKKworICAgIExheW91dFVuaXQgd2lkdGgoY29uc3QgSW5s
aW5lSXRlbSYsIEl0ZW1Qb3NpdGlvbiBmcm9tLCB1bnNpZ25lZCBsZW5ndGgsIExheW91dFVuaXQg
Y29udGVudExvZ2ljYWxMZWZ0KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPEl0ZW1Qb3NpdGlv
bj4gaHlwaGVuUG9zaXRpb25CZWZvcmUoY29uc3QgSW5saW5lSXRlbSYsIEl0ZW1Qb3NpdGlvbiBm
cm9tLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OworCitwcml2YXRlOgorICAgIExheW91dFVuaXQg
dGV4dFdpZHRoKGNvbnN0IElubGluZUl0ZW0mLCBJdGVtUG9zaXRpb24gZnJvbSwgSXRlbVBvc2l0
aW9uIHRvLCBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCkgY29uc3Q7CisgICAgTGF5b3V0
VW5pdCBmaXhlZFBpdGNoV2lkdGgoU3RyaW5nLCBjb25zdCBSZW5kZXJTdHlsZSYsIEl0ZW1Qb3Np
dGlvbiBmcm9tLCBJdGVtUG9zaXRpb24gdG8sIExheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0
KSBjb25zdDsKKworICAgIGNvbnN0IElubGluZUNvbnRlbnQmIG1faW5saW5lQ29udGVudDsKK307
CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dEJveC5jcHAKaW5kZXggZTFkMjZmYWRmYTguLjA1ZGYyYzg2ZWExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5jbHVkZSAi
TGF5b3V0Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCg==
</data>
<flag name="review"
          id="370025"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>