<?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>62185</bug_id>
          
          <creation_ts>2011-06-06 22:15:09 -0700</creation_ts>
          <short_desc>Clean up ContentData</short_desc>
          <delta_ts>2011-06-07 15:15:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>416320</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-06 22:15:09 -0700</bug_when>
    <thetext>ContentData is pretty heinous:
* It uses manual refcounting of images and strings
* deleteContent() leaves stale pointers around
* It&apos;s not copyable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416763</commentid>
    <comment_count>1</comment_count>
      <attachid>96293</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-07 13:44:49 -0700</bug_when>
    <thetext>Created attachment 96293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416765</commentid>
    <comment_count>2</comment_count>
      <attachid>96293</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-06-07 13:48:51 -0700</bug_when>
    <thetext>Comment on attachment 96293
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416825</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-07 15:15:20 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/88270</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96293</attachid>
            <date>2011-06-07 13:44:49 -0700</date>
            <delta_ts>2011-06-07 13:48:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62185-20110607134448.patch</filename>
            <type>text/plain</type>
            <size>28708</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgyNDEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMWYzNjc4ODI4NWQwMTFh
NWU3MmQ0MGMwNGJmMWMzYzA2ZDU0ZjVhLi45Y2U1ZjI4OWZmYmQzOGNlOGYzODZmMmEyNjAxYWM5
YmNmNDRiZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMTEtMDYtMDcgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgQ29udGVudERhdGEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTg1CisKKyAgICAgICAg
Q29udGVudERhdGEgZGlkIG1hbnVhbCByZWYoKS9kZXJlZigpIGFuZCBoYWQgYSBsb3Qgb2YgYXdr
d2FyZAorICAgICAgICBjb2RlIGZyb20gdXNpbmcgYSB1bmlvbiB0byBzdG9yZSBkYXRhLgorICAg
ICAgICAKKyAgICAgICAgQ2xlYW4gdGhpcyB1cCBieSBhZGRpbmcgQ29udGVudERhdGEgc3ViY2xh
c3NlcyBmb3IgZGlmZmVyZW50CisgICAgICAgIGNvbnRlbnQgdHlwZXMsIHdoaWNoIGFyZSB0aGVu
IGFibGUgdG8gdXNlIFJlZlB0ciBhbmQgT3duUHRyCisgICAgICAgIGFzIGFwcHJvcHJpYXRlLgor
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb250ZW50VG9DU1NWYWx1ZSk6IENhc3QgdG8gZGlmZmVyZW50IENvbnRlbnRE
YXRhIHR5cGVzIGFzCisgICAgICAgIGFwcHJvcHJpYXRlLgorCisgICAgICAgICogY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Omxv
YWRQZW5kaW5nSW1hZ2VzKTogQ2FzdCB0byBJbWFnZUNvbnRlbnREYXRhLCBhbmQgZG8gc29tZQor
ICAgICAgICBjb25zdCBneXJhdGlvbnMuCisKKyAgICAgICAgKiBodG1sL0hUTUxCUkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJSRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIpOiBV
c2UgaGFzQ29udGVudCgpLgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6
IERpdHRvCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKTogRGl0dG8KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6Y3JlYXRlT2JqZWN0KTogQ2FzdCB0byBJbWFnZUNvbnRlbnREYXRhLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQpOiBDYXN0IHRv
IGRpZmZlcmVudCBDb250ZW50RGF0YSB0eXBlcyBhcworICAgICAgICBhcHByb3ByaWF0ZS4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudERhdGE6On5Db250ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RGF0YTo6aXNDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREYXRhOjppc0ltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREYXRhOjppc1F1b3RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnREYXRhOjppc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERh
dGE6Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OnNldE5leHQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VDb250ZW50RGF0YTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VDb250ZW50RGF0YTo6c2V0SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VD
b250ZW50RGF0YTo6SW1hZ2VDb250ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNv
bnRlbnREYXRhOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udGVudERhdGE6Omlz
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRlbnREYXRhOjp0ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDb250ZW50RGF0YTo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q29udGVudERhdGE6OlRleHRDb250ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29udGVudERhdGE6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRlbnREYXRh
Ojppc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckNvbnRlbnREYXRhOjpjb3VudGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJDb250ZW50RGF0YTo6c2V0Q291bnRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb3VudGVyQ29udGVudERhdGE6OkNvdW50ZXJDb250ZW50RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyQ29udGVudERhdGE6OnR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q291bnRlckNvbnRlbnREYXRhOjppc0NvdW50ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVvdGVDb250ZW50RGF0YTo6cXVvdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXVvdGVDb250
ZW50RGF0YTo6c2V0UXVvdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXVvdGVDb250ZW50RGF0YTo6
UXVvdGVDb250ZW50RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpRdW90ZUNvbnRlbnREYXRhOjp0
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1b3RlQ29udGVudERhdGE6OmlzUXVvdGUpOgorICAg
ICAgICBBZGQgc3ViY2xhc3NlcyBmb3IgZGlmZmVyZW50IGNvbnRlbnQgdHlwZXMsIHdoaWNoIGFy
ZSBjcmVhdGVkCisgICAgICAgIHZpYSBvdmVybG9hZGVkIGNyZWF0ZSgpIG1ldGhvZHMgb24gdGhl
IGJhc2UgY2xhc3MuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcj09KTogVGVzdCBmb3IgdHlwZSBlcXVhbGl0eSwgZm9sbG93ZWQgYnkgY29t
cGFyaW5nIGRhdGEuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKworICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6Y2xlYXJDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjph
cHBlbmRDb250ZW50KTogCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29udGVu
dCk6IFJlcGxhY2UgdGhlIG92ZXJseSBjb21wbGV4IHByZXBhcmVUb1NldENvbnRlbnQoKQorICAg
ICAgICBjb2RlIHdpdGggY29kZSB0aGF0IGVpdGhlciBhcHBlbmRzLCBvciByZXBsYWNlcyB0aGUg
Y29udGVudC4KKyAgICAgICAgVGhpcyBsb3NlcyBhbiBvcHRpbWl6YXRpb24gd2hlcmUgdGhlIGV4
aXN0aW5nIENvbnRlbnREYXRhIG9iamVjdCBjb3VsZCBnZXQgcmV1c2VkLAorICAgICAgICBidXQg
dGhpcyBzZWVtcyB0byBiZSByYXJlbHkgaGl0IGluIHByYWN0aWNlLgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxh
Z3M6Omhhc0NvbnRlbnQpOiBDb252ZW5pZW5jZSBtZXRob2QuCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6Y29udGVudERhdGFFcXVpdmFsZW50KTogVGVzdAor
ICAgICAgICB0aGF0IHRoZSBwb2ludGVycyBhcmUgbm9uLW51bGwsIHRoZW4gdXNlIHRoZSAhPSBv
cGVyYXRvci4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5oOiBDb250ZW50RGF0YSBpcyBhIGNsYXNzIG5vdy4KKwogMjAxMS0wNi0wNyAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDEzZDYzNDAxOGUxNWEyNTQ1M2YwY2Q5M2M4NDU0
MDc3MTExZDczNjEuLjg1YmUzNzAxYmZlYWRlZTk3M2M1OWE3MWU5YjhhZDZjOTY3MzRmODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC03NTUsMTUgKzc1NSwxNSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY29u
dGVudFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NQcmltaQogICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAgICAgZm9yIChjb25zdCBDb250ZW50RGF0YSogY29udGVudERhdGEgPSBzdHlsZS0+
Y29udGVudERhdGEoKTsgY29udGVudERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5l
eHQoKSkgewogICAgICAgICBpZiAoY29udGVudERhdGEtPmlzQ291bnRlcigpKSB7Ci0gICAgICAg
ICAgICBjb25zdCBDb3VudGVyQ29udGVudCogY291bnRlciA9IGNvbnRlbnREYXRhLT5jb3VudGVy
KCk7CisgICAgICAgICAgICBjb25zdCBDb3VudGVyQ29udGVudCogY291bnRlciA9IHN0YXRpY19j
YXN0PGNvbnN0IENvdW50ZXJDb250ZW50RGF0YSo+KGNvbnRlbnREYXRhKS0+Y291bnRlcigpOwog
ICAgICAgICAgICAgQVNTRVJUKGNvdW50ZXIpOwogICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHBy
aW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKGNvdW50ZXItPmlkZW50aWZpZXIoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19DT1VOVEVSX05BTUUpKTsKICAgICAgICAgfSBlbHNlIGlmIChj
b250ZW50RGF0YS0+aXNJbWFnZSgpKSB7Ci0gICAgICAgICAgICBjb25zdCBTdHlsZUltYWdlKiBp
bWFnZSA9IGNvbnRlbnREYXRhLT5pbWFnZSgpOworICAgICAgICAgICAgY29uc3QgU3R5bGVJbWFn
ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxjb25zdCBJbWFnZUNvbnRlbnREYXRhKj4oY29udGVudERh
dGEpLT5pbWFnZSgpOwogICAgICAgICAgICAgQVNTRVJUKGltYWdlKTsKICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChpbWFnZS0+Y3NzVmFsdWUoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGVu
dERhdGEtPmlzVGV4dCgpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZVZhbHVlKGNvbnRlbnREYXRhLT50ZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKSk7CisgICAgICAgICAgICBsaXN0LT5hcHBlbmQocHJpbWl0aXZlVmFsdWVD
YWNoZS0+Y3JlYXRlVmFsdWUoc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dENvbnRlbnREYXRhKj4oY29u
dGVudERhdGEpLT50ZXh0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CiAgICAg
fQogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAppbmRleCAxZDM3ZjUwYmEyNTYyNGFkOTA5Zjc1N2Q3YzYyZWMxYjk1Zjk1
ZGFjLi41ZGQ2ZDZlMzg5NTcxMjUwOTI1ODQ4ZjNhNDQxY2E3NTZkZWQ4N2IwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC02Nzc1LDEwICs2Nzc1LDEzIEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogCiAgICAgICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Q29udGVudDogewogICAgICAgICAgICAgICAgIGZvciAoQ29udGVudERh
dGEqIGNvbnRlbnREYXRhID0gY29uc3RfY2FzdDxDb250ZW50RGF0YSo+KG1fc3R5bGUtPmNvbnRl
bnREYXRhKCkpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50RGF0YS0+aXNJbWFnZSgpICYmIGNv
bnRlbnREYXRhLT5pbWFnZSgpLT5pc1BlbmRpbmdJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBDU1NJbWFnZVZhbHVlKiBpbWFnZVZhbHVlID0gc3RhdGljX2Nhc3Q8U3R5bGVQZW5k
aW5nSW1hZ2UqPihjb250ZW50RGF0YS0+aW1hZ2UoKSktPmNzc0ltYWdlVmFsdWUoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChTdHlsZUNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGlt
YWdlVmFsdWUtPmNhY2hlZEltYWdlKGNhY2hlZFJlc291cmNlTG9hZGVyKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZW50RGF0YS0+c2V0SW1hZ2UoY2FjaGVkSW1hZ2UpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoY29udGVudERhdGEtPmlzSW1hZ2UoKSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3R5bGVJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxJbWFn
ZUNvbnRlbnREYXRhKj4oY29udGVudERhdGEpLT5pbWFnZSgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGltYWdlLT5pc1BlbmRpbmdJbWFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTSW1hZ2VWYWx1ZSogaW1hZ2VWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFN0
eWxlUGVuZGluZ0ltYWdlKj4oaW1hZ2UpLT5jc3NJbWFnZVZhbHVlKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFN0eWxlQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VW
YWx1ZS0+Y2FjaGVkSW1hZ2UoY2FjaGVkUmVzb3VyY2VMb2FkZXIpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxJbWFnZUNvbnRlbnREYXRhKj4oY29udGVudERh
dGEpLT5zZXRJbWFnZShjYWNoZWRJbWFnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAppbmRleCBlOGY0NTIwODg5
Y2Y2NGU2YTgxODAxZTA1NmZmOTBlMjgxMGMxYmRjLi4yNjM5MDYwMTA4OWI5OGRmYzUzNGRkNWMz
Y2FjYzhlNzAxYmM0ZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBIVE1MQlJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqIGF0dHIpCiAKIFJlbmRlck9iamVjdCogSFRNTEJSRWxlbWVudDo6Y3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgIGlm
IChzdHlsZS0+Y29udGVudERhdGEoKSkKKyAgICAgaWYgKHN0eWxlLT5oYXNDb250ZW50KCkpCiAg
ICAgICAgIHJldHVybiBSZW5kZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCh0aGlzLCBzdHlsZSk7CiAK
ICAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckJSKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggOGI3MzE4NDA0MmIxOTMzNDMyZTM5
NmMzMTUxOGFjOGViZTE2ZTZlNy4uNzUzZWIwZjRiMTllMjdmY2NhNDc3ZTIyMmYzMGIwNGEzNzEz
NDliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCkBA
IC0xNTcsNyArMTU3LDcgQEAgYm9vbCBIVE1MRnJhbWVTZXRFbGVtZW50OjpyZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogCiBSZW5kZXJPYmplY3Qg
KkhUTUxGcmFtZVNldEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hICphcmVuYSwg
UmVuZGVyU3R5bGUgKnN0eWxlKQogewotICAgIGlmIChzdHlsZS0+Y29udGVudERhdGEoKSkKKyAg
ICBpZiAoc3R5bGUtPmhhc0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlck9iamVjdDo6
Y3JlYXRlT2JqZWN0KHRoaXMsIHN0eWxlKTsKICAgICAKICAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyRnJhbWVTZXQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAppbmRleCBkNjYwNzVlNDgzMjM1YTM0MDZmYTA1MDg1NWQ2MTQ1OTBjMmI5MDllLi5hODMx
ZjBmMTJiYmMwNzkyOWFlYTczZTMzNGY5ZmMxYTE1YWVjZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTE4MCw3ICsxODAsNyBAQCBTdHJpbmcgSFRNTElt
YWdlRWxlbWVudDo6YWx0VGV4dCgpIGNvbnN0CiAKIFJlbmRlck9iamVjdCogSFRNTEltYWdlRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSogc3R5
bGUpCiB7Ci0gICAgaWYgKHN0eWxlLT5jb250ZW50RGF0YSgpKQorICAgIGlmIChzdHlsZS0+aGFz
Q29udGVudCgpKQogICAgICAgICByZXR1cm4gUmVuZGVyT2JqZWN0OjpjcmVhdGVPYmplY3QodGhp
cywgc3R5bGUpOwogCiAgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVuYSkgUmVuZGVy
SW1hZ2UodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDc4NGUzZDUxODRlMjVhNTc2MGNhNjZkMTkxODQyZjc2N2U3NGUyMGEuLmY4ODEwZWVlYjNl
YWJjYzQ5MjZjOTE5MWM2OTliOWRlZDY5MDU2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xMDksOCArMTA5LDggQEAgUmVuZGVyT2JqZWN0KiBSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdChOb2RlKiBub2RlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiAg
ICAgaWYgKGNvbnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGNvbnRlbnREYXRh
LT5pc0ltYWdlKCkgJiYgZG9jICE9IG5vZGUpIHsKICAgICAgICAgUmVuZGVySW1hZ2UqIGltYWdl
ID0gbmV3IChhcmVuYSkgUmVuZGVySW1hZ2Uobm9kZSk7CiAgICAgICAgIGltYWdlLT5zZXRTdHls
ZShzdHlsZSk7Ci0gICAgICAgIGlmIChTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gY29udGVudERh
dGEtPmltYWdlKCkpCi0gICAgICAgICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJ
bWFnZVJlc291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKHN0eWxlSW1hZ2UpKTsKKyAgICAgICAgaWYg
KGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UgPSBzdGF0aWNfY2FzdDxjb25zdCBJbWFnZUNv
bnRlbnREYXRhKj4oY29udGVudERhdGEpLT5pbWFnZSgpKQorICAgICAgICAgICAgaW1hZ2UtPnNl
dEltYWdlUmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2U6OmNyZWF0ZShjb25z
dF9jYXN0PFN0eWxlSW1hZ2UqPihzdHlsZUltYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUo
KSk7CiAgICAgICAgIHJldHVybiBpbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHAKaW5kZXggYmMwMDFlZGQzZWFmZmU0MmJkZDEy
MzFjMmM3ZjdhYjIwMWI2YjJiOS4uMzZjM2RkNGFjZDA3MmY2NTk2ZDQxMzUxODQ4MjUxMjAyMTlj
ZWE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENo
aWxkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdENo
aWxkTGlzdC5jcHAKQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFJlbmRlck9iamVjdENoaWxkTGlz
dDo6dXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KFJlbmRlck9iamVjdCogb3duZXIsIFBzZXVkbwog
ICAgICAgICAgICAgY2FzZSBDT05URU5UX05PTkU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIENPTlRFTlRfVEVYVDoKLSAgICAgICAgICAgICAgICByZW5kZXJlciA9
IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlclRleHRGcmFnbWVudChvd25lci0+ZG9j
dW1lbnQoKSAvKiBhbm9ueW1vdXMgb2JqZWN0ICovLCBjb250ZW50LT50ZXh0KCkpOworICAgICAg
ICAgICAgICAgIHJlbmRlcmVyID0gbmV3IChvd25lci0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyVGV4
dEZyYWdtZW50KG93bmVyLT5kb2N1bWVudCgpIC8qIGFub255bW91cyBvYmplY3QgKi8sIHN0YXRp
Y19jYXN0PGNvbnN0IFRleHRDb250ZW50RGF0YSo+KGNvbnRlbnQpLT50ZXh0KCkuaW1wbCgpKTsK
ICAgICAgICAgICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ09OVEVOVF9PQkpFQ1Q6
IHsKQEAgLTQzMCwxOSArNDMwLDE5IEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0Ojp1cGRh
dGVCZWZvcmVBZnRlckNvbnRlbnQoUmVuZGVyT2JqZWN0KiBvd25lciwgUHNldWRvCiAgICAgICAg
ICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUo
KTsKICAgICAgICAgICAgICAgICBzdHlsZS0+aW5oZXJpdEZyb20ocHNldWRvRWxlbWVudFN0eWxl
KTsKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0U3R5bGUoc3R5bGUucmVsZWFzZSgpKTsKLSAg
ICAgICAgICAgICAgICBpZiAoU3R5bGVJbWFnZSogc3R5bGVJbWFnZSA9IGNvbnRlbnQtPmltYWdl
KCkpCi0gICAgICAgICAgICAgICAgICAgIGltYWdlLT5zZXRJbWFnZVJlc291cmNlKFJlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlOjpjcmVhdGUoc3R5bGVJbWFnZSkpOworICAgICAgICAgICAg
ICAgIGlmIChjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
SW1hZ2VDb250ZW50RGF0YSo+KGNvbnRlbnQpLT5pbWFnZSgpKQorICAgICAgICAgICAgICAgICAg
ICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6
Y3JlYXRlKGNvbnN0X2Nhc3Q8U3R5bGVJbWFnZSo+KHN0eWxlSW1hZ2UpKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNvdXJjZShS
ZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIg
PSBpbWFnZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDT05URU5UX0NPVU5URVI6Ci0gICAgICAgICAgICByZW5kZXJlciA9IG5ldyAob3duZXIt
PnJlbmRlckFyZW5hKCkpIFJlbmRlckNvdW50ZXIob3duZXItPmRvY3VtZW50KCksICpjb250ZW50
LT5jb3VudGVyKCkpOworICAgICAgICAgICAgcmVuZGVyZXIgPSBuZXcgKG93bmVyLT5yZW5kZXJB
cmVuYSgpKSBSZW5kZXJDb3VudGVyKG93bmVyLT5kb2N1bWVudCgpLCAqc3RhdGljX2Nhc3Q8Y29u
c3QgQ291bnRlckNvbnRlbnREYXRhKj4oY29udGVudCktPmNvdW50ZXIoKSk7CiAgICAgICAgICAg
ICByZW5kZXJlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENPTlRFTlRfUVVPVEU6Ci0gICAgICAgICAgICByZW5kZXJlciA9
IG5ldyAob3duZXItPnJlbmRlckFyZW5hKCkpIFJlbmRlclF1b3RlKG93bmVyLT5kb2N1bWVudCgp
LCBjb250ZW50LT5xdW90ZSgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyID0gbmV3IChvd25lci0+
cmVuZGVyQXJlbmEoKSkgUmVuZGVyUXVvdGUob3duZXItPmRvY3VtZW50KCksIHN0YXRpY19jYXN0
PGNvbnN0IFF1b3RlQ29udGVudERhdGEqPihjb250ZW50KS0+cXVvdGUoKSk7CiAgICAgICAgICAg
ICByZW5kZXJlci0+c2V0U3R5bGUocHNldWRvRWxlbWVudFN0eWxlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29udGVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRl
bnREYXRhLmNwcAppbmRleCBhYjUwNGZkMTkyMTM5NWEzNjY5NWFhMDg1ZWMyNzk1ODE2ZTE2Njc2
Li45YzUyNDliOTdkZDBiYTc0ZjQ0MTIxMmM0NjYwYThjYzZjMTQwMGU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKQEAgLTIzLDYxICsyMyw1
MyBAQAogI2luY2x1ZGUgIkNvbnRlbnREYXRhLmgiCiAKICNpbmNsdWRlICJTdHlsZUltYWdlLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXZvaWQgQ29udGVudERhdGE6OmNsZWFyKCkKK1Bhc3NPd25QdHI8Q29udGVudERhdGE+IENv
bnRlbnREYXRhOjpjcmVhdGUoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkKIHsKLSAgICBk
ZWxldGVDb250ZW50KCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbWFnZUNvbnRlbnREYXRh
KGltYWdlKSk7Cit9CiAKLSAgICAvLyBEZWxldGUgdGhlIHNpbmdseS1saW5rZWQgbGlzdCB3aXRo
b3V0IHJlY3Vyc2luZy4KLSAgICBmb3IgKE93blB0cjxDb250ZW50RGF0YT4gbmV4dCA9IG1fbmV4
dC5yZWxlYXNlKCk7IG5leHQ7IG5leHQgPSBuZXh0LT5tX25leHQucmVsZWFzZSgpKSB7IH0KK1Bh
c3NPd25QdHI8Q29udGVudERhdGE+IENvbnRlbnREYXRhOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0
ZXh0KQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dENvbnRlbnREYXRhKHRleHQpKTsK
K30KKworUGFzc093blB0cjxDb250ZW50RGF0YT4gQ29udGVudERhdGE6OmNyZWF0ZShQYXNzT3du
UHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q291bnRlckNvbnRlbnREYXRhKGNvdW50ZXIpKTsKIH0KIAotLy8gRklYTUU6IFdoeSBpc24ndCB0
aGlzIGp1c3Qgb3BlcmF0b3I9PT8KLS8vIEZJWE1FOiBUaGlzIGlzIG5vdCBhIGdvb2QgbmFtZSBm
b3IgYSBib29sZWFuLXJldHVybmluZyBmdW5jdGlvbi4KLWJvb2wgQ29udGVudERhdGE6OmRhdGFF
cXVpdmFsZW50KGNvbnN0IENvbnRlbnREYXRhJiBvdGhlcikgY29uc3QKK1Bhc3NPd25QdHI8Q29u
dGVudERhdGE+IENvbnRlbnREYXRhOjpjcmVhdGUoUXVvdGVUeXBlIHF1b3RlKQogewotICAgIGlm
ICh0eXBlKCkgIT0gb3RoZXIudHlwZSgpKQorICAgIHJldHVybiBhZG9wdFB0cihuZXcgUXVvdGVD
b250ZW50RGF0YShxdW90ZSkpOworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgQ29udGVudERh
dGEmIGEsIGNvbnN0IENvbnRlbnREYXRhJiBiKQoreworICAgIGlmIChhLnR5cGUoKSAhPSBiLnR5
cGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoICh0eXBlKCkpIHsKKyAg
ICBzd2l0Y2ggKGEudHlwZSgpKSB7CiAgICAgY2FzZSBDT05URU5UX05PTkU6CiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGNhc2UgQ09OVEVOVF9URVhUOgotICAgICAgICByZXR1cm4gZXF1YWwo
dGV4dCgpLCBvdGhlci50ZXh0KCkpOwogICAgIGNhc2UgQ09OVEVOVF9PQkpFQ1Q6Ci0gICAgICAg
IHJldHVybiBTdHlsZUltYWdlOjppbWFnZXNFcXVpdmFsZW50KGltYWdlKCksIG90aGVyLmltYWdl
KCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSW1hZ2VDb250ZW50RGF0YSo+
KCZhKS0+aW1hZ2UoKSA9PSBzdGF0aWNfY2FzdDxjb25zdCBJbWFnZUNvbnRlbnREYXRhKj4oJmIp
LT5pbWFnZSgpOworICAgIGNhc2UgQ09OVEVOVF9URVhUOgorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgVGV4dENvbnRlbnREYXRhKj4oJmEpLT50ZXh0KCkgPT0gc3RhdGljX2Nhc3Q8
Y29uc3QgVGV4dENvbnRlbnREYXRhKj4oJmIpLT50ZXh0KCk7CiAgICAgY2FzZSBDT05URU5UX0NP
VU5URVI6Ci0gICAgICAgIHJldHVybiAqY291bnRlcigpID09ICpvdGhlci5jb3VudGVyKCk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDb3VudGVyQ29udGVudERhdGEqPigmYSkt
PmNvdW50ZXIoKSA9PSBzdGF0aWNfY2FzdDxjb25zdCBDb3VudGVyQ29udGVudERhdGEqPigmYikt
PmNvdW50ZXIoKTsKICAgICBjYXNlIENPTlRFTlRfUVVPVEU6Ci0gICAgICAgIHJldHVybiBxdW90
ZSgpID09IG90aGVyLnF1b3RlKCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBR
dW90ZUNvbnRlbnREYXRhKj4oJmEpLT5xdW90ZSgpID09IHN0YXRpY19jYXN0PGNvbnN0IFF1b3Rl
Q29udGVudERhdGEqPigmYiktPnF1b3RlKCk7CiAgICAgfQotCiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENvbnRlbnREYXRhOjpkZWxldGVD
b250ZW50KCkKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCBDb250ZW50RGF0YSYgYSwgY29uc3QgQ29u
dGVudERhdGEmIGIpCiB7Ci0gICAgc3dpdGNoIChtX3R5cGUpIHsKLSAgICBjYXNlIENPTlRFTlRf
Tk9ORToKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDT05URU5UX09CSkVDVDoKLSAgICAgICAg
bV9jb250ZW50Lm1faW1hZ2UtPmRlcmVmKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ09O
VEVOVF9URVhUOgotICAgICAgICBtX2NvbnRlbnQubV90ZXh0LT5kZXJlZigpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENPTlRFTlRfQ09VTlRFUjoKLSAgICAgICAgZGVsZXRlIG1fY29udGVu
dC5tX2NvdW50ZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ09OVEVOVF9RVU9URToKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgbV90eXBlID0gQ09OVEVOVF9OT05FOworICAgIHJl
dHVybiAhKGEgPT0gYik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKaW5kZXggY2NlMzc1NGFiMDc4YTcy
Y2VjZGRmZTg0OTJlNTE0MzdiNzE1MTQzZS4uYzVhMDI5NTAyZTlmZWNlOWY5YzJkMWE2ODk2ZWMz
N2JlYzc1ZGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
bnRlbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnRE
YXRhLmgKQEAgLTMzLDkzICszMywxMDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBT
dHlsZUltYWdlOwogCi1zdHJ1Y3QgQ29udGVudERhdGEgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKENvbnRlbnREYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBDb250ZW50
RGF0YSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgQ29udGVu
dERhdGEoKQotICAgICAgICA6IG1fdHlwZShDT05URU5UX05PTkUpCi0gICAgewotICAgIH0KKyAg
ICBzdGF0aWMgUGFzc093blB0cjxDb250ZW50RGF0YT4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVJ
bWFnZT4pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPENvbnRlbnREYXRhPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGVudERhdGE+IGNyZWF0ZShQYXNz
T3duUHRyPENvdW50ZXJDb250ZW50Pik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q29udGVudERh
dGE+IGNyZWF0ZShRdW90ZVR5cGUpOworICAgIAorICAgIHZpcnR1YWwgfkNvbnRlbnREYXRhKCkg
eyB9CiAKLSAgICB+Q29udGVudERhdGEoKQotICAgIHsKLSAgICAgICAgY2xlYXIoKTsKLSAgICB9
CisgICAgdmlydHVhbCBib29sIGlzQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1F1b3RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgY2xlYXIo
KTsKKyAgICB2aXJ0dWFsIFN0eWxlQ29udGVudFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKIAotICAg
IGJvb2wgaXNDb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENPTlRFTlRfQ09VTlRF
UjsgfQotICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBDT05URU5U
X09CSkVDVDsgfQotICAgIGJvb2wgaXNOb25lKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IENP
TlRFTlRfTk9ORTsgfQotICAgIGJvb2wgaXNRdW90ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBDT05URU5UX1FVT1RFOyB9Ci0gICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gQ09OVEVOVF9URVhUOyB9CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
b250ZW50RGF0YSYsIGNvbnN0IENvbnRlbnREYXRhJik7CisgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBDb250ZW50RGF0YSYsIGNvbnN0IENvbnRlbnREYXRhJik7CiAKLSAgICBTdHls
ZUNvbnRlbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBDb250ZW50
RGF0YSogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dC5nZXQoKTsgfQorICAgIHZvaWQgc2V0
TmV4dChQYXNzT3duUHRyPENvbnRlbnREYXRhPiBuZXh0KSB7IG1fbmV4dCA9IG5leHQ7IH0KIAot
ICAgIGJvb2wgZGF0YUVxdWl2YWxlbnQoY29uc3QgQ29udGVudERhdGEmKSBjb25zdDsKK3ByaXZh
dGU6CisgICAgT3duUHRyPENvbnRlbnREYXRhPiBtX25leHQ7Cit9OwogCi0gICAgU3R5bGVJbWFn
ZSogaW1hZ2UoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKGlzSW1hZ2UoKSk7Ci0gICAg
ICAgIHJldHVybiBtX2NvbnRlbnQubV9pbWFnZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRJbWFnZShQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKQotICAgIHsKLSAgICAgICAgZGVsZXRlQ29udGVu
dCgpOwotICAgICAgICBtX3R5cGUgPSBDT05URU5UX09CSkVDVDsKLSAgICAgICAgbV9jb250ZW50
Lm1faW1hZ2UgPSBpbWFnZS5sZWFrUmVmKCk7Ci0gICAgfQorY2xhc3MgSW1hZ2VDb250ZW50RGF0
YSA6IHB1YmxpYyBDb250ZW50RGF0YSB7CisgICAgZnJpZW5kIGNsYXNzIENvbnRlbnREYXRhOwor
cHVibGljOgorICAgIGNvbnN0IFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZS5nZXQoKTsgfQorICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkg
eyBtX2ltYWdlID0gaW1hZ2U7IH0KIAotICAgIFN0cmluZ0ltcGwqIHRleHQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzVGV4dCgpKTsKLSAgICAgICAgcmV0dXJuIG1fY29udGVudC5t
X3RleHQ7Ci0gICAgfQotICAgIHZvaWQgc2V0VGV4dChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRl
eHQpCitwcml2YXRlOgorICAgIEltYWdlQ29udGVudERhdGEoUGFzc1JlZlB0cjxTdHlsZUltYWdl
PiBpbWFnZSkKKyAgICAgICAgOiBtX2ltYWdlKGltYWdlKQogICAgIHsKLSAgICAgICAgZGVsZXRl
Q29udGVudCgpOwotICAgICAgICBtX3R5cGUgPSBDT05URU5UX1RFWFQ7Ci0gICAgICAgIG1fY29u
dGVudC5tX3RleHQgPSB0ZXh0LmxlYWtSZWYoKTsKICAgICB9CiAKLSAgICBDb3VudGVyQ29udGVu
dCogY291bnRlcigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQoaXNDb3VudGVyKCkpOwot
ICAgICAgICByZXR1cm4gbV9jb250ZW50Lm1fY291bnRlcjsKLSAgICB9Ci0gICAgdm9pZCBzZXRD
b3VudGVyKFBhc3NPd25QdHI8Q291bnRlckNvbnRlbnQ+IGNvdW50ZXIpCisgICAgdmlydHVhbCBT
dHlsZUNvbnRlbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBDT05URU5UX09CSkVDVDsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
UmVmUHRyPFN0eWxlSW1hZ2U+IG1faW1hZ2U7Cit9OworCitjbGFzcyBUZXh0Q29udGVudERhdGEg
OiBwdWJsaWMgQ29udGVudERhdGEgeworICAgIGZyaWVuZCBjbGFzcyBDb250ZW50RGF0YTsKK3B1
YmxpYzoKKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0K
KyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KSB7IG1fdGV4dCA9IHRleHQ7IH0K
KworcHJpdmF0ZToKKyAgICBUZXh0Q29udGVudERhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQorICAg
ICAgICA6IG1fdGV4dCh0ZXh0KQogICAgIHsKLSAgICAgICAgZGVsZXRlQ29udGVudCgpOwotICAg
ICAgICBtX3R5cGUgPSBDT05URU5UX0NPVU5URVI7Ci0gICAgICAgIG1fY29udGVudC5tX2NvdW50
ZXIgPSBjb3VudGVyLmxlYWtQdHIoKTsKICAgICB9CiAKLSAgICBRdW90ZVR5cGUgcXVvdGUoKSBj
b25zdAorICAgIHZpcnR1YWwgU3R5bGVDb250ZW50VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
Q09OVEVOVF9URVhUOyB9CisgICAgdmlydHVhbCBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKworICAgIFN0cmluZyBtX3RleHQ7Cit9OworCitjbGFzcyBDb3VudGVyQ29udGVu
dERhdGEgOiBwdWJsaWMgQ29udGVudERhdGEgeworICAgIGZyaWVuZCBjbGFzcyBDb250ZW50RGF0
YTsKK3B1YmxpYzoKKyAgICBjb25zdCBDb3VudGVyQ29udGVudCogY291bnRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fY291bnRlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q291bnRlcihQYXNzT3duUHRy
PENvdW50ZXJDb250ZW50PiBjb3VudGVyKSB7IG1fY291bnRlciA9IGNvdW50ZXI7IH0KKworcHJp
dmF0ZToKKyAgICBDb3VudGVyQ29udGVudERhdGEoUGFzc093blB0cjxDb3VudGVyQ29udGVudD4g
Y291bnRlcikKKyAgICAgICAgOiBtX2NvdW50ZXIoY291bnRlcikKICAgICB7Ci0gICAgICAgIEFT
U0VSVChpc1F1b3RlKCkpOwotICAgICAgICByZXR1cm4gbV9jb250ZW50Lm1fcXVvdGU7CiAgICAg
fQotICAgIHZvaWQgc2V0UXVvdGUoUXVvdGVUeXBlIHR5cGUpCisKKyAgICB2aXJ0dWFsIFN0eWxl
Q29udGVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIENPTlRFTlRfQ09VTlRFUjsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0NvdW50ZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBP
d25QdHI8Q291bnRlckNvbnRlbnQ+IG1fY291bnRlcjsKK307CisKK2NsYXNzIFF1b3RlQ29udGVu
dERhdGEgOiBwdWJsaWMgQ29udGVudERhdGEgeworICAgIGZyaWVuZCBjbGFzcyBDb250ZW50RGF0
YTsKK3B1YmxpYzoKKyAgICBRdW90ZVR5cGUgcXVvdGUoKSBjb25zdCB7IHJldHVybiBtX3F1b3Rl
OyB9CisgICAgdm9pZCBzZXRRdW90ZShRdW90ZVR5cGUgcXVvdGUpIHsgbV9xdW90ZSA9IHF1b3Rl
OyB9CisKK3ByaXZhdGU6CisgICAgUXVvdGVDb250ZW50RGF0YShRdW90ZVR5cGUgcXVvdGUpCisg
ICAgICAgIDogbV9xdW90ZShxdW90ZSkKICAgICB7Ci0gICAgICAgIGRlbGV0ZUNvbnRlbnQoKTsK
LSAgICAgICAgbV90eXBlID0gQ09OVEVOVF9RVU9URTsKLSAgICAgICAgbV9jb250ZW50Lm1fcXVv
dGUgPSB0eXBlOwogICAgIH0KIAotICAgIENvbnRlbnREYXRhKiBuZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9uZXh0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXROZXh0KFBhc3NPd25QdHI8Q29udGVudERh
dGE+IG5leHQpIHsgbV9uZXh0ID0gbmV4dDsgfQorICAgIHZpcnR1YWwgU3R5bGVDb250ZW50VHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gQ09OVEVOVF9RVU9URTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc1F1b3RlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi1wcml2YXRlOgotICAgIHZvaWQg
ZGVsZXRlQ29udGVudCgpOwotCi0gICAgU3R5bGVDb250ZW50VHlwZSBtX3R5cGU7Ci0gICAgdW5p
b24gewotICAgICAgICBTdHlsZUltYWdlKiBtX2ltYWdlOwotICAgICAgICBTdHJpbmdJbXBsKiBt
X3RleHQ7Ci0gICAgICAgIENvdW50ZXJDb250ZW50KiBtX2NvdW50ZXI7Ci0gICAgICAgIFF1b3Rl
VHlwZSBtX3F1b3RlOwotICAgIH0gbV9jb250ZW50OwotICAgIE93blB0cjxDb250ZW50RGF0YT4g
bV9uZXh0OworICAgIFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
aW5kZXggNGVhOGIyOTFjYjA3ZWFkNDBmMmY4NmQ2MTcxNzIwYmY0NTA3MWViNS4uOTBiZWE1ZWIz
Y2ZiNDQwNzgxODNiMTUzNjFhNTIyZWE1MDQxZDQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC02MjAsNjcgKzYyMCw4MSBAQCB2b2lk
IFJlbmRlclN0eWxlOjpjbGVhckN1cnNvckxpc3QoKQogdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJD
b250ZW50KCkKIHsKICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY29udGVudCkKLSAg
ICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fY29udGVudC0+Y2xlYXIoKTsKKyAgICAgICAg
cmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudCA9IG51bGxwdHI7CiB9CiAK
LUNvbnRlbnREYXRhKiBSZW5kZXJTdHlsZTo6cHJlcGFyZVRvU2V0Q29udGVudChTdHJpbmdJbXBs
KiBzdHJpbmcsIGJvb2wgYWRkKQordm9pZCBSZW5kZXJTdHlsZTo6YXBwZW5kQ29udGVudChQYXNz
T3duUHRyPENvbnRlbnREYXRhPiBjb250ZW50RGF0YSkKIHsKICAgICBPd25QdHI8Q29udGVudERh
dGE+JiBjb250ZW50ID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudDsK
ICAgICBDb250ZW50RGF0YSogbGFzdENvbnRlbnQgPSBjb250ZW50LmdldCgpOwogICAgIHdoaWxl
IChsYXN0Q29udGVudCAmJiBsYXN0Q29udGVudC0+bmV4dCgpKQogICAgICAgICBsYXN0Q29udGVu
dCA9IGxhc3RDb250ZW50LT5uZXh0KCk7CiAKLSAgICBpZiAoc3RyaW5nICYmIGFkZCAmJiBsYXN0
Q29udGVudCAmJiBsYXN0Q29udGVudC0+aXNUZXh0KCkpIHsKLSAgICAgICAgLy8gQXVnbWVudCB0
aGUgZXhpc3Rpbmcgc3RyaW5nIGFuZCBzaGFyZSB0aGUgZXhpc3RpbmcgQ29udGVudERhdGEgbm9k
ZS4KLSAgICAgICAgU3RyaW5nIG5ld1RleHQgPSBsYXN0Q29udGVudC0+dGV4dCgpOwotICAgICAg
ICBuZXdUZXh0LmFwcGVuZChzdHJpbmcpOwotICAgICAgICBsYXN0Q29udGVudC0+c2V0VGV4dChu
ZXdUZXh0LmltcGwoKSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGJvb2wgcmV1
c2VDb250ZW50ID0gIWFkZDsKLSAgICBPd25QdHI8Q29udGVudERhdGE+IG5ld0NvbnRlbnREYXRh
OwotICAgIGlmIChyZXVzZUNvbnRlbnQgJiYgY29udGVudCkgewotICAgICAgICBjb250ZW50LT5j
bGVhcigpOwotICAgICAgICBuZXdDb250ZW50RGF0YSA9IGNvbnRlbnQucmVsZWFzZSgpOwotICAg
IH0gZWxzZQotICAgICAgICBuZXdDb250ZW50RGF0YSA9IGFkb3B0UHRyKG5ldyBDb250ZW50RGF0
YSk7Ci0KLSAgICBDb250ZW50RGF0YSogcmVzdWx0ID0gbmV3Q29udGVudERhdGEuZ2V0KCk7Ci0K
LSAgICBpZiAobGFzdENvbnRlbnQgJiYgIXJldXNlQ29udGVudCkKLSAgICAgICAgbGFzdENvbnRl
bnQtPnNldE5leHQobmV3Q29udGVudERhdGEucmVsZWFzZSgpKTsKKyAgICBpZiAobGFzdENvbnRl
bnQpCisgICAgICAgIGxhc3RDb250ZW50LT5zZXROZXh0KGNvbnRlbnREYXRhKTsKICAgICBlbHNl
Ci0gICAgICAgIGNvbnRlbnQgPSBuZXdDb250ZW50RGF0YS5yZWxlYXNlKCk7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICBjb250ZW50ID0gY29udGVudERhdGE7CiB9CiAKIHZvaWQgUmVu
ZGVyU3R5bGU6OnNldENvbnRlbnQoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSwgYm9vbCBh
ZGQpCiB7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHByZXBhcmVUb1Nl
dENvbnRlbnQoMCwgYWRkKS0+c2V0SW1hZ2UoaW1hZ2UpOworICAgICAgICAKKyAgICBpZiAoYWRk
KSB7CisgICAgICAgIGFwcGVuZENvbnRlbnQoQ29udGVudERhdGE6OmNyZWF0ZShpbWFnZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNz
KCktPm1fY29udGVudCA9IENvbnRlbnREYXRhOjpjcmVhdGUoaW1hZ2UpOwogfQogCi12b2lkIFJl
bmRlclN0eWxlOjpzZXRDb250ZW50KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gc3RyaW5nLCBib29s
IGFkZCkKK3ZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IGJvb2wgYWRkKQogewotICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgaWYg
KENvbnRlbnREYXRhKiBkYXRhID0gcHJlcGFyZVRvU2V0Q29udGVudChzdHJpbmcuZ2V0KCksIGFk
ZCkpCi0gICAgICAgIGRhdGEtPnNldFRleHQoc3RyaW5nKTsKKyAgICBPd25QdHI8Q29udGVudERh
dGE+JiBjb250ZW50ID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fY29udGVudDsK
KyAgICBpZiAoYWRkKSB7CisgICAgICAgIENvbnRlbnREYXRhKiBsYXN0Q29udGVudCA9IGNvbnRl
bnQuZ2V0KCk7CisgICAgICAgIHdoaWxlIChsYXN0Q29udGVudCAmJiBsYXN0Q29udGVudC0+bmV4
dCgpKQorICAgICAgICAgICAgbGFzdENvbnRlbnQgPSBsYXN0Q29udGVudC0+bmV4dCgpOworCisg
ICAgICAgIGlmIChsYXN0Q29udGVudCkgeworICAgICAgICAgICAgLy8gV2UgYXR0ZW1wdCB0byBt
ZXJnZSB3aXRoIHRoZSBsYXN0IENvbnRlbnREYXRhIGlmIHBvc3NpYmxlLgorICAgICAgICAgICAg
aWYgKGxhc3RDb250ZW50LT5pc1RleHQoKSkgeworICAgICAgICAgICAgICAgIFRleHRDb250ZW50
RGF0YSogdGV4dENvbnRlbnQgPSBzdGF0aWNfY2FzdDxUZXh0Q29udGVudERhdGEqPihsYXN0Q29u
dGVudCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSB0ZXh0Q29udGVudC0+dGV4dCgp
OworICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyaW5nOworICAgICAgICAgICAgICAgIHRleHRD
b250ZW50LT5zZXRUZXh0KHRleHQpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgbGFzdENvbnRlbnQtPnNldE5leHQoQ29udGVudERhdGE6OmNyZWF0ZShzdHJpbmcpKTsKKwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgY29udGVudCA9IENv
bnRlbnREYXRhOjpjcmVhdGUoc3RyaW5nKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0Q29u
dGVudChQYXNzT3duUHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKIHsKICAg
ICBpZiAoIWNvdW50ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBwcmVwYXJlVG9TZXRDb250ZW50
KDAsIGFkZCktPnNldENvdW50ZXIoY291bnRlcik7CisKKyAgICBpZiAoYWRkKSB7CisgICAgICAg
IGFwcGVuZENvbnRlbnQoQ29udGVudERhdGE6OmNyZWF0ZShjb3VudGVyKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9jb250
ZW50ID0gQ29udGVudERhdGE6OmNyZWF0ZShjb3VudGVyKTsKIH0KIAogdm9pZCBSZW5kZXJTdHls
ZTo6c2V0Q29udGVudChRdW90ZVR5cGUgcXVvdGUsIGJvb2wgYWRkKQogewotICAgIHByZXBhcmVU
b1NldENvbnRlbnQoMCwgYWRkKS0+c2V0UXVvdGUocXVvdGUpOworICAgIGlmIChhZGQpIHsKKyAg
ICAgICAgYXBwZW5kQ29udGVudChDb250ZW50RGF0YTo6Y3JlYXRlKHF1b3RlKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9j
b250ZW50ID0gQ29udGVudERhdGE6OmNyZWF0ZShxdW90ZSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5
bGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEludFNpemUmIGJvcmRlckJveFNpemUsIEFwcGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2lu
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApp
bmRleCA3NDNmOWZlNTk1ZTQyODk0NThlYmJmMDEzODU1YjczN2JhMzg2NTViLi4wOGY3NGRiZWU4
ZmU0OTBmNGM2ZGM1YTg3YzNmZmM1ZmM1ZjE5OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTAxLDcgKzEwMSw3IEBAIGNsYXNzIFNoYWRv
d0RhdGE7CiBjbGFzcyBTdHlsZUltYWdlOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAK
LXN0cnVjdCBDb250ZW50RGF0YTsKK2NsYXNzIENvbnRlbnREYXRhOwogCiB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8UmVuZGVyU3R5bGU+LCA0PiBQc2V1ZG9TdHlsZUNhY2hlOwogCkBAIC0xMTQ1LDEw
ICsxMTQ1LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCBmKSB7
IGFjY2Vzc1NWR1N0eWxlKCktPnNldEZsb29kT3BhY2l0eShmKTsgfQogI2VuZGlmCiAKKyAgICBi
b29sIGhhc0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBjb250ZW50RGF0YSgpOyB9CiAgICAgY29u
c3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fY29udGVudC5nZXQoKTsgfQogICAgIGJvb2wgY29udGVudERhdGFFcXVpdmFs
ZW50KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlKSBjb25zdCB7IHJldHVybiBjb25zdF9j
YXN0PFJlbmRlclN0eWxlKj4odGhpcyktPnJhcmVOb25Jbmhlcml0ZWREYXRhLT5jb250ZW50RGF0
YUVxdWl2YWxlbnQoKmNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihvdGhlclN0eWxlKS0+cmFyZU5v
bkluaGVyaXRlZERhdGEpOyB9CiAgICAgdm9pZCBjbGVhckNvbnRlbnQoKTsKLSAgICB2b2lkIHNl
dENvbnRlbnQoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiwgYm9vbCBhZGQgPSBmYWxzZSk7CisgICAg
dm9pZCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYsIGJvb2wgYWRkID0gZmFsc2UpOwogICAgIHZv
aWQgc2V0Q29udGVudChQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBib29sIGFkZCA9IGZhbHNlKTsK
ICAgICB2b2lkIHNldENvbnRlbnQoUGFzc093blB0cjxDb3VudGVyQ29udGVudD4sIGJvb2wgYWRk
ID0gZmFsc2UpOwogICAgIHZvaWQgc2V0Q29udGVudChRdW90ZVR5cGUsIGJvb2wgYWRkID0gZmFs
c2UpOwpAQCAtMTM1OCw5ICsxMzU5LDkgQEAgcHJpdmF0ZToKICAgICBjb25zdCBDb2xvciYgdGV4
dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENv
bG9yOyB9CiAgICAgY29uc3QgQ29sb3ImIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3I7IH0KICAgICAKLSAgICBjb25zdCBD
b2xvciBjb2xvckluY2x1ZGluZ0ZhbGxiYWNrKGludCBjb2xvclByb3BlcnR5LCBFQm9yZGVyU3R5
bGUgYm9yZGVyU3R5bGUpIGNvbnN0OworICAgIGNvbnN0IENvbG9yIGNvbG9ySW5jbHVkaW5nRmFs
bGJhY2soaW50IGNvbG9yUHJvcGVydHksIEVCb3JkZXJTdHlsZSkgY29uc3Q7CiAKLSAgICBDb250
ZW50RGF0YSogcHJlcGFyZVRvU2V0Q29udGVudChTdHJpbmdJbXBsKiwgYm9vbCBhZGQpOworICAg
IHZvaWQgYXBwZW5kQ29udGVudChQYXNzT3duUHRyPENvbnRlbnREYXRhPik7CiB9OwogCiBpbmxp
bmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxl
KiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA0YTRkN2QyNjE3Y2FmZTdjMGE0
Yzg4NmEzMzVhNzI2ZTgxM2JlZjk5Li5lMWE2ZjEzNGYxMGMyYjU1NzgzZmQwOTM2NjI2ZGU5MWZj
NzEzODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC0xNDMsMTcgKzE0MywxMSBAQCBi
b29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YSYgbykgYwogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OmNvbnRlbnREYXRhRXF1aXZhbGVudChjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJiBv
KSBjb25zdAogewotICAgIENvbnRlbnREYXRhKiBjMSA9IG1fY29udGVudC5nZXQoKTsKLSAgICBD
b250ZW50RGF0YSogYzIgPSBvLm1fY29udGVudC5nZXQoKTsKLQotICAgIHdoaWxlIChjMSAmJiBj
MikgewotICAgICAgICBpZiAoIWMxLT5kYXRhRXF1aXZhbGVudCgqYzIpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBjMSA9IGMxLT5uZXh0KCk7Ci0gICAgICAgIGMyID0gYzIt
Pm5leHQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gIWMxICYmICFjMjsKKyAgICBpZiAoKCFtX2Nv
bnRlbnQgJiYgby5tX2NvbnRlbnQpIHx8IChtX2NvbnRlbnQgJiYgIW8ubV9jb250ZW50KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NvbnRlbnQgJiYgby5tX2NvbnRlbnQgJiYg
KCptX2NvbnRlbnQgIT0gKm8ubV9jb250ZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOwogfQogCiBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnNoYWRv
d0RhdGFFcXVpdmFsZW50KGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEmIG8pIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuaAppbmRleCAyNjhhMTIzNmUwYzJkMTAxNGRkZmZhNDlhODM2MjQx
ZTA5Yzg3NjE2Li42OTIzM2NmMWU0MmM0M2U4MDEwYjUxZTYwZjE2ZGVlOGIzM2IzYWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU3R5bGVNdWx0aUNvbERh
dGE7CiBjbGFzcyBTdHlsZVJlZmxlY3Rpb247CiBjbGFzcyBTdHlsZVRyYW5zZm9ybURhdGE7CiAK
LXN0cnVjdCBDb250ZW50RGF0YTsKK2NsYXNzIENvbnRlbnREYXRhOwogc3RydWN0IExlbmd0aFNp
emU7CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCg==
</data>
<flag name="review"
          id="89941"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>