<?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>14012</bug_id>
          
          <creation_ts>2007-06-06 03:06:18 -0700</creation_ts>
          <short_desc>share filter, clip and mask code between various SVG renderers</short_desc>
          <delta_ts>2007-06-07 11:25:16 -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>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>14010</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>8334</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-06-06 03:06:18 -0700</bug_when>
    <thetext>share filter, clip and mask code between various SVG renderers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8335</commentid>
    <comment_count>1</comment_count>
      <attachid>14879</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-06-06 03:07:00 -0700</bug_when>
    <thetext>Created attachment 14879
the patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14879</attachid>
            <date>2007-06-06 03:07:00 -0700</date>
            <delta_ts>2007-06-06 10:34:34 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>clean.patch</filename>
            <type>text/plain</type>
            <size>32507</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDI0
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDctMDYt
MDYgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQnJlYWsgb3V0IGNvbW1vbiBTVkcg
cmVuZGVyaW5nIGxvZ2ljIGludG8gcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCBpbiBTVkdSZW5k
ZXJTdXBwb3J0CisKKyAgICAgICAgTm8gdGVzdCBjYXNlcyBzaG91bGQgYmUgY2hhbmdlZCBieSB0
aGlzLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxB
bmRTdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OnBhaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6cmVxdWlyZXNMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmlzT3V0ZXJtb3N0U1ZHKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0NvbnRhaW5lcjo6YXBwbHlDb250ZW50VHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0NvbnRhaW5lcjo6dmlld3BvcnRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR0NvbnRhaW5lci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9T
VkdSZW5kZXJTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSb290SW5s
aW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVUZXh0UmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50SW5saW5lQm94ZXMpOgorCiAyMDA3LTA2LTA2ICBS
b2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBvbGxpZWogYW5k
IGVyaWMuCkluZGV4OiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTk3OCkK
KysrIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjI1MCw2ICsyMjUwLDggQEAKIAkJQThFQTgwMEMwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hl
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE4
MDA0MEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmggKi87IH07CiAJCUE4RUE4MDBEMEEx
OTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE4MDA1MEExOTUxNkUwMEE4RUY1RiAvKiBTdHlsZVNo
ZWV0LmNwcCAqLzsgfTsKIAkJQThFQTgwMEUwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThFQTgwMDYw
QTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5oICovOyB9OworCQlBOEY0RkI5NDBDMTY5RTdC
MDAyQUZFRDUgLyogU1ZHUmVuZGVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThGNEZCOTMwQzE2OUU3QjAwMkFGRUQ1IC8qIFNWR1JlbmRl
clN1cHBvcnQuaCAqLzsgfTsKKwkJQThGNEZCOTYwQzE2OUU4NTAwMkFGRUQ1IC8qIFNWR1JlbmRl
clN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThGNEZCOTUwQzE2OUU4NTAwMkFGRUQ1IC8qIFNWR1JlbmRlclN1cHBvcnQuY3BwICovOyB9
OwogCQlBOEZFRkIzMTA5NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThGRUZC
MkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQThGRUZCMzIwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEZFRkIzMDA5
NzlGNEY2MDA1ODM5RkQgLyogU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaCAqLzsgfTsKIAkJQUEw
OTcyQ0MwQjY5NDdBODAwQTcwNUU5IC8qIFNWR0lubGluZVRleHRCb3guY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEwOTcyQ0EwQjY5NDdBODAwQTcw
NUU5IC8qIFNWR0lubGluZVRleHRCb3guY3BwICovOyB9OwpAQCAtNTM0Miw2ICs1MzQ0LDggQEAK
IAkJQThFQTgwMDQwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlU2hlZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQThFQTgwMDUwQTE5NTE2RTAwQThFRjVGIC8qIFN0eWxlU2hlZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlU2hlZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFM
aXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThGNEZCOTMwQzE2OUU3QjAwMkFGRUQ1IC8qIFNW
R1JlbmRlclN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUmVu
ZGVyU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOEY0RkI5NTBDMTY5
RTg1MDAyQUZFRDUgLyogU1ZHUmVuZGVyU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTVkdSZW5kZXJTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQThGRUZCMkYwOTc5RjRGNjAwNTgzOUZEIC8qIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkVG
QjMwMDk3OUY0RjYwMDU4MzlGRCAvKiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUEwOTcyQ0EwQjY5NDdBODAwQTcwNUU5IC8qIFNW
R0lubGluZVRleHRCb3guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR0lubGluZVRleHRCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTYy
Niw2ICs5NjMwLDggQEAKIAkJCQk4NTNDQTlFMzBBRUVDNjA4MDAyMzcyREMgLyogU1ZHSW5saW5l
Rmxvd0JveC5oICovLAogCQkJCUFBMDk3MkNBMEI2OTQ3QTgwMEE3MDVFOSAvKiBTVkdJbmxpbmVU
ZXh0Qm94LmNwcCAqLywKIAkJCQlBQTA5NzJDQjBCNjk0N0E4MDBBNzA1RTkgLyogU1ZHSW5saW5l
VGV4dEJveC5oICovLAorCQkJCUE4RjRGQjk1MEMxNjlFODUwMDJBRkVENSAvKiBTVkdSZW5kZXJT
dXBwb3J0LmNwcCAqLywKKwkJCQlBOEY0RkI5MzBDMTY5RTdCMDAyQUZFRDUgLyogU1ZHUmVuZGVy
U3VwcG9ydC5oICovLAogCQkJCUIyRUJEQzlBMEFGNzdFMzQwMEFFNEE2OCAvKiBTVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcCAqLywKIAkJCQlCMkVCREM5QjBBRjc3RTM0MDBBRTRBNjggLyogU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5oICovLAogCQkJCTg1M0NBOUU0MEFFRUM2MDgwMDIzNzJEQyAvKiBTVkdS
b290SW5saW5lQm94LmNwcCAqLywKQEAgLTExMjkzLDYgKzExMjk5LDcgQEAKIAkJCQlFMUVDMjlB
MDBCQjA0QzZCMDBFQTE4N0IgLyogWFBhdGhOb2RlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQky
RDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0QzlBMjlBMEJGMDREQjYwMEQ3MzRBOCAvKiBXZWJTY3JpcHRPYmplY3RQZW5kaW5nUHVi
bGljLmggaW4gSGVhZGVycyAqLywKKwkJCQlBOEY0RkI5NDBDMTY5RTdCMDAyQUZFRDUgLyogU1ZH
UmVuZGVyU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMjY2OSw2ICsxMjY3Niw3IEBACiAJ
CQkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBOEM5NkVCMEJFNjkwMzIwMDRFRUZGMCAvKiBTZWxlY3Rpb25Db250cm9sbGVy
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQUFDRjE0NEQwQkVDMUVGMDAwODI3OTgyIC8qIFRl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlBOEY0
RkI5NjBDMTY5RTg1MDAyQUZFRDUgLyogU1ZHUmVuZGVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJp
bmcvUmVuZGVyUGF0aC5jcHAJKHJldmlzaW9uIDIxOTc4KQorKysgcmVuZGVyaW5nL1JlbmRlclBh
dGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw4IEBACiAjaW5jbHVkZSAiUmVuZGVy
U1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmgiCiAjaW5j
bHVkZSAiU1ZHUGFpbnRTZXJ2ZXIuaCIKLSNpbmNsdWRlICJTVkdSZXNvdXJjZUNsaXBwZXIuaCIK
KyNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0
ZXIuaCIKLSNpbmNsdWRlICJTVkdSZXNvdXJjZU1hc2tlci5oIgogI2luY2x1ZGUgIlNWR1Jlc291
cmNlTWFya2VyLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R1VSSVJlZmVyZW5jZS5oIgpAQCAtMTc0LDcyICsxNzMsNDcgQEAgc2hvcnQgUmVuZGVyUGF0aDo6
YmFzZWxpbmVQb3NpdGlvbihib29sIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaG9ydD4ocmVs
YXRpdmVCQm94KHRydWUpLmhlaWdodCgpKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIGZpbGxB
bmRTdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJQYXRoKiBvYmplY3QpCit7CisgICAgY29udGV4dC0+
YmVnaW5QYXRoKCk7CisKKyAgICBTVkdQYWludFNlcnZlciogZmlsbFBhaW50U2VydmVyID0gS1NW
R1BhaW50ZXJGYWN0b3J5OjpmaWxsUGFpbnRTZXJ2ZXIoc3R5bGUsIG9iamVjdCk7CisgICAgaWYg
KGZpbGxQYWludFNlcnZlcikgeworICAgICAgICBjb250ZXh0LT5hZGRQYXRoKHBhdGgpOworICAg
ICAgICBmaWxsUGFpbnRTZXJ2ZXItPmRyYXcoY29udGV4dCwgb2JqZWN0LCBBcHBseVRvRmlsbFRh
cmdldFR5cGUpOworICAgIH0KKyAgICAKKyAgICBTVkdQYWludFNlcnZlciogc3Ryb2tlUGFpbnRT
ZXJ2ZXIgPSBLU1ZHUGFpbnRlckZhY3Rvcnk6OnN0cm9rZVBhaW50U2VydmVyKHN0eWxlLCBvYmpl
Y3QpOworICAgIGlmIChzdHJva2VQYWludFNlcnZlcikgeworICAgICAgICBjb250ZXh0LT5hZGRQ
YXRoKHBhdGgpOyAvLyBwYXRoIGlzIGNsZWFyZWQgd2hlbiBmaWxsZWQuCisgICAgICAgIHN0cm9r
ZVBhaW50U2VydmVyLT5kcmF3KGNvbnRleHQsIG9iamVjdCwgQXBwbHlUb1N0cm9rZVRhcmdldFR5
cGUpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJQYXRoOjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgaW50LCBpbnQpCiB7CiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rp
c2FibGVkKCkgfHwgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCkgfHwg
c3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IEhJRERFTiB8fCBtX3BhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47Ci0KKyAgICAKICAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwogICAg
IHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0obG9jYWxUcmFuc2Zvcm0oKSk7CiAKLSAgICBG
bG9hdFJlY3Qgc3Ryb2tlQkJveCA9IHJlbGF0aXZlQkJveCh0cnVlKTsKLQotICAgIFNWR0VsZW1l
bnQqIHN2Z0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oZWxlbWVudCgpKTsKLSAg
ICBBU1NFUlQoc3ZnRWxlbWVudCAmJiBzdmdFbGVtZW50LT5kb2N1bWVudCgpICYmIHN2Z0VsZW1l
bnQtPmlzU3R5bGVkKCkpOwotCi0gICAgU1ZHU3R5bGVkRWxlbWVudCogc3R5bGVkRWxlbWVudCA9
IHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPihzdmdFbGVtZW50KTsKLSAgICBjb25zdCBT
VkdSZW5kZXJTdHlsZSogc3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOwotCi0gICAgQXRv
bWljU3RyaW5nIGZpbHRlcklkKFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5m
aWx0ZXIoKSkpOwotICAgIEF0b21pY1N0cmluZyBjbGlwcGVySWQoU1ZHVVJJUmVmZXJlbmNlOjpn
ZXRUYXJnZXQoc3ZnU3R5bGUtPmNsaXBQYXRoKCkpKTsKLSAgICBBdG9taWNTdHJpbmcgbWFza2Vy
SWQoU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoc3ZnU3R5bGUtPm1hc2tFbGVtZW50KCkpKTsK
LQotI2lmIEVOQUJMRShTVkdfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKQotICAgIFNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKGRvY3VtZW50KCksIGZpbHRlcklkKTsKLSNl
bmRpZgotICAgIFNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IGdldENsaXBwZXJCeUlkKGRv
Y3VtZW50KCksIGNsaXBwZXJJZCk7Ci0gICAgU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IGdl
dE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgbWFza2VySWQpOwotCiAjaWYgRU5BQkxFKFNWR19FWFBF
UklNRU5UQUxfRkVBVFVSRVMpCi0gICAgaWYgKGZpbHRlcikKLSAgICAgICAgZmlsdGVyLT5wcmVw
YXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBzdHJva2VCQm94KTsKLSAgICBlbHNlIGlmICgh
ZmlsdGVySWQuaXNFbXB0eSgpKQotICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVudCgpLT5hY2Nl
c3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJJZCwgc3R5bGVkRWxl
bWVudCk7CisgICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IDA7CisjZWxzZQorICAgIHZv
aWQqIGZpbHRlciA9IDA7CiAjZW5kaWYKKyAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByZWxh
dGl2ZUJCb3godHJ1ZSk7CisgICAgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWlu
dEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpOworICAgIAorICAgIGZpbGxBbmRTdHJva2VQYXRo
KG1fcGF0aCwgcGFpbnRJbmZvLmNvbnRleHQsIHN0eWxlKCksIHRoaXMpOwogCi0gICAgaWYgKGNs
aXBwZXIpIHsKLSAgICAgICAgY2xpcHBlci0+YWRkQ2xpZW50KHN0eWxlZEVsZW1lbnQpOwotICAg
ICAgICBjbGlwcGVyLT5hcHBseUNsaXAocGFpbnRJbmZvLmNvbnRleHQsIHN0cm9rZUJCb3gpOwot
ICAgIH0gZWxzZSBpZiAoIWNsaXBwZXJJZC5pc0VtcHR5KCkpCi0gICAgICAgIHN2Z0VsZW1lbnQt
PmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGNs
aXBwZXJJZCwgc3R5bGVkRWxlbWVudCk7Ci0KLSAgICBpZiAobWFza2VyKSB7Ci0gICAgICAgIG1h
c2tlci0+YWRkQ2xpZW50KHN0eWxlZEVsZW1lbnQpOwotICAgICAgICBtYXNrZXItPmFwcGx5TWFz
ayhwYWludEluZm8uY29udGV4dCwgc3Ryb2tlQkJveCk7Ci0gICAgfSBlbHNlIGlmICghbWFza2Vy
SWQuaXNFbXB0eSgpKQotICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdF
eHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShtYXNrZXJJZCwgc3R5bGVkRWxlbWVudCk7
Ci0KLSAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5QYXRoKCk7Ci0KLSAgICBTVkdQYWludFNl
cnZlciogZmlsbFBhaW50U2VydmVyID0gS1NWR1BhaW50ZXJGYWN0b3J5OjpmaWxsUGFpbnRTZXJ2
ZXIoc3R5bGUoKSwgdGhpcyk7Ci0gICAgaWYgKGZpbGxQYWludFNlcnZlcikgewotICAgICAgICBw
YWludEluZm8uY29udGV4dC0+YWRkUGF0aChtX3BhdGgpOwotICAgICAgICBmaWxsUGFpbnRTZXJ2
ZXItPmRyYXcocGFpbnRJbmZvLmNvbnRleHQsIHRoaXMsIEFwcGx5VG9GaWxsVGFyZ2V0VHlwZSk7
Ci0gICAgfQotCi0gICAgU1ZHUGFpbnRTZXJ2ZXIqIHN0cm9rZVBhaW50U2VydmVyID0gS1NWR1Bh
aW50ZXJGYWN0b3J5OjpzdHJva2VQYWludFNlcnZlcihzdHlsZSgpLCB0aGlzKTsKLSAgICBpZiAo
c3Ryb2tlUGFpbnRTZXJ2ZXIpIHsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmFkZFBhdGgo
bV9wYXRoKTsgLy8gcGF0aCBpcyBjbGVhcmVkIHdoZW4gZmlsbGVkLgotICAgICAgICBzdHJva2VQ
YWludFNlcnZlci0+ZHJhdyhwYWludEluZm8uY29udGV4dCwgdGhpcywgQXBwbHlUb1N0cm9rZVRh
cmdldFR5cGUpOwotICAgIH0KLQotICAgIGlmIChzdHlsZWRFbGVtZW50LT5zdXBwb3J0c01hcmtl
cnMoKSkKKyAgICBpZiAoc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KGVsZW1lbnQoKSkt
PnN1cHBvcnRzTWFya2VycygpKQogICAgICAgICBtX21hcmtlckJvdW5kcyA9IGRyYXdNYXJrZXJz
SWZOZWVkZWQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0LCBtX3BhdGgpOwogCiAj
aWYgRU5BQkxFKFNWR19FWFBFUklNRU5UQUxfRkVBVFVSRVMpCi0gICAgLy8gYWN0dWFsbHkgYXBw
bHkgdGhlIGZpbHRlcgogICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGZpbHRlci0+YXBwbHlGaWx0
ZXIocGFpbnRJbmZvLmNvbnRleHQsIHN0cm9rZUJCb3gpOworICAgICAgICBmaWx0ZXItPmFwcGx5
RmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7CiAjZW5kaWYKIAogICAgIHBh
aW50SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CkluZGV4OiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNw
cAkocmV2aXNpb24gMjE5NzgpCisrKyByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdNYXJrZXJFbGVtZW50LmgiCisj
aW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlQ2xpcHBl
ci5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VNYXNrZXIuaCIKQEAgLTM5LDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1S
ZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdTdHlsZWRFbGVtZW50ICpu
b2RlKQorUmVuZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoU1ZHU3R5bGVkRWxl
bWVudCogbm9kZSkKICAgICA6IFJlbmRlckNvbnRhaW5lcihub2RlKQogICAgICwgbV9kcmF3c0Nv
bnRlbnRzKHRydWUpCiAgICAgLCBtX3NsaWNlKGZhbHNlKQpAQCAtNzQsNyArNzUsNyBAQCB2b2lk
IFJlbmRlclNWR0NvbnRhaW5lcjo6c2V0TG9jYWxUcmFuc2ZvCiBib29sIFJlbmRlclNWR0NvbnRh
aW5lcjo6cmVxdWlyZXNMYXllcigpCiB7CiAgICAgLy8gT25seSBhbGxvdyBhbiA8c3ZnPiBlbGVt
ZW50IHRvIGdlbmVyYXRlIGEgbGF5ZXIgd2hlbiBpdCdzIHBvc2l0aW9uZWQgaW4gYSBub24tU1ZH
IGNvbnRleHQKLSAgICByZXR1cm4gKGlzUG9zaXRpb25lZCgpIHx8IGlzUmVsUG9zaXRpb25lZCgp
KSAmJiAoZWxlbWVudCgpLT5wYXJlbnQoKSAmJiAhZWxlbWVudCgpLT5wYXJlbnQoKS0+aXNTVkdF
bGVtZW50KCkpOworICAgIHJldHVybiAoaXNQb3NpdGlvbmVkKCkgfHwgaXNSZWxQb3NpdGlvbmVk
KCkpICYmIGlzT3V0ZXJtb3N0U1ZHKCk7CiB9CiAKIHNob3J0IFJlbmRlclNWR0NvbnRhaW5lcjo6
bGluZUhlaWdodChib29sIGIsIGJvb2wgaXNSb290TGluZUJveCkgY29uc3QKQEAgLTg3LDYgKzg4
LDEzIEBAIHNob3J0IFJlbmRlclNWR0NvbnRhaW5lcjo6YmFzZWxpbmVQb3NpdGkKICAgICByZXR1
cm4gaGVpZ2h0KCkgKyBtYXJnaW5Ub3AoKSArIG1hcmdpbkJvdHRvbSgpOwogfQogCisvLyBUaGlz
IG1ldGhvZCBzaG91bGQgYmUgdGVtcG9yYXJ5IHVudGlsIGEgUmVuZGVyU1ZHUm9vdCBjbGFzcyBj
YW4gYmUgbWFkZQorLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIy
MDcKK2Jvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjppc091dGVybW9zdFNWRygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFwYXJlbnQoKS0+aXNTVkdDb250YWluZXIoKTsKK30KKwogdm9pZCBSZW5kZXJT
VkdDb250YWluZXI6OmxheW91dCgpCiB7CiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwpAQCAt
MTA2LDYgKzExNCw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogCiAgICAg
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsKICAgICB3aGlsZSAoY2hpbGQpIHsK
KyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgYm9ndXMsIHNlZSBodHRwOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAwMwogICAgICAgICBpZiAoIWNoaWxkLT5pc1Jl
bmRlclBhdGgoKSB8fCBzdGF0aWNfY2FzdDxSZW5kZXJQYXRoKj4oY2hpbGQpLT5oYXNSZWxhdGl2
ZVZhbHVlcygpKQogICAgICAgICAgICAgY2hpbGQtPnNldE5lZWRzTGF5b3V0KHRydWUpOwogCkBA
IC0xMTgsNyArMTI3LDcgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAg
Y2FsY0hlaWdodCgpOwogCiAgICAgbV9hYnNvbHV0ZUJvdW5kcyA9IGFic29sdXRlQ2xpcHBlZE92
ZXJmbG93UmVjdCgpOwotICAgIGlmICghcGFyZW50KCktPmlzU1ZHQ29udGFpbmVyKCkpIHsKKyAg
ICBpZiAoaXNPdXRlcm1vc3RTVkcoKSkgewogICAgICAgICBTVkdTVkdFbGVtZW50KiBzdmcgPSBz
dGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVudCgpKTsKICAgICAgICAgbV93aWR0aCA9
IG1fd2lkdGggKiBzdmctPmN1cnJlbnRTY2FsZSgpOwogICAgICAgICBtX2hlaWdodCA9IG1faGVp
Z2h0ICogc3ZnLT5jdXJyZW50U2NhbGUoKTsKQEAgLTEzMSwzOCArMTQwLDkgQEAgdm9pZCBSZW5k
ZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQog
Ci12b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGlu
dCBwYXJlbnRYLCBpbnQgcGFyZW50WSkKK3ZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjphcHBseUNv
bnRlbnRUcmFuc2Zvcm1zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQmIHBhcmVudFgsIGludCYg
cGFyZW50WSkKIHsKLSAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhpcyBzaG91bGQgb25seSBleGlzdCBmb3Ig
PHN2Zz4gcmVuZGVyZXJzCi0gICAgaWYgKGhhc0JveERlY29yYXRpb25zKCkgJiYgKHBhaW50SW5m
by5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZVNlbGVjdGlvbikpIAotICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5m
bywgbV94ICsgcGFyZW50WCwgbV95ICsgcGFyZW50WSk7Ci0KLSAgICBpZiAoKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSAmJiBzdHlsZSgpLT52aXNp
YmlsaXR5KCkgPT0gVklTSUJMRSkKLSAgICAgICAgcGFpbnRPdXRsaW5lKHBhaW50SW5mby5jb250
ZXh0LCBwYXJlbnRYLCBwYXJlbnRZLCB3aWR0aCgpLCBoZWlnaHQoKSwgc3R5bGUoKSk7Ci0gICAg
Ci0gICAgaWYgKHBhaW50SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCB8fCAhZHJh
d3NDb250ZW50cygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBTVkdSZW5kZXJTdHls
ZSogc3ZnU3R5bGUgPSBzdHlsZSgpLT5zdmdTdHlsZSgpOwotICAgIEF0b21pY1N0cmluZyBmaWx0
ZXJJZChTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChzdmdTdHlsZS0+ZmlsdGVyKCkpKTsKLQot
I2lmIEVOQUJMRShTVkdfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKSAKLSAgICBTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBmaWx0ZXJJZCk7Ci0jZW5k
aWYKLQotICAgIGlmICghZmlyc3RDaGlsZCgpCi0jaWYgRU5BQkxFKFNWR19FWFBFUklNRU5UQUxf
RkVBVFVSRVMpIAotICAgICAgICAmJiAhZmlsdGVyCi0jZW5kaWYKLSAgICAgICAgKQotICAgICAg
ICByZXR1cm47IC8vIFNwZWM6IGdyb3VwcyB3L28gY2hpbGRyZW4gc3RpbGwgbWF5IHJlbmRlciBm
aWx0ZXIgY29udGVudC4KLSAgICAKLSAgICBwYWludEluZm8uY29udGV4dC0+c2F2ZSgpOwotCi0g
ICAgaWYgKCFwYXJlbnQoKS0+aXNTVkdDb250YWluZXIoKSkgeworICAgIGlmIChpc091dGVybW9z
dFNWRygpKSB7CiAgICAgICAgIC8vIFRyYW5zbGF0ZSBmcm9tIHBhcmVudCBvZmZzZXRzIChodG1s
IHJlbmRlcmVycykgdG8gYSByZWxhdGl2ZSB0cmFuc2Zvcm0gKHN2ZyByZW5kZXJlcnMpCiAgICAg
ICAgIEludFBvaW50IG9yaWdpbjsKICAgICAgICAgb3JpZ2luLm1vdmUocGFyZW50WCwgcGFyZW50
WSk7CkBAIC0xODQsNTcgKzE2NCw2NCBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQo
UGFpbnRJbmZvCiAgICAgICAgIEFTU0VSVChtX3ggPT0gMCk7CiAgICAgICAgIEFTU0VSVChtX3kg
PT0gMCk7CiAgICAgfQotCisgICAgCiAgICAgaWYgKCF2aWV3cG9ydCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAoc3R5bGUoKS0+b3ZlcmZsb3dYKCkgIT0gT1ZJU0lCTEUpCiAgICAgICAgICAg
ICBwYWludEluZm8uY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRSZWN0KHZpZXdwb3J0KCkpKTsg
Ly8gRklYTUU6IEV2ZW50dWFsbHkgd2UnbGwgd2FudCBmbG9hdC1wcmVjaXNpb24gY2xpcHBpbmcK
LQorICAgICAgICAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShBZmZpbmVU
cmFuc2Zvcm0oKS50cmFuc2xhdGUodmlld3BvcnQoKS54KCksIHZpZXdwb3J0KCkueSgpKSk7CiAg
ICAgfQogICAgIGlmICghbG9jYWxUcmFuc2Zvcm0oKS5pc0lkZW50aXR5KCkpCiAgICAgICAgIHBh
aW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0obG9jYWxUcmFuc2Zvcm0oKSk7Ci0gICAgaWYgKCFw
YXJlbnQoKS0+aXNTVkdDb250YWluZXIoKSkgeworICAgIGlmIChpc091dGVybW9zdFNWRygpKSB7
CiAgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1lbnQq
PihlbGVtZW50KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmlu
ZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShzdmctPmN1cnJlbnRUcmFuc2xhdGUoKS54KCksIHN2Zy0+
Y3VycmVudFRyYW5zbGF0ZSgpLnkoKSkpOwogICAgIH0KK30KIAotICAgIEZsb2F0UmVjdCBzdHJv
a2VCQm94ID0gcmVsYXRpdmVCQm94KHRydWUpOwordm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpCit7Cisg
ICAgaWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJl
dHVybjsKIAotICAgIFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4oZWxlbWVudCgpKTsKLSAgICBBU1NFUlQoc3ZnRWxlbWVudCAmJiBzdmdFbGVtZW50LT5k
b2N1bWVudCgpICYmIHN2Z0VsZW1lbnQtPmlzU3R5bGVkKCkpOworICAgIC8vIFRoaXMgc2hvdWxk
IG9ubHkgZXhpc3QgZm9yIDxzdmc+IHJlbmRlcmVycworICAgIGlmIChpc091dGVybW9zdFNWRygp
ICYmIGhhc0JveERlY29yYXRpb25zKCkgJiYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
Rm9yZWdyb3VuZCB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikpIAor
ICAgICAgICBwYWludEJveERlY29yYXRpb25zKHBhaW50SW5mbywgbV94ICsgcGFyZW50WCwgbV95
ICsgcGFyZW50WSk7CiAKLSAgICBTVkdTdHlsZWRFbGVtZW50KiBzdHlsZWRFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHN2Z0VsZW1lbnQpOwotIAotICAgIEF0b21pY1N0
cmluZyBjbGlwcGVySWQoU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoc3ZnU3R5bGUtPmNsaXBQ
YXRoKCkpKTsKLSAgICBBdG9taWNTdHJpbmcgbWFza2VySWQoU1ZHVVJJUmVmZXJlbmNlOjpnZXRU
YXJnZXQoc3ZnU3R5bGUtPm1hc2tFbGVtZW50KCkpKTsKLQotICAgIFNWR1Jlc291cmNlQ2xpcHBl
ciogY2xpcHBlciA9IGdldENsaXBwZXJCeUlkKGRvY3VtZW50KCksIGNsaXBwZXJJZCk7Ci0gICAg
U1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IGdldE1hc2tlckJ5SWQoZG9jdW1lbnQoKSwgbWFz
a2VySWQpOwotCi0gICAgaWYgKGNsaXBwZXIpIHsKLSAgICAgICAgY2xpcHBlci0+YWRkQ2xpZW50
KHN0eWxlZEVsZW1lbnQpOwotICAgICAgICBjbGlwcGVyLT5hcHBseUNsaXAocGFpbnRJbmZvLmNv
bnRleHQsIHN0cm9rZUJCb3gpOwotICAgIH0gZWxzZSBpZiAoIWNsaXBwZXJJZC5pc0VtcHR5KCkp
Ci0gICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+
YWRkUGVuZGluZ1Jlc291cmNlKGNsaXBwZXJJZCwgc3R5bGVkRWxlbWVudCk7Ci0KLSAgICBpZiAo
bWFza2VyKSB7Ci0gICAgICAgIG1hc2tlci0+YWRkQ2xpZW50KHN0eWxlZEVsZW1lbnQpOwotICAg
ICAgICBtYXNrZXItPmFwcGx5TWFzayhwYWludEluZm8uY29udGV4dCwgc3Ryb2tlQkJveCk7Ci0g
ICAgfSBlbHNlIGlmICghbWFza2VySWQuaXNFbXB0eSgpKQotICAgICAgICBzdmdFbGVtZW50LT5k
b2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShtYXNr
ZXJJZCwgc3R5bGVkRWxlbWVudCk7CisgICAgaWYgKChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkg
JiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkgJiYgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJ
U0lCTEUpCisgICAgICAgIHBhaW50T3V0bGluZShwYWludEluZm8uY29udGV4dCwgcGFyZW50WCwg
cGFyZW50WSwgd2lkdGgoKSwgaGVpZ2h0KCksIHN0eWxlKCkpOworICAgIAorICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgIWRyYXdzQ29udGVudHMoKSkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQgb3BhY2l0eSA9IHN0eWxlKCktPm9wYWNpdHko
KTsKLSAgICBpZiAob3BhY2l0eSA8IDEuMGYpIHsKLSAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNsaXAoZW5jbG9zaW5nSW50UmVjdChzdHJva2VCQm94KSk7Ci0gICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOworICAgIGlmICghZmlyc3RD
aGlsZCgpKSB7CisjaWYgRU5BQkxFKFNWR19FWFBFUklNRU5UQUxfRkVBVFVSRVMpCisgICAgICAg
IC8vIFNwZWM6IGdyb3VwcyB3L28gY2hpbGRyZW4gc3RpbGwgbWF5IHJlbmRlciBmaWx0ZXIgY29u
dGVudC4KKyAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gc3R5bGUoKS0+
c3ZnU3R5bGUoKTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGZpbHRlcklkKFNWR1VSSVJlZmVyZW5j
ZTo6Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5maWx0ZXIoKSkpOworICAgICAgICBTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBmaWx0ZXJJZCk7CisgICAg
ICAgIGlmICghZmlsdGVyKQorI2VuZGlmCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IAorICAgIHBhaW50SW5mby5jb250ZXh0LT5zYXZlKCk7CisgICAgCisgICAgYXBwbHlDb250ZW50
VHJhbnNmb3JtcyhwYWludEluZm8sIHBhcmVudFgsIHBhcmVudFkpOwogCiAjaWYgRU5BQkxFKFNW
R19FWFBFUklNRU5UQUxfRkVBVFVSRVMpCi0gICAgaWYgKGZpbHRlcikKLSAgICAgICAgZmlsdGVy
LT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBzdHJva2VCQm94KTsKLSAgICBlbHNl
IGlmICghZmlsdGVySWQuaXNFbXB0eSgpKQotICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVudCgp
LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJJZCwgc3R5
bGVkRWxlbWVudCk7CisgICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IDA7CisjZWxzZQor
ICAgIHZvaWQqIGZpbHRlciA9IDA7CiAjZW5kaWYKKyAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3gg
PSByZWxhdGl2ZUJCb3godHJ1ZSk7CisgICAgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlz
LCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpOworCisgICAgZmxvYXQgb3BhY2l0eSA9
IHN0eWxlKCktPm9wYWNpdHkoKTsKKyAgICBpZiAob3BhY2l0eSA8IDEuMGYpIHsKKyAgICAgICAg
cGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoZW5jbG9zaW5nSW50UmVjdChib3VuZGluZ0JveCkpOwor
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5
KTsKKyAgICB9CiAKICAgICBpZiAoIXZpZXdCb3goKS5pc0VtcHR5KCkpCiAgICAgICAgIHBhaW50
SW5mby5jb250ZXh0LT5jb25jYXRDVE0odmlld3BvcnRUcmFuc2Zvcm0oKSk7CkBAIC0yNDMsNyAr
MjMwLDcgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KFBhaW50SW5mbwogCiAjaWYg
RU5BQkxFKFNWR19FWFBFUklNRU5UQUxfRkVBVFVSRVMpCiAgICAgaWYgKGZpbHRlcikKLSAgICAg
ICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4dCwgc3Ryb2tlQkJveCk7Cisg
ICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIGJvdW5kaW5nQm94
KTsKICNlbmRpZgogCiAgICAgaWYgKG9wYWNpdHkgPCAxLjBmKQpAQCAtMzE0LDcgKzMwMSw3IEBA
IEFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdDb250YWluZXI6OnZpZXcKICAgICAvLyAgZml4aW5n
IGJ1ZyAxMjIwNy4KICAgICBpZiAoIXZpZXdCb3goKS5pc0VtcHR5KCkpIHsKICAgICAgICAgRmxv
YXRSZWN0IHZpZXdwb3J0UmVjdCA9IHZpZXdwb3J0KCk7Ci0gICAgICAgIGlmICghcGFyZW50KCkt
PmlzU1ZHQ29udGFpbmVyKCkpCisgICAgICAgIGlmIChpc091dGVybW9zdFNWRygpKQogICAgICAg
ICAgICAgdmlld3BvcnRSZWN0ID0gRmxvYXRSZWN0KHZpZXdwb3J0KCkueCgpLCB2aWV3cG9ydCgp
LnkoKSwgd2lkdGgoKSwgaGVpZ2h0KCkpOwogCiAgICAgICAgIHJldHVybiBnZXRBc3BlY3RSYXRp
byh2aWV3Qm94KCksIHZpZXdwb3J0UmVjdCk7CkBAIC0zNDgsNyArMzM1LDcgQEAgdm9pZCBSZW5k
ZXJTVkdDb250YWluZXI6OmFic29sdXRlUmVjdHMoVgogQWZmaW5lVHJhbnNmb3JtIFJlbmRlclNW
R0NvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdAogewogICAgIEFmZmluZVRyYW5z
Zm9ybSBjdG0gPSBSZW5kZXJDb250YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCk7Ci0gICAgaWYg
KCFwYXJlbnQoKS0+aXNTVkdDb250YWluZXIoKSkgeworICAgIGlmIChpc091dGVybW9zdFNWRygp
KSB7CiAgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1l
bnQqPihlbGVtZW50KCkpOwogICAgICAgICBjdG0uc2NhbGUoc3ZnLT5jdXJyZW50U2NhbGUoKSk7
CiAgICAgICAgIGN0bS50cmFuc2xhdGUoc3ZnLT5jdXJyZW50VHJhbnNsYXRlKCkueCgpLCBzdmct
PmN1cnJlbnRUcmFuc2xhdGUoKS55KCkpOwpJbmRleDogcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRh
aW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaAkocmV2
aXNpb24gMjE5NzgpCisrKyByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTkyLDEwICs5MiwxMyBAQCBwdWJsaWM6CiAgICAgQWZmaW5lVHJhbnNmb3JtIHZp
ZXdwb3J0VHJhbnNmb3JtKCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGludCB4LCBpbnQgeSwg
aW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24pOworICAgIAorICAgIGJvb2wgaXNPdXRlcm1v
c3RTVkcoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNhbGNWaWV3cG9ydCgpOyAKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gZ2V0QXNwZWN0UmF0aW8oY29uc3QgRmxvYXRSZWN0JiBsb2dpY2Fs
LCBjb25zdCBGbG9hdFJlY3QmIHBoeXNpY2FsKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5Q29udGVu
dFRyYW5zZm9ybXMoUGFpbnRJbmZvJiwgaW50JiBwYXJlbnRYLCBpbnQmIHBhcmVudFkpOwogCiAg
ICAgYm9vbCBtX2RyYXdzQ29udGVudHMgOiAxOwogICAgIGJvb2wgbV9zbGljZSA6IDE7CkluZGV4
OiByZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9S
ZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIxOTc4KQorKysgcmVuZGVyaW5nL1JlbmRlclNW
R0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIlNW
R1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXNrZXIuaCIKICNpbmNs
dWRlICJTVkdMZW5ndGguaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5o
IgotI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTEzMiw0MyArMTMyLDE0IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5m
byYgcGEKICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmluZVRyYW5zZm9ybSgp
LnRyYW5zbGF0ZShwYXJlbnRYLCBwYXJlbnRZKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNv
bmNhdENUTShsb2NhbFRyYW5zZm9ybSgpKTsKICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0
Q1RNKHRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpKTsKLQotICAgIEZsb2F0UmVjdCBib3VuZGlu
Z0JveCA9IEZsb2F0UmVjdCgwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSk7Ci0KLSAgICBTVkdFbGVt
ZW50KiBzdmdFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGVsZW1lbnQoKSk7Ci0g
ICAgQVNTRVJUKHN2Z0VsZW1lbnQgJiYgc3ZnRWxlbWVudC0+ZG9jdW1lbnQoKSAmJiBzdmdFbGVt
ZW50LT5pc1N0eWxlZCgpKTsKLQotICAgIFNWR1N0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oc3ZnRWxlbWVudCk7Ci0gICAgY29uc3Qg
U1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gc3R5bGUoKS0+c3ZnU3R5bGUoKTsKLQotICAgIEF0
b21pY1N0cmluZyBmaWx0ZXJJZChTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChzdmdTdHlsZS0+
ZmlsdGVyKCkpKTsKLSAgICBBdG9taWNTdHJpbmcgY2xpcHBlcklkKFNWR1VSSVJlZmVyZW5jZTo6
Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5jbGlwUGF0aCgpKSk7Ci0gICAgQXRvbWljU3RyaW5nIG1hc2tl
cklkKFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5tYXNrRWxlbWVudCgpKSk7
Ci0KLSNpZiBFTkFCTEUoU1ZHX0VYUEVSSU1FTlRBTF9GRUFUVVJFUykKLSAgICBTVkdSZXNvdXJj
ZUZpbHRlciogZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCgpLCBmaWx0ZXJJZCk7Ci0j
ZW5kaWYKLSAgICBTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChk
b2N1bWVudCgpLCBjbGlwcGVySWQpOwotICAgIFNWR1Jlc291cmNlTWFza2VyKiBtYXNrZXIgPSBn
ZXRNYXNrZXJCeUlkKGRvY3VtZW50KCksIG1hc2tlcklkKTsKLQorICAgIAogI2lmIEVOQUJMRShT
VkdfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKQotICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGZpbHRl
ci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8uY29udGV4dCwgYm91bmRpbmdCb3gpOwotICAgIGVs
c2UgaWYgKCFmaWx0ZXJJZC5pc0VtcHR5KCkpCi0gICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50
KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlcklkLCBz
dHlsZWRFbGVtZW50KTsKKyAgICBTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gMDsKKyNlbHNl
CisgICAgdm9pZCogZmlsdGVyID0gMDsKICNlbmRpZgotCi0gICAgaWYgKGNsaXBwZXIpIHsKLSAg
ICAgICAgY2xpcHBlci0+YWRkQ2xpZW50KHN0eWxlZEVsZW1lbnQpOwotICAgICAgICBjbGlwcGVy
LT5hcHBseUNsaXAocGFpbnRJbmZvLmNvbnRleHQsIGJvdW5kaW5nQm94KTsKLSAgICB9IGVsc2Ug
aWYgKCFjbGlwcGVySWQuaXNFbXB0eSgpKQotICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVudCgp
LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShjbGlwcGVySWQsIHN0
eWxlZEVsZW1lbnQpOwotCi0gICAgaWYgKG1hc2tlcikgewotICAgICAgICBtYXNrZXItPmFkZENs
aWVudChzdHlsZWRFbGVtZW50KTsKLSAgICAgICAgbWFza2VyLT5hcHBseU1hc2socGFpbnRJbmZv
LmNvbnRleHQsIGJvdW5kaW5nQm94KTsKLSAgICB9IGVsc2UgaWYgKCFtYXNrZXJJZC5pc0VtcHR5
KCkpCi0gICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS0+YWRkUGVuZGluZ1Jlc291cmNlKG1hc2tlcklkLCBzdHlsZWRFbGVtZW50KTsKKyAgICBGbG9h
dFJlY3QgYm91bmRpbmdCb3ggPSBGbG9hdFJlY3QoMCwgMCwgd2lkdGgoKSwgaGVpZ2h0KCkpOwor
ICAgIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvLCBib3VuZGluZ0Jv
eCwgZmlsdGVyKTsKIAogICAgIGZsb2F0IG9wYWNpdHkgPSBzdHlsZSgpLT5vcGFjaXR5KCk7CiAg
ICAgaWYgKG9wYWNpdHkgPCAxLjBmKSB7CkBAIC0yNjksNyArMjQwLDcgQEAgdm9pZCBSZW5kZXJT
VkdJbWFnZTo6YWJzb2x1dGVSZWN0cyhWZWN0bwogCiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZH
SW1hZ2U6OnRyYW5zbGF0aW9uRm9yQXR0cmlidXRlcygpCiB7Ci0gICAgU1ZHSW1hZ2VFbGVtZW50
ICppbWFnZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUoKSk7CisgICAgU1ZH
SW1hZ2VFbGVtZW50KiBpbWFnZSA9IHN0YXRpY19jYXN0PFNWR0ltYWdlRWxlbWVudCo+KG5vZGUo
KSk7CiAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZShpbWFnZS0+eCgpLnZh
bHVlKCksIGltYWdlLT55KCkudmFsdWUoKSk7CiB9CiAKSW5kZXg6IHJlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAJKHJldmlzaW9uIDApCisrKyByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKy8qKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgV2ViS2l0LgorICoKKyAqIENvcHlyaWdodCAoQykgMjAw
NyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogICAgICAgICAgIChDKSAyMDA3IEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVO
QUJMRShTVkcpCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUNsaXBwZXIuaCIKKyNpbmNsdWRlICJT
VkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFza2VyLmgiCisjaW5j
bHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBFTkFCTEUoU1ZHX0VYUEVSSU1FTlRBTF9GRUFU
VVJFUykKK3ZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqIG9iamVj
dCwgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgU1ZHUmVzb3VyY2VGaWx0ZXIqJiBmaWx0ZXIpCisjZWxzZQordm9pZCBwcmVw
YXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmplY3Q6
OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCB2b2lk
KikKKyNlbmRpZgoreyAgICAKKyAgICBTVkdFbGVtZW50KiBzdmdFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8U1ZHRWxlbWVudCo+KG9iamVjdC0+ZWxlbWVudCgpKTsKKyAgICBBU1NFUlQoc3ZnRWxlbWVu
dCAmJiBzdmdFbGVtZW50LT5kb2N1bWVudCgpICYmIHN2Z0VsZW1lbnQtPmlzU3R5bGVkKCkpOwor
ICAgIAorICAgIFNWR1N0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdTdHlsZWRFbGVtZW50Kj4oc3ZnRWxlbWVudCk7CisgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUq
IHN2Z1N0eWxlID0gb2JqZWN0LT5zdHlsZSgpLT5zdmdTdHlsZSgpOworICAgIAorICAgIEF0b21p
Y1N0cmluZyBmaWx0ZXJJZChTVkdVUklSZWZlcmVuY2U6OmdldFRhcmdldChzdmdTdHlsZS0+Zmls
dGVyKCkpKTsKKyAgICBBdG9taWNTdHJpbmcgY2xpcHBlcklkKFNWR1VSSVJlZmVyZW5jZTo6Z2V0
VGFyZ2V0KHN2Z1N0eWxlLT5jbGlwUGF0aCgpKSk7CisgICAgQXRvbWljU3RyaW5nIG1hc2tlcklk
KFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5tYXNrRWxlbWVudCgpKSk7Cisg
ICAgCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gb2JqZWN0LT5kb2N1bWVudCgpOworI2lmIEVO
QUJMRShTVkdfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKQorICAgIGZpbHRlciA9IGdldEZpbHRlckJ5
SWQoZG9jdW1lbnQsIGZpbHRlcklkKTsKKyNlbmRpZgorICAgIFNWR1Jlc291cmNlQ2xpcHBlciog
Y2xpcHBlciA9IGdldENsaXBwZXJCeUlkKGRvY3VtZW50LCBjbGlwcGVySWQpOworICAgIFNWR1Jl
c291cmNlTWFza2VyKiBtYXNrZXIgPSBnZXRNYXNrZXJCeUlkKGRvY3VtZW50LCBtYXNrZXJJZCk7
CisgICAgCisjaWYgRU5BQkxFKFNWR19FWFBFUklNRU5UQUxfRkVBVFVSRVMpCisgICAgaWYgKGZp
bHRlcikKKyAgICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBi
b3VuZGluZ0JveCk7CisgICAgZWxzZSBpZiAoIWZpbHRlcklkLmlzRW1wdHkoKSkKKyAgICAgICAg
c3ZnRWxlbWVudC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5n
UmVzb3VyY2UoZmlsdGVySWQsIHN0eWxlZEVsZW1lbnQpOworI2VuZGlmCisgICAgCisgICAgaWYg
KGNsaXBwZXIpIHsKKyAgICAgICAgY2xpcHBlci0+YWRkQ2xpZW50KHN0eWxlZEVsZW1lbnQpOwor
ICAgICAgICBjbGlwcGVyLT5hcHBseUNsaXAocGFpbnRJbmZvLmNvbnRleHQsIGJvdW5kaW5nQm94
KTsKKyAgICB9IGVsc2UgaWYgKCFjbGlwcGVySWQuaXNFbXB0eSgpKQorICAgICAgICBzdmdFbGVt
ZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJj
ZShjbGlwcGVySWQsIHN0eWxlZEVsZW1lbnQpOworICAgIAorICAgIGlmIChtYXNrZXIpIHsKKyAg
ICAgICAgbWFza2VyLT5hZGRDbGllbnQoc3R5bGVkRWxlbWVudCk7CisgICAgICAgIG1hc2tlci0+
YXBwbHlNYXNrKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7CisgICAgfSBlbHNlIGlm
ICghbWFza2VySWQuaXNFbXB0eSgpKQorICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVudCgpLT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShtYXNrZXJJZCwgc3R5bGVk
RWxlbWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTVkcpCkluZGV4OiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmgJKHJldmlzaW9uIDApCisrKyByZW5kZXJpbmcv
U1ZHUmVuZGVyU3VwcG9ydC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKioKKyAq
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIFdlYktpdC4K
KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqICAg
ICAgICAgICAoQykgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1
aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICoKKyAqLworCisjaWYg
RU5BQkxFKFNWRykKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyNpZiBFTkFCTEUoU1ZHX0VYUEVSSU1FTlRBTF9GRUFUVVJFUykKK2NsYXNzIFNW
R1Jlc291cmNlRmlsdGVyOwordm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9i
amVjdCosIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gsIFNWR1Jlc291cmNlRmlsdGVyKiYpOworI2Vsc2UKK3ZvaWQgcHJlcGFy
ZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCB2b2lkKik7CisjZW5k
aWYKKworfQorCisjZW5kaWYKSW5kZXg6IHJlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSByZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAJKHJldmlzaW9uIDIx
OTc4KQorKysgcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJTVkdJbmxpbmVG
bG93Qm94LmgiCiAjaW5jbHVkZSAiU1ZHUGFpbnRTZXJ2ZXIuaCIKKyNpbmNsdWRlICJTVkdSZW5k
ZXJTdXBwb3J0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZU1hc2tlci5oIgpAQCAt
NTAsNyArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKFNWR19FWFBFUklN
RU5UQUxfRkVBVFVSRVMpCiBzdGF0aWMgdm9pZCBwcmVwYXJlVGV4dFJlbmRlcmluZyhSZW5kZXJP
YmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSwgSW5saW5lRmxvd0Jv
eCogZmxvd0JveCwgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgU1ZHUmVzb3VyY2VGaWx0ZXIqJiBm
aWx0ZXIpCiAjZWxzZQotc3RhdGljIHZvaWQgcHJlcGFyZVRleHRSZW5kZXJpbmcoUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHksIElubGluZUZsb3dCb3gq
IGZsb3dCb3gsIEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCitzdGF0aWMgdm9pZCBwcmVwYXJlVGV4
dFJlbmRlcmluZyhSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGlu
dCB0eSwgSW5saW5lRmxvd0JveCogZmxvd0JveCwgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgdm9p
ZCogZmlsdGVyKQogI2VuZGlmCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBmbG93Qm94
LT5vYmplY3QoKTsKQEAgLTYwLDQyICs2MSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVUZXh0UmVu
ZGVyaW5nKFJlbmRlck8KIAogICAgIGJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KHR4ICsgZmxvd0Jv
eC0+eFBvcygpLCB0eSArIGZsb3dCb3gtPnlQb3MoKSwgZmxvd0JveC0+d2lkdGgoKSwgZmxvd0Jv
eC0+aGVpZ2h0KCkpOwogCi0gICAgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCA9IHN0YXRpY19jYXN0
PFNWR0VsZW1lbnQqPihvYmplY3QtPmVsZW1lbnQoKSk7Ci0gICAgQVNTRVJUKHN2Z0VsZW1lbnQg
JiYgc3ZnRWxlbWVudC0+ZG9jdW1lbnQoKSAmJiBzdmdFbGVtZW50LT5pc1N0eWxlZCgpKTsKLQot
ICAgIFNWR1N0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHls
ZWRFbGVtZW50Kj4oc3ZnRWxlbWVudCk7Ci0gICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0
eWxlID0gb2JqZWN0LT5zdHlsZSgpLT5zdmdTdHlsZSgpOwotCi0jaWYgRU5BQkxFKFNWR19FWFBF
UklNRU5UQUxfRkVBVFVSRVMpCi0gICAgQXRvbWljU3RyaW5nIGZpbHRlcklkKFNWR1VSSVJlZmVy
ZW5jZTo6Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5maWx0ZXIoKSkpOwotI2VuZGlmCi0KLSAgICBBdG9t
aWNTdHJpbmcgY2xpcHBlcklkKFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5j
bGlwUGF0aCgpKSk7Ci0gICAgQXRvbWljU3RyaW5nIG1hc2tlcklkKFNWR1VSSVJlZmVyZW5jZTo6
Z2V0VGFyZ2V0KHN2Z1N0eWxlLT5tYXNrRWxlbWVudCgpKSk7Ci0KLSAgICBTVkdSZXNvdXJjZUNs
aXBwZXIqIGNsaXBwZXIgPSBnZXRDbGlwcGVyQnlJZChvYmplY3QtPmRvY3VtZW50KCksIGNsaXBw
ZXJJZCk7Ci0gICAgU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IGdldE1hc2tlckJ5SWQob2Jq
ZWN0LT5kb2N1bWVudCgpLCBtYXNrZXJJZCk7Ci0KLSNpZiBFTkFCTEUoU1ZHX0VYUEVSSU1FTlRB
TF9GRUFUVVJFUykgCi0gICAgZmlsdGVyID0gZ2V0RmlsdGVyQnlJZChvYmplY3QtPmRvY3VtZW50
KCksIGZpbHRlcklkKTsKLQotICAgIGlmIChmaWx0ZXIpCi0gICAgICAgIGZpbHRlci0+cHJlcGFy
ZUZpbHRlcihwYWludEluZm8uY29udGV4dCwgYm91bmRpbmdCb3gpOwotICAgIGVsc2UgaWYgKCFm
aWx0ZXJJZC5pc0VtcHR5KCkpCi0gICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vz
c1NWR0V4dGVuc2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlcklkLCBzdHlsZWRFbGVt
ZW50KTsKLSNlbmRpZgotCi0gICAgaWYgKGNsaXBwZXIpIHsKLSAgICAgICAgY2xpcHBlci0+YWRk
Q2xpZW50KHN0eWxlZEVsZW1lbnQpOwotICAgICAgICBjbGlwcGVyLT5hcHBseUNsaXAocGFpbnRJ
bmZvLmNvbnRleHQsIGJvdW5kaW5nQm94KTsKLSAgICB9IGVsc2UgaWYgKCFjbGlwcGVySWQuaXNF
bXB0eSgpKQotICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNp
b25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShjbGlwcGVySWQsIHN0eWxlZEVsZW1lbnQpOwotCi0g
ICAgaWYgKG1hc2tlcikgewotICAgICAgICBtYXNrZXItPmFkZENsaWVudChzdHlsZWRFbGVtZW50
KTsKLSAgICAgICAgbWFza2VyLT5hcHBseU1hc2socGFpbnRJbmZvLmNvbnRleHQsIGJvdW5kaW5n
Qm94KTsKLSAgICB9IGVsc2UgaWYgKCFtYXNrZXJJZC5pc0VtcHR5KCkpCi0gICAgICAgIHN2Z0Vs
ZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291
cmNlKG1hc2tlcklkLCBzdHlsZWRFbGVtZW50KTsKKyAgICBwcmVwYXJlVG9SZW5kZXJTVkdDb250
ZW50KG9iamVjdCwgcGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyKTsKIH0KIAogaW5saW5l
IGJvb2wgaXNWZXJ0aWNhbFdyaXRpbmdNb2RlKGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdHlsZSkK
QEAgLTE1NCwxMCArMTIwLDEwIEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVy
T2JqZWMKIAogI2lmIEVOQUJMRShTVkdfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTKQogICAgIFNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIgPSAwOwotICAgIHByZXBhcmVUZXh0UmVuZGVyaW5nKHBhaW50
SW5mbywgdHgsIHR5LCB0aGlzLCBib3VuZGluZ0JveCwgZmlsdGVyKTsKICNlbHNlCi0gICAgcHJl
cGFyZVRleHRSZW5kZXJpbmcocGFpbnRJbmZvLCB0eCwgdHksIHRoaXMsIGJvdW5kaW5nQm94KTsK
KyAgICB2b2lkKiBmaWx0ZXIgPSAwOwogI2VuZGlmCisgICAgcHJlcGFyZVRleHRSZW5kZXJpbmco
cGFpbnRJbmZvLCB0eCwgdHksIHRoaXMsIGJvdW5kaW5nQm94LCBmaWx0ZXIpOwogCiAgICAgUmVu
ZGVyT2JqZWN0OjpQYWludEluZm8gcGkocGFpbnRJbmZvKTsKIApAQCAtMTA0NywxMCArMTAxMywx
MCBAQCB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50SW5saW5lQm94ZXMoCiAKICNpZiBFTkFC
TEUoU1ZHX0VYUEVSSU1FTlRBTF9GRUFUVVJFUykKICAgICAgICAgICAgIFNWR1Jlc291cmNlRmls
dGVyKiBmaWx0ZXIgPSAwOwotICAgICAgICAgICAgcHJlcGFyZVRleHRSZW5kZXJpbmcocGFpbnRJ
bmZvLCB0eCwgdHksIGZsb3dCb3gsIGJvdW5kaW5nQm94LCBmaWx0ZXIpOwogI2Vsc2UKLSAgICAg
ICAgICAgIHByZXBhcmVUZXh0UmVuZGVyaW5nKHBhaW50SW5mbywgdHgsIHR5LCBmbG93Qm94LCBi
b3VuZGluZ0JveCk7CisgICAgICAgICAgICB2b2lkKiBmaWx0ZXIgPSAwOwogI2VuZGlmCisgICAg
ICAgICAgICBwcmVwYXJlVGV4dFJlbmRlcmluZyhwYWludEluZm8sIHR4LCB0eSwgZmxvd0JveCwg
Ym91bmRpbmdCb3gsIGZpbHRlcik7CiAKICAgICAgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0
ID0gZmxvd0JveC0+b2JqZWN0KCk7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3Q6OlBhaW50SW5m
byBwaShwYWludEluZm8pOwo=
</data>
<flag name="review"
          id="6151"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>