<?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>121800</bug_id>
          
          <creation_ts>2013-09-23 13:18:57 -0700</creation_ts>
          <short_desc>CTTE: htmlediting.h Element creation function should take a Document&amp;</short_desc>
          <delta_ts>2013-09-23 13:23:32 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>932262</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-23 13:18:57 -0700</bug_when>
    <thetext>CTTE: htmlediting.h Element creation function should take a Document&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932263</commentid>
    <comment_count>1</comment_count>
      <attachid>212385</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-23 13:19:45 -0700</bug_when>
    <thetext>Created attachment 212385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932264</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-09-23 13:23:32 -0700</bug_when>
    <thetext>Committed r156289: &lt;http://trac.webkit.org/changeset/156289&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212385</attachid>
            <date>2013-09-23 13:19:45 -0700</date>
            <delta_ts>2013-09-23 13:21:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121800-20130923131944.patch</filename>
            <type>text/plain</type>
            <size>42398</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjI4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTIzICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ1RURTogaHRtbGVkaXRpbmcuaCBFbGVt
ZW50IGNyZWF0aW9uIGZ1bmN0aW9uIHNob3VsZCB0YWtlIGEgRG9jdW1lbnQmCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJlYWQgdGhlIERvY3VtZW50
JiEKKwogMjAxMy0wOS0yMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVuYW1lIFJlbmRlck9iamVjdDo6Zmlyc3QvbGFzdENoaWxkIHRvIFJlbmRlck9iamVj
dDo6Zmlyc3QvbGFzdENoaWxkU2xvdwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcAkocmV2aXNpb24gMTU2MjU1KQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBBcHBseUJsb2NrRWxlbWVudENvbW1h
bmQ6OmZvcm1hdFNlbAogICAgIGlmIChpc0F0VW5zcGxpdHRhYmxlRWxlbWVudChzdGFydCkpIHsK
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGJsb2NrcXVvdGUgPSBjcmVhdGVCbG9ja0VsZW1lbnQo
KTsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGJsb2NrcXVvdGUsIHN0YXJ0KTsKLSAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgp
KTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVt
ZW50KGRvY3VtZW50KCkpOwogICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBibG9ja3F1
b3RlKTsKICAgICAgICAgc2V0RW5kaW5nU2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocG9zaXRp
b25CZWZvcmVOb2RlKHBsYWNlaG9sZGVyLmdldCgpKSwgRE9XTlNUUkVBTSwgZW5kaW5nU2VsZWN0
aW9uKCkuaXNEaXJlY3Rpb25hbCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NCw3ICsyODQs
NyBAQCBWaXNpYmxlUG9zaXRpb24gQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kCiAKIFBhc3NSZWZQ
dHI8RWxlbWVudD4gQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kOjpjcmVhdGVCbG9ja0VsZW1lbnQo
KSBjb25zdAogewotICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlSFRNTEVsZW1l
bnQoJmRvY3VtZW50KCksIG1fdGFnTmFtZSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQg
PSBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCBtX3RhZ05hbWUpOwogICAgIGlmIChtX2lu
bGluZVN0eWxlLmxlbmd0aCgpKQogICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVB
dHRyLCBtX2lubGluZVN0eWxlKTsKICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNp
b24gMTU2MjU2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxNiArMTE2LDE0IEBAIGJvb2wgaXNFbXB0eUZvbnRU
YWcoY29uc3QgRWxlbWVudCogZWxlbWUKICAgICByZXR1cm4gaGFzTm9BdHRyaWJ1dGVPck9ubHlT
dHlsZUF0dHJpYnV0ZSh0b0hUTUxFbGVtZW50KGVsZW1lbnQpLCBzaG91bGRTdHlsZUF0dHJpYnV0
ZUJlRW1wdHkpOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVGb250RWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCitzdGF0aWMgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVh
dGVGb250RWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgUmVmUHRyPEVsZW1lbnQ+
IGZvbnROb2RlID0gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQsIGZvbnRUYWcpOwotICAgIHJl
dHVybiBmb250Tm9kZS5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNyZWF0ZUhUTUxFbGVtZW50KGRv
Y3VtZW50LCBmb250VGFnKTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlU3R5
bGVTcGFuRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVTdHlsZVNwYW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IHN0eWxlRWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KGRvY3VtZW50
LCBzcGFuVGFnKTsKLSAgICByZXR1cm4gc3R5bGVFbGVtZW50LnJlbGVhc2UoKTsKKyAgICByZXR1
cm4gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQsIHNwYW5UYWcpOwogfQogCiBBcHBseVN0eWxl
Q29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFZGl0
aW5nU3R5bGUqIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24sIEVQcm9wZXJ0eUxldmVs
IHByb3BlcnR5TGV2ZWwpCkBAIC0zOTIsNyArMzkwLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlSZWxhdGl2ZUZvbgogICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzVGV4dE5vZGUo
KSAmJiBub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnBhcmVudE5vZGUoKSAhPSBsYXN0U3R5bGVk
Tm9kZSkgewogICAgICAgICAgICAgLy8gTGFzdCBzdHlsZWQgbm9kZSB3YXMgbm90IHBhcmVudCBu
b2RlIG9mIHRoaXMgdGV4dCBub2RlLCBidXQgd2Ugd2lzaCB0byBzdHlsZSB0aGlzCiAgICAgICAg
ICAgICAvLyB0ZXh0IG5vZGUuIFRvIG1ha2UgdGhpcyBwb3NzaWJsZSwgYWRkIGEgc3R5bGUgc3Bh
biB0byBzdXJyb3VuZCB0aGlzIHRleHQgbm9kZS4KLSAgICAgICAgICAgIFJlZlB0cjxIVE1MRWxl
bWVudD4gc3BhbiA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoJmRvY3VtZW50KCkpOworICAgICAg
ICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBzcGFuID0gY3JlYXRlU3R5bGVTcGFuRWxlbWVudChk
b2N1bWVudCgpKTsKICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQobm9k
ZSwgbm9kZSwgc3Bhbi5nZXQoKSk7CiAgICAgICAgICAgICBlbGVtZW50ID0gc3Bhbi5yZWxlYXNl
KCk7CiAgICAgICAgIH0gIGVsc2UgewpAQCAtMTQxOCw3ICsxNDE2LDcgQEAgUG9zaXRpb24gQXBw
bHlTdHlsZUNvbW1hbmQ6OnBvc2l0aW9uVG9DbwogewogICAgIC8vIEl0J3Mgb2theSB0byBvYnRh
aW4gdGhlIHN0eWxlIGF0IHRoZSBzdGFydE5vZGUgYmVjYXVzZSB3ZSd2ZSByZW1vdmVkIGFsbCBy
ZWxldmFudCBzdHlsZXMgZnJvbSB0aGUgY3VycmVudCBydW4uCiAgICAgaWYgKCFzdGFydE5vZGUt
PmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICBkdW1teUVsZW1lbnQgPSBjcmVhdGVTdHlsZVNw
YW5FbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICAgICAgZHVtbXlFbGVtZW50ID0gY3JlYXRlU3R5
bGVTcGFuRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgaW5zZXJ0Tm9kZUF0KGR1bW15RWxl
bWVudCwgcG9zaXRpb25CZWZvcmVOb2RlKHN0YXJ0Tm9kZS5nZXQoKSkpOwogICAgICAgICByZXR1
cm4gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGR1bW15RWxlbWVudC5nZXQoKSk7CiAgICAg
fQpAQCAtMTQ1OCw3ICsxNDU2LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxp
bmVTdHlsZQogICAgICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5Rm9udFNpemUoKSkKICAg
ICAgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKGZvbnRDb250YWluZXIsIHNpemVBdHRyLCBz
dHlsZUNoYW5nZS5mb250U2l6ZSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBmb250RWxlbWVudCA9IGNyZWF0ZUZvbnRFbGVtZW50KCZkb2N1bWVudCgp
KTsKKyAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBmb250RWxlbWVudCA9IGNyZWF0ZUZvbnRF
bGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5Rm9u
dENvbG9yKCkpCiAgICAgICAgICAgICAgICAgZm9udEVsZW1lbnQtPnNldEF0dHJpYnV0ZShjb2xv
ckF0dHIsIHN0eWxlQ2hhbmdlLmZvbnRDb2xvcigpKTsKICAgICAgICAgICAgIGlmIChzdHlsZUNo
YW5nZS5hcHBseUZvbnRGYWNlKCkpCkBAIC0xNDgyLDI4ICsxNDgwLDI4IEBAIHZvaWQgQXBwbHlT
dHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoc3R5bGVDb250YWluZXIsIHN0eWxlQXR0ciwgc3R5
bGVDaGFuZ2UuY3NzU3R5bGUoKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gc3R5bGVFbGVtZW50ID0gY3JlYXRlU3R5bGVTcGFuRWxlbWVudCgmZG9jdW1l
bnQoKSk7CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50ID0gY3JlYXRl
U3R5bGVTcGFuRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgIHN0eWxlRWxlbWVudC0+
c2V0QXR0cmlidXRlKHN0eWxlQXR0ciwgc3R5bGVDaGFuZ2UuY3NzU3R5bGUoKSk7CiAgICAgICAg
ICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5kTm9kZSwgc3R5
bGVFbGVtZW50LnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoc3R5bGVD
aGFuZ2UuYXBwbHlCb2xkKCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQo
c3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1lbnQoKSwgYlRhZykp
OworICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5kTm9k
ZSwgY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgYlRhZykpOwogCiAgICAgaWYgKHN0eWxl
Q2hhbmdlLmFwcGx5SXRhbGljKCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1l
bnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1lbnQoKSwgaVRh
ZykpOworICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5k
Tm9kZSwgY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgaVRhZykpOwogCiAgICAgaWYgKHN0
eWxlQ2hhbmdlLmFwcGx5VW5kZXJsaW5lKCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0
aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1lbnQo
KSwgdVRhZykpOworICAgICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9k
ZSwgZW5kTm9kZSwgY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgdVRhZykpOwogCiAgICAg
aWYgKHN0eWxlQ2hhbmdlLmFwcGx5TGluZVRocm91Z2goKSkKLSAgICAgICAgc3Vycm91bmROb2Rl
UmFuZ2VXaXRoRWxlbWVudChzdGFydE5vZGUsIGVuZE5vZGUsIGNyZWF0ZUhUTUxFbGVtZW50KCZk
b2N1bWVudCgpLCBzdHJpa2VUYWcpKTsKKyAgICAgICAgc3Vycm91bmROb2RlUmFuZ2VXaXRoRWxl
bWVudChzdGFydE5vZGUsIGVuZE5vZGUsIGNyZWF0ZUhUTUxFbGVtZW50KGRvY3VtZW50KCksIHN0
cmlrZVRhZykpOwogCiAgICAgaWYgKHN0eWxlQ2hhbmdlLmFwcGx5U3Vic2NyaXB0KCkpCi0gICAg
ICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVh
dGVIVE1MRWxlbWVudCgmZG9jdW1lbnQoKSwgc3ViVGFnKSk7CisgICAgICAgIHN1cnJvdW5kTm9k
ZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudChk
b2N1bWVudCgpLCBzdWJUYWcpKTsKICAgICBlbHNlIGlmIChzdHlsZUNoYW5nZS5hcHBseVN1cGVy
c2NyaXB0KCkpCi0gICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2Rl
LCBlbmROb2RlLCBjcmVhdGVIVE1MRWxlbWVudCgmZG9jdW1lbnQoKSwgc3VwVGFnKSk7CisgICAg
ICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVsZW1lbnQoc3RhcnROb2RlLCBlbmROb2RlLCBjcmVh
dGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCBzdXBUYWcpKTsKIAogICAgIGlmIChtX3N0eWxlZElu
bGluZUVsZW1lbnQgJiYgYWRkU3R5bGVkRWxlbWVudCA9PSBBZGRTdHlsZWRFbGVtZW50KQogICAg
ICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5kTm9kZSwgbV9z
dHlsZWRJbmxpbmVFbGVtZW50LT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCShyZXZpc2lvbiAx
NTYyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBlbnVtIFNob3VsZFN0eWxlQXR0cmlidXRl
QmVFbXB0eSB7IEFsbG93CiBib29sIGlzRW1wdHlGb250VGFnKGNvbnN0IEVsZW1lbnQqLCBTaG91
bGRTdHlsZUF0dHJpYnV0ZUJlRW1wdHkgPSBTdHlsZUF0dHJpYnV0ZVNob3VsZEJlRW1wdHkpOwog
Ym9vbCBpc0xlZ2FjeUFwcGxlU3R5bGVTcGFuKGNvbnN0IE5vZGUqKTsKIGJvb2wgaXNTdHlsZVNw
YW5PclNwYW5XaXRoT25seVN0eWxlQXR0cmlidXRlKGNvbnN0IEVsZW1lbnQqKTsKLVBhc3NSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoRG9jdW1lbnQqKTsKK1Bhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoRG9jdW1lbnQmKTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Jy
ZWFrQmxvY2txdW90ZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kOjpkb0Fw
cGx5KCkKICAgICBpZiAoIXRvcEJsb2NrcXVvdGUgfHwgIXRvcEJsb2NrcXVvdGUtPnBhcmVudE5v
ZGUoKSB8fCAhdG9wQmxvY2txdW90ZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgUmVmUHRyPEVsZW1lbnQ+IGJyZWFrTm9kZSA9IGNyZWF0ZUJyZWFrRWxlbWVu
dCgmZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGJyZWFrTm9kZSA9IGNyZWF0ZUJy
ZWFrRWxlbWVudChkb2N1bWVudCgpKTsKIAogICAgIGJvb2wgaXNMYXN0VmlzUG9zSW5Ob2RlID0g
aXNMYXN0VmlzaWJsZVBvc2l0aW9uSW5Ob2RlKHZpc2libGVQb3MsIHRvcEJsb2NrcXVvdGUpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmNwcAkocmV2aXNpb24gMTU2MjU2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0OCw3ICs4NDgsNyBAQCBQYXNz
UmVmUHRyPE5vZGU+IENvbXBvc2l0ZUVkaXRDb21tYW5kOjphCiAgICAgLy8gU2hvdWxkIGFzc2Vy
dCBpc0Jsb2NrRmxvdyB8fCBpc0lubGluZUZsb3cgd2hlbiBkZWxldGlvbiBpbXByb3Zlcy4gU2Vl
IDQyNDQ5NjQuCiAgICAgQVNTRVJUKGNvbnRhaW5lci0+cmVuZGVyZXIoKSk7CiAKLSAgICBSZWZQ
dHI8Tm9kZT4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudCgmZG9j
dW1lbnQoKSk7CisgICAgUmVmUHRyPE5vZGU+IHBsYWNlaG9sZGVyID0gY3JlYXRlQmxvY2tQbGFj
ZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgYXBwZW5kTm9kZShwbGFjZWhvbGRlciwg
Y29udGFpbmVyKTsKICAgICByZXR1cm4gcGxhY2Vob2xkZXIucmVsZWFzZSgpOwogfQpAQCAtODYx
LDcgKzg2MSw3IEBAIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmkKICAg
ICAvLyBTaG91bGQgYXNzZXJ0IGlzQmxvY2tGbG93IHx8IGlzSW5saW5lRmxvdyB3aGVuIGRlbGV0
aW9uIGltcHJvdmVzLiAgU2VlIDQyNDQ5NjQuCiAgICAgQVNTRVJUKHBvcy5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpKTsKIAotICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhvbGRlciA9IGNyZWF0
ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8Tm9kZT4g
cGxhY2Vob2xkZXIgPSBjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChkb2N1bWVudCgpKTsK
ICAgICBpbnNlcnROb2RlQXQocGxhY2Vob2xkZXIsIHBvcyk7CiAgICAgcmV0dXJuIHBsYWNlaG9s
ZGVyLnJlbGVhc2UoKTsKIH0KQEAgLTkwMiw4ICs5MDIsOCBAQCB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpyZW1vdmVQbGFjZWhvCiAKIFBhc3NSZWZQdHI8Tm9kZT4gQ29tcG9zaXRlRWRpdENv
bW1hbmQ6Omluc2VydE5ld0RlZmF1bHRQYXJhZ3JhcGhFbGVtZW50QXQoY29uc3QgUG9zaXRpb24m
IHBvc2l0aW9uKQogewotICAgIFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGhFbGVtZW50ID0gY3Jl
YXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoJmRvY3VtZW50KCkpOwotICAgIHBhcmFncmFwaEVs
ZW1lbnQtPmFwcGVuZENoaWxkKGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQoKSksIElHTk9S
RV9FWENFUFRJT04pOworICAgIFJlZlB0cjxFbGVtZW50PiBwYXJhZ3JhcGhFbGVtZW50ID0gY3Jl
YXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQoKSk7CisgICAgcGFyYWdyYXBoRWxl
bWVudC0+YXBwZW5kQ2hpbGQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLCBJR05PUkVf
RVhDRVBUSU9OKTsKICAgICBpbnNlcnROb2RlQXQocGFyYWdyYXBoRWxlbWVudCwgcG9zaXRpb24p
OwogICAgIHJldHVybiBwYXJhZ3JhcGhFbGVtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTExMzMsNyAr
MTEzMyw3IEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6Om1vdmVQYXJhZ3JhcGgKICAgICBp
ZiAoYmVmb3JlUGFyYWdyYXBoLmlzTm90TnVsbCgpICYmICFpc1RhYmxlRWxlbWVudChiZWZvcmVQ
YXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKQogICAgICAgICAmJiAo
KCFpc0VuZE9mUGFyYWdyYXBoKGJlZm9yZVBhcmFncmFwaCkgJiYgIWlzU3RhcnRPZlBhcmFncmFw
aChiZWZvcmVQYXJhZ3JhcGgpKSB8fCBiZWZvcmVQYXJhZ3JhcGggPT0gYWZ0ZXJQYXJhZ3JhcGgp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUcmltIHRleHQgYmV0d2VlbiBiZWZvcmVQYXJhZ3JhcGgg
YW5kIGFmdGVyUGFyYWdyYXBoIGlmIHRoZXkgYXJlbid0IGVxdWFsLgotICAgICAgICBpbnNlcnRO
b2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKSwgYmVmb3JlUGFyYWdyYXBoLmRl
ZXBFcXVpdmFsZW50KCkpOworICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50
KGRvY3VtZW50KCkpLCBiZWZvcmVQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CiAgICAgfQog
fQogICAgIApAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
bW92ZVBhcmFncmFwaAogICAgIGFmdGVyUGFyYWdyYXBoID0gVmlzaWJsZVBvc2l0aW9uKGFmdGVy
UGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkpOwogICAgIGlmIChiZWZvcmVQYXJhZ3JhcGguaXNO
b3ROdWxsKCkgJiYgKCFpc0VuZE9mUGFyYWdyYXBoKGJlZm9yZVBhcmFncmFwaCkgfHwgYmVmb3Jl
UGFyYWdyYXBoID09IGFmdGVyUGFyYWdyYXBoKSkgewogICAgICAgICAvLyBGSVhNRTogVHJpbSB0
ZXh0IGJldHdlZW4gYmVmb3JlUGFyYWdyYXBoIGFuZCBhZnRlclBhcmFncmFwaCBpZiB0aGV5IGFy
ZW4ndCBlcXVhbC4KLSAgICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9j
dW1lbnQoKSksIGJlZm9yZVBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgaW5z
ZXJ0Tm9kZUF0KGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwgYmVmb3JlUGFyYWdyYXBo
LmRlZXBFcXVpdmFsZW50KCkpOwogICAgICAgICAvLyBOZWVkIGFuIHVwZGF0ZUxheW91dCBoZXJl
IGluIGNhc2UgaW5zZXJ0aW5nIHRoZSBiciBoYXMgc3BsaXQgYSB0ZXh0IG5vZGUuCiAgICAgICAg
IGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAg
fQpAQCAtMTI5NSwxNCArMTI5NSwxNCBAQCBib29sIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpicmVh
a091dE9mRW1wCiAgICAgICAgICAgICAgICAgLy8gZS5nLiA8dWw+PGxpPiA8dWw+PGxpPjxicj48
L2xpPjwvdWw+IGhlbGxvPC9saT48L3VsPiBzaG91bGQgYmVjb21lIDx1bD48bGk+IDxkaXY+PGJy
PjwvZGl2PiBoZWxsbzwvbGk+PC91bD4gYXQgdGhlIGVuZAogICAgICAgICAgICAgICAgIHNwbGl0
RWxlbWVudCh0b0VsZW1lbnQoYmxvY2tFbmNsb3NpbmdMaXN0KSwgbGlzdE5vZGUpOwogICAgICAg
ICAgICAgICAgIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4obGlzdE5vZGUtPnBhcmVudE5v
ZGUoKSk7Ci0gICAgICAgICAgICAgICAgbmV3QmxvY2sgPSBjcmVhdGVMaXN0SXRlbUVsZW1lbnQo
JmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgIG5ld0Jsb2NrID0gY3JlYXRlTGlzdEl0ZW1F
bGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgbGlz
dE5vZGUgZG9lcyBOT1QgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIG91dGVyIGxpc3QgaXRlbSwg
dGhlbiBiZWhhdmUgYXMgaWYgaW4gYSByZWd1bGFyIHBhcmFncmFwaC4KICAgICAgICAgfSBlbHNl
IGlmIChibG9ja0VuY2xvc2luZ0xpc3QtPmhhc1RhZ05hbWUob2xUYWcpIHx8IGJsb2NrRW5jbG9z
aW5nTGlzdC0+aGFzVGFnTmFtZSh1bFRhZykpCi0gICAgICAgICAgICBuZXdCbG9jayA9IGNyZWF0
ZUxpc3RJdGVtRWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBuZXdCbG9jayA9IGNy
ZWF0ZUxpc3RJdGVtRWxlbWVudChkb2N1bWVudCgpKTsKICAgICB9CiAgICAgaWYgKCFuZXdCbG9j
aykKLSAgICAgICAgbmV3QmxvY2sgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudCgmZG9j
dW1lbnQoKSk7CisgICAgICAgIG5ld0Jsb2NrID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1l
bnQoZG9jdW1lbnQoKSk7CiAKICAgICBSZWZQdHI8Tm9kZT4gcHJldmlvdXNMaXN0Tm9kZSA9IGVt
cHR5TGlzdEl0ZW0tPmlzRWxlbWVudE5vZGUoKSA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3Vz
U2libGluZyhlbXB0eUxpc3RJdGVtLmdldCgpKTogZW1wdHlMaXN0SXRlbS0+cHJldmlvdXNTaWJs
aW5nKCk7CiAgICAgUmVmUHRyPE5vZGU+IG5leHRMaXN0Tm9kZSA9IGVtcHR5TGlzdEl0ZW0tPmlz
RWxlbWVudE5vZGUoKSA/IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGVtcHR5TGlzdEl0
ZW0uZ2V0KCkpOiBlbXB0eUxpc3RJdGVtLT5uZXh0U2libGluZygpOwpAQCAtMTM1Myw3ICsxMzUz
LDcgQEAgYm9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVtcAogICAgIGlmIChl
bmNsb3NpbmdOb2RlT2ZUeXBlKHByZXZpb3VzLmRlZXBFcXVpdmFsZW50KCksICZpc01haWxCbG9j
a3F1b3RlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlZlB0cjxOb2RlPiBi
ciA9IGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPE5vZGU+IGJy
ID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwogICAgIC8vIFdlIHdhbnQgdG8gcmVw
bGFjZSB0aGlzIHF1b3RlZCBwYXJhZ3JhcGggd2l0aCBhbiB1bnF1b3RlZCBvbmUsIHNvIGluc2Vy
dCBhIGJyCiAgICAgLy8gdG8gaG9sZCB0aGUgY2FyZXQgYmVmb3JlIHRoZSBoaWdoZXN0IGJsb2Nr
cXVvdGUuCiAgICAgaW5zZXJ0Tm9kZUJlZm9yZShiciwgaGlnaGVzdEJsb2NrcXVvdGUpOwpAQCAt
MTM2MSw3ICsxMzYxLDcgQEAgYm9vbCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YnJlYWtPdXRPZkVt
cAogICAgIC8vIElmIHRoZSBiciB3ZSBpbnNlcnRlZCBjb2xsYXBzZWQsIGZvciBleGFtcGxlIGZv
bzxicj48YmxvY2txdW90ZT4uLi48L2Jsb2NrcXVvdGU+LCBpbnNlcnQKICAgICAvLyBhIHNlY29u
ZCBvbmUuCiAgICAgaWYgKCFpc1N0YXJ0T2ZQYXJhZ3JhcGgoYXRCUikpCi0gICAgICAgIGluc2Vy
dE5vZGVCZWZvcmUoY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKSwgYnIpOworICAgICAg
ICBpbnNlcnROb2RlQmVmb3JlKGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCgpKSwgYnIpOwog
ICAgIHNldEVuZGluZ1NlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGF0QlIsIGVuZGluZ1NlbGVj
dGlvbigpLmlzRGlyZWN0aW9uYWwoKSkpOwogICAgIAogICAgIC8vIElmIHRoaXMgaXMgYW4gZW1w
dHkgcGFyYWdyYXBoIHRoZXJlIG11c3QgYmUgYSBsaW5lIGJyZWFrIGhlcmUuCkBAIC0xNDc0LDEw
ICsxNDc0LDkgQEAgUGFzc1JlZlB0cjxOb2RlPiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cwogICAg
IHJldHVybiBub2RlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVC
bG9ja1BsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGNyZWF0ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkK
IHsKLSAgICBSZWZQdHI8RWxlbWVudD4gYnJlYWtOb2RlID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1l
bnQoYnJUYWcsIGZhbHNlKTsKLSAgICByZXR1cm4gYnJlYWtOb2RlLnJlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChiclRhZywgZmFsc2UpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYyNyw3ICs2MjcsNyBAQCB2b2lkIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlUGFyYWdy
CiAgICAgCiAgICAgLy8gV2UgbmVlZCB0byBtZXJnZSBpbnRvIG1fdXBzdHJlYW1TdGFydCdzIGJs
b2NrLCBidXQgaXQncyBiZWVuIGVtcHRpZWQgb3V0IGFuZCBjb2xsYXBzZWQgYnkgZGVsZXRpb24u
CiAgICAgaWYgKCFtZXJnZURlc3RpbmF0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5v
ZGUoKSB8fCAhbWVyZ2VEZXN0aW5hdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2Rl
KCktPmlzRGVzY2VuZGFudE9mKGVuY2xvc2luZ0Jsb2NrKG1fdXBzdHJlYW1TdGFydC5jb250YWlu
ZXJOb2RlKCkpKSB8fCBtX3N0YXJ0c0F0RW1wdHlMaW5lKSB7Ci0gICAgICAgIGluc2VydE5vZGVB
dChjcmVhdGVCcmVha0VsZW1lbnQoJmRvY3VtZW50KCkpLmdldCgpLCBtX3Vwc3RyZWFtU3RhcnQp
OworICAgICAgICBpbnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLmdl
dCgpLCBtX3Vwc3RyZWFtU3RhcnQpOwogICAgICAgICBtZXJnZURlc3RpbmF0aW9uID0gVmlzaWJs
ZVBvc2l0aW9uKG1fdXBzdHJlYW1TdGFydCk7CiAgICAgfQogICAgIApAQCAtODUxLDcgKzg1MSw3
IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgCiAgICAgcmVt
b3ZlUHJldmlvdXNseVNlbGVjdGVkRW1wdHlUYWJsZVJvd3MoKTsKICAgICAKLSAgICBSZWZQdHI8
Tm9kZT4gcGxhY2Vob2xkZXIgPSBtX25lZWRQbGFjZWhvbGRlciA/IGNyZWF0ZUJyZWFrRWxlbWVu
dCgmZG9jdW1lbnQoKSkuZ2V0KCkgOiAwOworICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhvbGRlciA9
IG1fbmVlZFBsYWNlaG9sZGVyID8gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLmdldCgp
IDogMDsKICAgICAKICAgICBpZiAocGxhY2Vob2xkZXIpIHsKICAgICAgICAgaWYgKG1fc2FuaXRp
emVNYXJrdXApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRlbnRDb21t
YW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luZGVudE91dGRl
bnRDb21tYW5kLmNwcAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw5ICsxNjYs
OSBAQCB2b2lkIEluZGVudE91dGRlbnRDb21tYW5kOjpvdXRkZW50UGFyYWdyCiAgICAgICAgIHZp
c2libGVTdGFydE9mUGFyYWdyYXBoID0gVmlzaWJsZVBvc2l0aW9uKHZpc2libGVTdGFydE9mUGFy
YWdyYXBoLmRlZXBFcXVpdmFsZW50KCkpOwogICAgICAgICB2aXNpYmxlRW5kT2ZQYXJhZ3JhcGgg
PSBWaXNpYmxlUG9zaXRpb24odmlzaWJsZUVuZE9mUGFyYWdyYXBoLmRlZXBFcXVpdmFsZW50KCkp
OwogICAgICAgICBpZiAodmlzaWJsZVN0YXJ0T2ZQYXJhZ3JhcGguaXNOb3ROdWxsKCkgJiYgIWlz
U3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlU3RhcnRPZlBhcmFncmFwaCkpCi0gICAgICAgICAgICBp
bnNlcnROb2RlQXQoY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKSwgdmlzaWJsZVN0YXJ0
T2ZQYXJhZ3JhcGguZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICBpbnNlcnROb2RlQXQo
Y3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpLCB2aXNpYmxlU3RhcnRPZlBhcmFncmFwaC5k
ZWVwRXF1aXZhbGVudCgpKTsKICAgICAgICAgaWYgKHZpc2libGVFbmRPZlBhcmFncmFwaC5pc05v
dE51bGwoKSAmJiAhaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlRW5kT2ZQYXJhZ3JhcGgpKQotICAg
ICAgICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQoKSksIHZp
c2libGVFbmRPZlBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgIGluc2Vy
dE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIHZpc2libGVFbmRPZlBhcmFn
cmFwaC5kZWVwRXF1aXZhbGVudCgpKTsKIAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTgx
LDcgKzE4MSw3IEBAIHZvaWQgSW5kZW50T3V0ZGVudENvbW1hbmQ6Om91dGRlbnRQYXJhZ3IKICAg
ICAgICAgTm9kZSogaGlnaGVzdElubGluZU5vZGUgPSBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlw
ZSh2aXNpYmxlU3RhcnRPZlBhcmFncmFwaC5kZWVwRXF1aXZhbGVudCgpLCBpc0lubGluZSwgQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIGVuY2xvc2luZ0Jsb2NrRmxvdyk7CiAgICAgICAgIHNw
bGl0RWxlbWVudCh0b0VsZW1lbnQoZW5jbG9zaW5nTm9kZSksIChoaWdoZXN0SW5saW5lTm9kZSkg
PyBoaWdoZXN0SW5saW5lTm9kZSA6IHZpc2libGVTdGFydE9mUGFyYWdyYXBoLmRlZXBFcXVpdmFs
ZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgfQotICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhv
bGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPE5vZGU+
IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwogICAgIGluc2Vy
dE5vZGVCZWZvcmUocGxhY2Vob2xkZXIsIHNwbGl0QmxvY2txdW90ZU5vZGUpOwogICAgIG1vdmVQ
YXJhZ3JhcGgoc3RhcnRPZlBhcmFncmFwaCh2aXNpYmxlU3RhcnRPZlBhcmFncmFwaCksIGVuZE9m
UGFyYWdyYXBoKHZpc2libGVFbmRPZlBhcmFncmFwaCksIHBvc2l0aW9uQmVmb3JlTm9kZShwbGFj
ZWhvbGRlci5nZXQoKSksIHRydWUpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCShyZXZpc2lvbiAxNTYyNTUpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydExpbmVCcmVha0NvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBJbnNlcnRMaW5lQnJlYWtDb21tYW5kOjpk
b0FwcGx5KCkKIAogICAgIFJlZlB0cjxOb2RlPiBub2RlVG9JbnNlcnQ7CiAgICAgaWYgKHNob3Vs
ZFVzZUJyZWFrRWxlbWVudChwb3MpKQotICAgICAgICBub2RlVG9JbnNlcnQgPSBjcmVhdGVCcmVh
a0VsZW1lbnQoJmRvY3VtZW50KCkpOworICAgICAgICBub2RlVG9JbnNlcnQgPSBjcmVhdGVCcmVh
a0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgZWxzZQogICAgICAgICBub2RlVG9JbnNlcnQgPSBk
b2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKCJcbiIpOwogICAgIApJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRMaXN0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0TGlzdENvbW1hbmQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw3ICs1NSw3IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExpc3RD
b21tYW4KIAogSFRNTEVsZW1lbnQqIEluc2VydExpc3RDb21tYW5kOjpmaXhPcnBoYW5lZExpc3RD
aGlsZChOb2RlKiBub2RlKQogewotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdEVsZW1lbnQg
PSBjcmVhdGVVbm9yZGVyZWRMaXN0RWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBsaXN0RWxlbWVudCA9IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVtZW50KGRvY3Vt
ZW50KCkpOwogICAgIGluc2VydE5vZGVCZWZvcmUobGlzdEVsZW1lbnQsIG5vZGUpOwogICAgIHJl
bW92ZU5vZGUobm9kZSk7CiAgICAgYXBwZW5kTm9kZShub2RlLCBsaXN0RWxlbWVudCk7CkBAIC0y
MTksNyArMjE5LDcgQEAgdm9pZCBJbnNlcnRMaXN0Q29tbWFuZDo6ZG9BcHBseUZvclNpbmdsZQog
ICAgICAgICAgICAgYm9vbCByYW5nZVN0YXJ0SXNJbkxpc3QgPSB2aXNpYmxlUG9zaXRpb25CZWZv
cmVOb2RlKGxpc3ROb2RlLmdldCgpKSA9PSBjdXJyZW50U2VsZWN0aW9uLT5zdGFydFBvc2l0aW9u
KCk7CiAgICAgICAgICAgICBib29sIHJhbmdlRW5kSXNJbkxpc3QgPSB2aXNpYmxlUG9zaXRpb25B
ZnRlck5vZGUobGlzdE5vZGUuZ2V0KCkpID09IGN1cnJlbnRTZWxlY3Rpb24tPmVuZFBvc2l0aW9u
KCk7CiAKLSAgICAgICAgICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbmV3TGlzdCA9IGNyZWF0ZUhU
TUxFbGVtZW50KCZkb2N1bWVudCgpLCBsaXN0VGFnKTsKKyAgICAgICAgICAgIFJlZlB0cjxIVE1M
RWxlbWVudD4gbmV3TGlzdCA9IGNyZWF0ZUhUTUxFbGVtZW50KGRvY3VtZW50KCksIGxpc3RUYWcp
OwogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShuZXdMaXN0LCBsaXN0Tm9kZSk7CiAKICAg
ICAgICAgICAgIE5vZGUqIGZpcnN0Q2hpbGRJbkxpc3QgPSBlbmNsb3NpbmdMaXN0Q2hpbGQoVmlz
aWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUobGlzdE5vZGUuZ2V0KCkpKS5kZWVwRXF1
aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCksIGxpc3ROb2RlLmdldCgpKTsKQEAgLTI3NiwxMiAr
Mjc2LDEyIEBAIHZvaWQgSW5zZXJ0TGlzdENvbW1hbmQ6OnVubGlzdGlmeVBhcmFncmEKICAgICB9
CiAgICAgLy8gV2hlbiByZW1vdmluZyBhIGxpc3QsIHdlIG11c3QgYWx3YXlzIGNyZWF0ZSBhIHBs
YWNlaG9sZGVyIHRvIGFjdCBhcyBhIHBvaW50IG9mIGluc2VydGlvbgogICAgIC8vIGZvciB0aGUg
bGlzdCBjb250ZW50IGJlaW5nIHJlbW92ZWQuCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHBsYWNlaG9s
ZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8RWxlbWVu
dD4gcGxhY2Vob2xkZXIgPSBjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgUmVm
UHRyPEVsZW1lbnQ+IG5vZGVUb0luc2VydCA9IHBsYWNlaG9sZGVyOwogICAgIC8vIElmIHRoZSBj
b250ZW50IG9mIHRoZSBsaXN0IGl0ZW0gd2lsbCBiZSBtb3ZlZCBpbnRvIGFub3RoZXIgbGlzdCwg
cHV0IGl0IGluIGEgbGlzdCBpdGVtCiAgICAgLy8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgYW4g
b3JwaGFuZWQgbGlzdCBjaGlsZC4KICAgICBpZiAoZW5jbG9zaW5nTGlzdChsaXN0Tm9kZSkpIHsK
LSAgICAgICAgbm9kZVRvSW5zZXJ0ID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KCZkb2N1bWVudCgp
KTsKKyAgICAgICAgbm9kZVRvSW5zZXJ0ID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KGRvY3VtZW50
KCkpOwogICAgICAgICBhcHBlbmROb2RlKHBsYWNlaG9sZGVyLCBub2RlVG9JbnNlcnQpOwogICAg
IH0KIApAQCAtMzM4LDggKzMzOCw4IEBAIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEluc2VydExp
c3RDb21tYW4KICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBDaGVjayBmb3IgYWRqb2luaW5n
IGxpc3RzLgotICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbGlzdEl0ZW1FbGVtZW50ID0gY3JlYXRl
TGlzdEl0ZW1FbGVtZW50KCZkb2N1bWVudCgpKTsKLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHBs
YWNlaG9sZGVyID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8
SFRNTEVsZW1lbnQ+IGxpc3RJdGVtRWxlbWVudCA9IGNyZWF0ZUxpc3RJdGVtRWxlbWVudChkb2N1
bWVudCgpKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gY3JlYXRlQnJl
YWtFbGVtZW50KGRvY3VtZW50KCkpOwogICAgIGFwcGVuZE5vZGUocGxhY2Vob2xkZXIsIGxpc3RJ
dGVtRWxlbWVudCk7CiAKICAgICAvLyBQbGFjZSBsaXN0IGl0ZW0gaW50byBhZGpvaW5pbmcgbGlz
dHMuCkBAIC0zNTIsNyArMzUyLDcgQEAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gSW5zZXJ0TGlz
dENvbW1hbgogICAgICAgICBpbnNlcnROb2RlQXQobGlzdEl0ZW1FbGVtZW50LCBwb3NpdGlvbkJl
Zm9yZU5vZGUobmV4dExpc3QpKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBs
aXN0LgotICAgICAgICBsaXN0RWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KCZkb2N1bWVudCgp
LCBsaXN0VGFnKTsKKyAgICAgICAgbGlzdEVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudChkb2N1
bWVudCgpLCBsaXN0VGFnKTsKICAgICAgICAgYXBwZW5kTm9kZShsaXN0SXRlbUVsZW1lbnQsIGxp
c3RFbGVtZW50KTsKIAogICAgICAgICBpZiAoc3RhcnQgPT0gZW5kICYmIGlzQmxvY2soc3RhcnQu
ZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1h
bmQuY3BwCShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDMsMTAg
KzIwMywxMCBAQCB2b2lkIEluc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmRvCiAgICAg
Ly8gQ3JlYXRlIGJsb2NrIHRvIGJlIGluc2VydGVkLgogICAgIFJlZlB0cjxFbGVtZW50PiBibG9j
a1RvSW5zZXJ0OwogICAgIGlmIChzdGFydEJsb2NrLT5pc1Jvb3RFZGl0YWJsZUVsZW1lbnQoKSkg
ewotICAgICAgICBibG9ja1RvSW5zZXJ0ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQo
JmRvY3VtZW50KCkpOworICAgICAgICBibG9ja1RvSW5zZXJ0ID0gY3JlYXRlRGVmYXVsdFBhcmFn
cmFwaEVsZW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgICAgIG5lc3ROZXdCbG9jayA9IHRydWU7CiAg
ICAgfSBlbHNlIGlmIChzaG91bGRVc2VEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChzdGFydEJsb2Nr
LmdldCgpKSkgCi0gICAgICAgIGJsb2NrVG9JbnNlcnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgICAgIGJsb2NrVG9JbnNlcnQgPSBjcmVhdGVEZWZh
dWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCgpKTsKICAgICBlbHNlCiAgICAgICAgIGJsb2Nr
VG9JbnNlcnQgPSBzdGFydEJsb2NrLT5jbG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKIApA
QCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6
ZG8KICAgICAgICAgICAgIGlmIChpc0ZpcnN0SW5CbG9jayAmJiAhbGluZUJyZWFrRXhpc3RzQXRW
aXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcykpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYmxv
Y2sgaXMgZW1wdHkuICBDcmVhdGUgYW4gZW1wdHkgYmxvY2sgdG8KICAgICAgICAgICAgICAgICAv
LyByZXByZXNlbnQgdGhlIHBhcmFncmFwaCB0aGF0IHdlJ3JlIGxlYXZpbmcuCi0gICAgICAgICAg
ICAgICAgUmVmUHRyPEVsZW1lbnQ+IGV4dHJhQmxvY2sgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGV4
dHJhQmxvY2sgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCgpKTsKICAg
ICAgICAgICAgICAgICBhcHBlbmROb2RlKGV4dHJhQmxvY2ssIHN0YXJ0QmxvY2spOwogICAgICAg
ICAgICAgICAgIGFwcGVuZEJsb2NrUGxhY2Vob2xkZXIoZXh0cmFCbG9jayk7CiAgICAgICAgICAg
ICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21t
YW5kOjpkbwogICAgIC8vIGl0IGlmIHZpc2libGVQb3MgaXMgYXQgdGhlIHN0YXJ0IG9mIGEgcGFy
YWdyYXBoIHNvIHRoYXQgdGhlIAogICAgIC8vIGNvbnRlbnQgd2lsbCBtb3ZlIGRvd24gYSBsaW5l
LgogICAgIGlmIChpc1N0YXJ0T2ZQYXJhZ3JhcGgodmlzaWJsZVBvcykpIHsKLSAgICAgICAgUmVm
UHRyPEVsZW1lbnQ+IGJyID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKTsKKyAgICAg
ICAgUmVmUHRyPEVsZW1lbnQ+IGJyID0gY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KCkpOwog
ICAgICAgICBpbnNlcnROb2RlQXQoYnIuZ2V0KCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAg
ICAgaW5zZXJ0aW9uUG9zaXRpb24gPSBwb3NpdGlvbkluUGFyZW50QWZ0ZXJOb2RlKGJyLmdldCgp
KTsKICAgICAgICAgLy8gSWYgdGhlIGluc2VydGlvbiBwb2ludCBpcyBhIGJyZWFrIGVsZW1lbnQs
IHRoZXJlIGlzIG5vdGhpbmcgZWxzZQpAQCAtMzY5LDcgKzM2OSw3IEBAIHZvaWQgSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6ZG8KICAgICAvLyBjcmVhdGVkLiAgQWxsIG9mIHRoZSBu
b2Rlcywgc3RhcnRpbmcgYXQgdmlzaWJsZVBvcywgYXJlIGFib3V0IHRvIGJlIGFkZGVkIHRvIHRo
ZSBuZXcgcGFyYWdyYXBoIAogICAgIC8vIGVsZW1lbnQuICBJZiB0aGUgZmlyc3Qgbm9kZSB0byBi
ZSBpbnNlcnRlZCB3b24ndCBiZSBvbmUgdGhhdCB3aWxsIGhvbGQgYW4gZW1wdHkgbGluZSBvcGVu
LCBhZGQgYSBici4KICAgICBpZiAoaXNFbmRPZlBhcmFncmFwaCh2aXNpYmxlUG9zKSAmJiAhbGlu
ZUJyZWFrRXhpc3RzQXRWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcykpCi0gICAgICAgIGFwcGVu
ZE5vZGUoY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCgpKS5nZXQoKSwgYmxvY2tUb0luc2Vy
dC5nZXQoKSk7CisgICAgICAgIGFwcGVuZE5vZGUoY3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50
KCkpLmdldCgpLCBibG9ja1RvSW5zZXJ0LmdldCgpKTsKIAogICAgIC8vIE1vdmUgdGhlIHN0YXJ0
IG5vZGUgYW5kIHRoZSBzaWJsaW5ncyBvZiB0aGUgc3RhcnQgbm9kZS4KICAgICBpZiAoVmlzaWJs
ZVBvc2l0aW9uKGluc2VydGlvblBvc2l0aW9uKSAhPSBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25C
ZWZvcmVOb2RlKGJsb2NrVG9JbnNlcnQuZ2V0KCkpKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRUZXh0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDcsNyArMjQ3LDcgQEAgUG9zaXRpb24gSW5zZXJ0VGV4dENvbW1hbmQ6Omluc2VydFRh
YihjbwogICAgIH0KICAgICAKICAgICAvLyBjcmVhdGUgbmV3IHRhYiBzcGFuCi0gICAgUmVmUHRy
PEVsZW1lbnQ+IHNwYW5Ob2RlID0gY3JlYXRlVGFiU3BhbkVsZW1lbnQoJmRvY3VtZW50KCkpOwor
ICAgIFJlZlB0cjxFbGVtZW50PiBzcGFuTm9kZSA9IGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3Vt
ZW50KCkpOwogICAgIAogICAgIC8vIHBsYWNlIGl0CiAgICAgaWYgKCFub2RlLT5pc1RleHROb2Rl
KCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkw
LDEwICsxOTAsMTAgQEAgdm9pZCBJbmNyZWFzZVNlbGVjdGlvbkxpc3RMZXZlbENvbW1hbmQ6Ogog
ICAgICAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBuZXdQYXJlbnQtPmNsb25lRWxlbWVudFdp
dGhvdXRDaGlsZHJlbigpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBPcmRlcmVkTGlzdDoKLSAgICAgICAgICAgICAgICBuZXdQYXJlbnQgPSBjcmVhdGVPcmRlcmVk
TGlzdEVsZW1lbnQoJmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgIG5ld1BhcmVudCA9IGNy
ZWF0ZU9yZGVyZWRMaXN0RWxlbWVudChkb2N1bWVudCgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVW5vcmRlcmVkTGlzdDoKLSAgICAgICAgICAgICAgICBuZXdQ
YXJlbnQgPSBjcmVhdGVVbm9yZGVyZWRMaXN0RWxlbWVudCgmZG9jdW1lbnQoKSk7CisgICAgICAg
ICAgICAgICAgbmV3UGFyZW50ID0gY3JlYXRlVW5vcmRlcmVkTGlzdEVsZW1lbnQoZG9jdW1lbnQo
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaW5zZXJ0Tm9k
ZUJlZm9yZShuZXdQYXJlbnQsIHN0YXJ0TGlzdENoaWxkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCShyZXZp
c2lvbiAxNTYyNTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNw
YW5Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCB2b2lkIFJlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kOjpkb0FwcGx5CiAgICAgaWYgKCFtX2VsZW1lbnRUb1JlcGxh
Y2UtPmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9zcGFuRWxlbWVu
dCkKLSAgICAgICAgbV9zcGFuRWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KCZtX2VsZW1lbnRU
b1JlcGxhY2UtPmRvY3VtZW50KCksIHNwYW5UYWcpOworICAgICAgICBtX3NwYW5FbGVtZW50ID0g
Y3JlYXRlSFRNTEVsZW1lbnQobV9lbGVtZW50VG9SZXBsYWNlLT5kb2N1bWVudCgpLCBzcGFuVGFn
KTsKICAgICBzd2FwSW5Ob2RlUHJlc2VydmluZ0F0dHJpYnV0ZXNBbmRDaGlsZHJlbihtX3NwYW5F
bGVtZW50LmdldCgpLCBtX2VsZW1lbnRUb1JlcGxhY2UuZ2V0KCkpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAko
cmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDggQEAgcHJpdmF0ZToK
ICAgICAKICAgICB2b2lkIGluc2VydE5vZGVCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBO
b2RlKiByZWZOb2RlKTsKIAorICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuICptX2Rv
Y3VtZW50OyB9CisKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IG1fZnJhZ21lbnQ7CiAgICAgYm9vbCBtX2hhc0ludGVyY2hhbmdl
TmV3bGluZUF0U3RhcnQ7CkBAIC0xNDYsOCArMTQ4LDYgQEAgUmVwbGFjZW1lbnRGcmFnbWVudDo6
UmVwbGFjZW1lbnRGcmFnbWVudAogICAgICwgbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdFN0YXJ0
KGZhbHNlKQogICAgICwgbV9oYXNJbnRlcmNoYW5nZU5ld2xpbmVBdEVuZChmYWxzZSkKIHsKLSAg
ICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZnJhZ21lbnQp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKSkKQEAg
LTI1MSwxMSArMjUxLDExIEBAIHZvaWQgUmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0Tm9kZUJl
Zm8KIAogUGFzc1JlZlB0cjxTdHlsZWRFbGVtZW50PiBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNl
cnRGcmFnbWVudEZvclRlc3RSZW5kZXJpbmcoTm9kZSogcm9vdEVkaXRhYmxlRWxlbWVudCkKIHsK
LSAgICBSZWZQdHI8U3R5bGVkRWxlbWVudD4gaG9sZGVyID0gY3JlYXRlRGVmYXVsdFBhcmFncmFw
aEVsZW1lbnQobV9kb2N1bWVudC5nZXQoKSk7CisgICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IGhv
bGRlciA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KCkpOwogCiAgICAg
aG9sZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICByb290RWRpdGFibGVFbGVtZW50LT5hcHBlbmRDaGlsZChob2xkZXIuZ2V0KCksIEFTU0VSVF9O
T19FWENFUFRJT04pOwotICAgIG1fZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAKICAgICByZXR1cm4gaG9sZGVyLnJlbGVhc2UoKTsKIH0KQEAgLTgyMSw3
ICs4MjEsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjptZXJnZUVuZElmCiAgICAg
Ly8gTWVyZ2luZyBmb3J3YXJkIGNvdWxkIHJlc3VsdCBpbiBkZWxldGluZyB0aGUgZGVzdGluYXRp
b24gYW5jaG9yIG5vZGUuCiAgICAgLy8gVG8gYXZvaWQgdGhpcywgd2UgYWRkIGEgcGxhY2Vob2xk
ZXIgbm9kZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGguCiAgICAgaWYgKGVuZE9m
UGFyYWdyYXBoKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUpID09IGRlc3RpbmF0aW9uKSB7Ci0gICAg
ICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1l
bnQoKSk7CisgICAgICAgIFJlZlB0cjxOb2RlPiBwbGFjZWhvbGRlciA9IGNyZWF0ZUJyZWFrRWxl
bWVudChkb2N1bWVudCgpKTsKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShwbGFjZWhvbGRlciwg
c3RhcnRPZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkp
OwogICAgICAgICBkZXN0aW5hdGlvbiA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5v
ZGUocGxhY2Vob2xkZXIuZ2V0KCkpKTsKICAgICB9CkBAIC0xMTE3LDcgKzExMTcsNyBAQCB2b2lk
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBXZSBpbnNlcnRlZCBi
ZWZvcmUgdGhlIHN0YXJ0QmxvY2sgdG8gcHJldmVudCBuZXN0aW5nLCBhbmQgdGhlIGNvbnRlbnQg
YmVmb3JlIHRoZSBzdGFydEJsb2NrIHdhc24ndCBpbiBpdHMgb3duIGJsb2NrIGFuZAogICAgIC8v
IGRpZG4ndCBoYXZlIGEgYnIgYWZ0ZXIgaXQsIHNvIHRoZSBpbnNlcnRlZCBjb250ZW50IGVuZGVk
IHVwIGluIHRoZSBzYW1lIHBhcmFncmFwaC4KICAgICBpZiAoc3RhcnRCbG9jayAmJiBpbnNlcnRp
b25Qb3MuZGVwcmVjYXRlZE5vZGUoKSA9PSBzdGFydEJsb2NrLT5wYXJlbnROb2RlKCkgJiYgKHVu
c2lnbmVkKWluc2VydGlvblBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgc3RhcnRCbG9j
ay0+bm9kZUluZGV4KCkgJiYgIWlzU3RhcnRPZlBhcmFncmFwaChzdGFydE9mSW5zZXJ0ZWRDb250
ZW50KSkKLSAgICAgICAgaW5zZXJ0Tm9kZUF0KGNyZWF0ZUJyZWFrRWxlbWVudCgmZG9jdW1lbnQo
KSksIHN0YXJ0T2ZJbnNlcnRlZENvbnRlbnQuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgICAgIGlu
c2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIHN0YXJ0T2ZJbnNlcnRl
ZENvbnRlbnQuZGVlcEVxdWl2YWxlbnQoKSk7CiAKICAgICBpZiAoZW5kQlIgJiYgKHBsYWluVGV4
dEZyYWdtZW50IHx8IHNob3VsZFJlbW92ZUVuZEJSKGVuZEJSLCBvcmlnaW5hbFZpc1Bvc0JlZm9y
ZUVuZEJSKSkpIHsKICAgICAgICAgUmVmUHRyPE5vZGU+IHBhcmVudCA9IGVuZEJSLT5wYXJlbnRO
b2RlKCk7CkBAIC0xMTUyLDcgKzExNTIsNyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
Ojpkb0FwcGx5KCkKICAgICAgICAgLy8gV2UgaW5zZXJ0IGEgcGxhY2Vob2xkZXIgYmVmb3JlIHRo
ZSBuZXdseSBpbnNlcnRlZCBjb250ZW50IHRvIGF2b2lkIGJlaW5nIG1lcmdlZCBpbnRvIHRoZSBp
bmxpbmUuCiAgICAgICAgIE5vZGUqIGRlc3RpbmF0aW9uTm9kZSA9IGRlc3RpbmF0aW9uLmRlZXBF
cXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKTsKICAgICAgICAgaWYgKG1fc2hvdWxkTWVyZ2VF
bmQgJiYgZGVzdGluYXRpb25Ob2RlICE9IGVuY2xvc2luZ0lubGluZShkZXN0aW5hdGlvbk5vZGUp
ICYmIGVuY2xvc2luZ0lubGluZShkZXN0aW5hdGlvbk5vZGUpLT5uZXh0U2libGluZygpKQotICAg
ICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShjcmVhdGVCcmVha0VsZW1lbnQoJmRvY3VtZW50KCkp
LCByZWZOb2RlLmdldCgpKTsKKyAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUoY3JlYXRlQnJl
YWtFbGVtZW50KGRvY3VtZW50KCkpLCByZWZOb2RlLmdldCgpKTsKICAgICAgICAgCiAgICAgICAg
IC8vIE1lcmdpbmcgdGhlIHRoZSBmaXJzdCBwYXJhZ3JhcGggb2YgaW5zZXJ0ZWQgY29udGVudCB3
aXRoIHRoZSBjb250ZW50IHRoYXQgY2FtZQogICAgICAgICAvLyBiZWZvcmUgdGhlIHNlbGVjdGlv
biB0aGF0IHdhcyBwYXN0ZWQgaW50byB3b3VsZCBhbHNvIG1vdmUgY29udGVudCBhZnRlciAKQEAg
LTExNjMsNyArMTE2Myw3IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHko
KQogICAgICAgICAvLyBjb21lcyBhZnRlciBhbmQgcHJldmVudCB0aGF0IGZyb20gaGFwcGVuaW5n
LgogICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kT2ZJbnNlcnRlZENvbnRlbnQgPSBwb3NpdGlv
bkF0RW5kT2ZJbnNlcnRlZENvbnRlbnQoKTsKICAgICAgICAgaWYgKHN0YXJ0T2ZQYXJhZ3JhcGgo
ZW5kT2ZJbnNlcnRlZENvbnRlbnQpID09IHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUpIHsKLSAgICAg
ICAgICAgIGluc2VydE5vZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoJmRvY3VtZW50KCkpLCBlbmRP
Zkluc2VydGVkQ29udGVudC5kZWVwRXF1aXZhbGVudCgpKTsKKyAgICAgICAgICAgIGluc2VydE5v
ZGVBdChjcmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQoKSksIGVuZE9mSW5zZXJ0ZWRDb250ZW50
LmRlZXBFcXVpdmFsZW50KCkpOwogICAgICAgICAgICAgLy8gTXV0YXRpb24gZXZlbnRzIChidWcg
MjI2MzQpIHRyaWdnZXJlZCBieSBpbnNlcnRpbmcgdGhlIDxicj4gbWlnaHQgaGF2ZSByZW1vdmVk
IHRoZSBjb250ZW50IHdlJ3JlIGFib3V0IHRvIG1vdmUKICAgICAgICAgICAgIGlmICghc3RhcnRP
ZlBhcmFncmFwaFRvTW92ZS5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKS0+aW5Eb2N1bWVu
dCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExODcsNyArMTE4Nyw3IEBAIHZvaWQg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAgICAgICAgIHNldEVu
ZGluZ1NlbGVjdGlvbihlbmRPZkluc2VydGVkQ29udGVudCk7CiAgICAgICAgICAgICAgICAgTm9k
ZSogZW5jbG9zaW5nTm9kZSA9IGVuY2xvc2luZ0Jsb2NrKGVuZE9mSW5zZXJ0ZWRDb250ZW50LmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlz
TGlzdEl0ZW0oZW5jbG9zaW5nTm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPE5v
ZGU+IG5ld0xpc3RJdGVtID0gY3JlYXRlTGlzdEl0ZW1FbGVtZW50KCZkb2N1bWVudCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5ld0xpc3RJdGVtID0gY3JlYXRlTGlzdEl0
ZW1FbGVtZW50KGRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICBpbnNlcnROb2RlQWZ0
ZXIobmV3TGlzdEl0ZW0sIGVuY2xvc2luZ05vZGUpOwogICAgICAgICAgICAgICAgICAgICBzZXRF
bmRpbmdTZWxlY3Rpb24oVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUobmV3TGlz
dEl0ZW0uZ2V0KCkpKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlTcGFuQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDE1NjI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3Jh
cENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCB2b2lkIFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZDo6ZXhlCiAKIHZvaWQg
V3JhcENvbnRlbnRzSW5EdW1teVNwYW5Db21tYW5kOjpkb0FwcGx5KCkKIHsKLSAgICBtX2R1bW15
U3BhbiA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoJmRvY3VtZW50KCkpOworICAgIG1fZHVtbXlT
cGFuID0gY3JlYXRlU3R5bGVTcGFuRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAKICAgICBleGVj
dXRlQXBwbHkoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
CShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTA0LDQ3ICs5MDQsNDUgQEAgYm9vbCBpc0VtcHR5VGFi
bGVDZWxsKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuICFjaGlsZFJlbmRlcmVyLT5uZXh0
U2libGluZygpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVEZWZhdWx0UGFy
YWdyYXBoRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0g
ICAgc3dpdGNoIChkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCkuZGVmYXVsdFBhcmFncmFwaFNl
cGFyYXRvcigpKSB7CisgICAgc3dpdGNoIChkb2N1bWVudC5mcmFtZSgpLT5lZGl0b3IoKS5kZWZh
dWx0UGFyYWdyYXBoU2VwYXJhdG9yKCkpIHsKICAgICBjYXNlIEVkaXRvclBhcmFncmFwaFNlcGFy
YXRvcklzRGl2OgotICAgICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1l
bnQpOworICAgICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgY2FzZSBFZGl0b3JQYXJhZ3JhcGhTZXBhcmF0b3JJc1A6Ci0gICAgICAgIHJldHVybiBIVE1M
UGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKCpkb2N1bWVudCk7CisgICAgICAgIHJldHVybiBIVE1M
UGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICB9CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVu
dD4gY3JlYXRlQnJlYWtFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8SFRN
TEVsZW1lbnQ+IGNyZWF0ZUJyZWFrRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAg
cmV0dXJuIEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOworICAgIHJldHVybiBIVE1M
QlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogfQogCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBjcmVhdGVPcmRlcmVkTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQorUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gY3JlYXRlT3JkZXJlZExpc3RFbGVtZW50KERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKLSAgICByZXR1cm4gSFRNTE9MaXN0RWxlbWVudDo6Y3JlYXRlKCpkb2N1bWVudCk7Cisg
ICAgcmV0dXJuIEhUTUxPTGlzdEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiB9CiAKLVBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVub3JkZXJlZExpc3RFbGVt
ZW50KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gSFRNTFVMaXN0RWxlbWVudDo6
Y3JlYXRlKCpkb2N1bWVudCk7CisgICAgcmV0dXJuIEhUTUxVTGlzdEVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiB9CiAKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUxpc3RJdGVtRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVM
aXN0SXRlbUVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHJldHVybiBIVE1MTElF
bGVtZW50OjpjcmVhdGUoKmRvY3VtZW50KTsKKyAgICByZXR1cm4gSFRNTExJRWxlbWVudDo6Y3Jl
YXRlKGRvY3VtZW50KTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQorUGFz
c1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogewotICAgIGlmICghZG9jdW1lbnQpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBIVE1MRWxlbWVudEZhY3Rvcnk6OmNyZWF0
ZUVsZW1lbnQobmFtZSwgKmRvY3VtZW50KTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnRGYWN0b3J5
OjpjcmVhdGVFbGVtZW50KG5hbWUsIGRvY3VtZW50KTsKIH0KIAotUGFzc1JlZlB0cjxIVE1MRWxl
bWVudD4gY3JlYXRlSFRNTEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIHRhZ05hbWUpCitQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVu
dChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgdGFnTmFtZSkKIHsKICAg
ICByZXR1cm4gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQsIFF1YWxpZmllZE5hbWUobnVsbEF0
b20sIHRhZ05hbWUsIHhodG1sTmFtZXNwYWNlVVJJKSk7CiB9CkBAIC05NzgsMzUgKzk3NiwzNSBA
QCBQb3NpdGlvbiBwb3NpdGlvbk91dHNpZGVUYWJTcGFuKGNvbnN0IFBvCiAgICAgcmV0dXJuIHBv
c2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+
IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxOb2Rl
PiBwcnBUYWJUZXh0Tm9kZSkKK1Bhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1l
bnQoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmUHRyPE5vZGU+IHBycFRhYlRleHROb2RlKQog
ewogICAgIFJlZlB0cjxOb2RlPiB0YWJUZXh0Tm9kZSA9IHBycFRhYlRleHROb2RlOwogCiAgICAg
Ly8gTWFrZSB0aGUgc3BhbiB0byBob2xkIHRoZSB0YWIuCi0gICAgUmVmUHRyPEVsZW1lbnQ+IHNw
YW5FbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoc3BhblRhZywgZmFsc2UpOworICAg
IFJlZlB0cjxFbGVtZW50PiBzcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoc3Bh
blRhZywgZmFsc2UpOwogICAgIHNwYW5FbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBB
cHBsZVRhYlNwYW5DbGFzcyk7CiAgICAgc3BhbkVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0
dHIsICJ3aGl0ZS1zcGFjZTpwcmUiKTsKIAogICAgIC8vIEFkZCB0YWIgdGV4dCB0byB0aGF0IHNw
YW4uCiAgICAgaWYgKCF0YWJUZXh0Tm9kZSkKLSAgICAgICAgdGFiVGV4dE5vZGUgPSBkb2N1bWVu
dC0+Y3JlYXRlRWRpdGluZ1RleHROb2RlKCJcdCIpOworICAgICAgICB0YWJUZXh0Tm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiXHQiKTsKIAogICAgIHNwYW5FbGVtZW50LT5h
cHBlbmRDaGlsZCh0YWJUZXh0Tm9kZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwog
CiAgICAgcmV0dXJuIHNwYW5FbGVtZW50LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxFbGVt
ZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdGFiVGV4dCkKK1Bhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRhYlRleHQpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCBkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUodGFi
VGV4dCkpOworICAgIHJldHVybiBjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUodGFiVGV4dCkpOwogfQogCi1QYXNzUmVmUHRyPEVsZW1lbnQ+IGNy
ZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8RWxlbWVu
dD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIHJldHVy
biBjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPigpKTsKIH0K
IAotYm9vbCBpc05vZGVSZW5kZXJlZChjb25zdCBOb2RlICpub2RlKQorYm9vbCBpc05vZGVSZW5k
ZXJlZChjb25zdCBOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkocmV2aXNpb24g
MTU2MjU1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDgsMTMgKzIwOCwxMyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBleHRlbmRSYW5n
ZVRvV3JhcHBpbmdOCiAgICAgCiAvLyBGdW5jdGlvbnMgcmV0dXJuaW5nIEhUTUxFbGVtZW50CiAg
ICAgCi1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVu
dChEb2N1bWVudCopOwotUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlQnJlYWtFbGVtZW50
KERvY3VtZW50Kik7Ci1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVPcmRlcmVkTGlzdEVs
ZW1lbnQoRG9jdW1lbnQqKTsKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZVVub3JkZXJl
ZExpc3RFbGVtZW50KERvY3VtZW50Kik7Ci1QYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVM
aXN0SXRlbUVsZW1lbnQoRG9jdW1lbnQqKTsKLVBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0
ZUhUTUxFbGVtZW50KERvY3VtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnQoRG9jdW1lbnQqLCBjb25zdCBBdG9taWNT
dHJpbmcmKTsKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhF
bGVtZW50KERvY3VtZW50Jik7CitQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVCcmVha0Vs
ZW1lbnQoRG9jdW1lbnQmKTsKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZU9yZGVyZWRM
aXN0RWxlbWVudChEb2N1bWVudCYpOworUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlVW5v
cmRlcmVkTGlzdEVsZW1lbnQoRG9jdW1lbnQmKTsKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNy
ZWF0ZUxpc3RJdGVtRWxlbWVudChEb2N1bWVudCYpOworUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4g
Y3JlYXRlSFRNTEVsZW1lbnQoRG9jdW1lbnQmLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CitQYXNz
UmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVIVE1MRWxlbWVudChEb2N1bWVudCYsIGNvbnN0IEF0
b21pY1N0cmluZyYpOwogCiBIVE1MRWxlbWVudCogZW5jbG9zaW5nTGlzdChOb2RlKik7CiBIVE1M
RWxlbWVudCogb3V0ZXJtb3N0RW5jbG9zaW5nTGlzdChOb2RlKiwgTm9kZSogcm9vdExpc3QgPSAw
KTsKQEAgLTIyNiwxMCArMjI2LDEwIEBAIE5vZGUqIGVuY2xvc2luZ0xpc3RDaGlsZChOb2RlKik7
CiAgICAgCiAvLyBGdW5jdGlvbnMgcmV0dXJuaW5nIEVsZW1lbnQKICAgICAKLVBhc3NSZWZQdHI8
RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQqKTsKLVBhc3NSZWZQdHI8RWxl
bWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9jdW1lbnQqLCBQYXNzUmVmUHRyPE5vZGU+IHRh
YlRleHROb2RlKTsKLVBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlVGFiU3BhbkVsZW1lbnQoRG9j
dW1lbnQqLCBjb25zdCBTdHJpbmcmIHRhYlRleHQpOwotUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVh
dGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChEb2N1bWVudCopOworUGFzc1JlZlB0cjxFbGVtZW50
PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYpOworUGFzc1JlZlB0cjxFbGVtZW50PiBj
cmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYsIFBhc3NSZWZQdHI8Tm9kZT4gdGFiVGV4dE5v
ZGUpOworUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYgdGFiVGV4dCk7CitQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUJsb2Nr
UGxhY2Vob2xkZXJFbGVtZW50KERvY3VtZW50Jik7CiAKIEVsZW1lbnQqIGVkaXRhYmxlUm9vdEZv
clBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgRWRpdGFibGVUeXBlID0gQ29udGVudElzRWRpdGFi
bGUpOwogRWxlbWVudCogdW5zcGxpdHRhYmxlRWxlbWVudEZvclBvc2l0aW9uKGNvbnN0IFBvc2l0
aW9uJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAxNTYyNTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3MSw3ICs3NzEsNyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IE5vZGUqIG5vZGUsIEVD
CiAKIHN0YXRpYyB2b2lkIGZpbGxDb250YWluZXJGcm9tU3RyaW5nKENvbnRhaW5lck5vZGUqIHBh
cmFncmFwaCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gJnBhcmFncmFwaC0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBwYXJh
Z3JhcGgtPmRvY3VtZW50KCk7CiAKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkgewogICAgICAg
ICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KGRv
Y3VtZW50KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CkBAIC03OTQsNyArNzk0LDcgQEAgc3RhdGlj
IHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udAogICAgICAgICAgICAgICAgIHBhcmFn
cmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgICAgICAgICB0YWJUZXh0ID0gZW1wdHlT
dHJpbmcoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJlZlB0cjxOb2RlPiB0ZXh0Tm9k
ZSA9IGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJpbmdXaXRoUmViYWxhbmNlZFdoaXRlc3Bh
Y2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMpKTsKKyAgICAgICAgICAgIFJlZlB0cjxO
b2RlPiB0ZXh0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cmluZ1dpdGhSZWJhbGFu
Y2VkV2hpdGVzcGFjZShzLCBmaXJzdCwgaSArIDEgPT0gbnVtRW50cmllcykpOwogICAgICAgICAg
ICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZCh0ZXh0Tm9kZS5yZWxlYXNlKCksIEFTU0VSVF9OT19F
WENFUFRJT04pOwogICAgICAgICB9CiAKQEAgLTg0OCw3ICs4NDgsNyBAQCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtCiAgICAgaWYgKGNvbnRleHRQcmVzZXJ2ZXNOZXds
aW5lKCpjb250ZXh0KSkgewogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoc3RyaW5nKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlm
IChzdHJpbmcuZW5kc1dpdGgoJ1xuJykpIHsKLSAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50ID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCk7CisgICAgICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCk7CiAgICAg
ICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdl
TmV3bGluZSk7ICAgICAgICAgICAgCiAgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQo
ZWxlbWVudC5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9CkBAIC04
ODAsMTYgKzg4MCwxNiBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdt
CiAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwogICAgICAgICBpZiAocy5pc0VtcHR5
KCkgJiYgaSArIDEgPT0gbnVtTGluZXMpIHsKICAgICAgICAgICAgIC8vIEZvciBsYXN0IGxpbmUs
IHVzZSB0aGUgIm1hZ2ljIEJSIiByYXRoZXIgdGhhbiBhIFAuCi0gICAgICAgICAgICBlbGVtZW50
ID0gY3JlYXRlQnJlYWtFbGVtZW50KCZkb2N1bWVudCk7CisgICAgICAgICAgICBlbGVtZW50ID0g
Y3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsKICAgICAgICAgfSBl
bHNlIGlmICh1c2VMaW5lQnJlYWspIHsKLSAgICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVCcmVh
a0VsZW1lbnQoJmRvY3VtZW50KTsKKyAgICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVCcmVha0Vs
ZW1lbnQoZG9jdW1lbnQpOwogICAgICAgICAgICAgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoZnJh
Z21lbnQuZ2V0KCksIHMpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHVzZUNs
b25lc09mRW5jbG9zaW5nQmxvY2spCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGJsb2NrLT5j
bG9uZUVsZW1lbnRXaXRob3V0Q2hpbGRyZW4oKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoJmRvY3VtZW50
KTsKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1l
bnQoZG9jdW1lbnQpOwogICAgICAgICAgICAgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoZWxlbWVu
dC5nZXQoKSwgcyk7CiAgICAgICAgIH0KICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVs
ZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKQEAgLTg5Nyw3ICs4OTcsNyBA
QCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtCiAgICAgcmV0dXJuIGZy
YWdtZW50LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGVGcmFnbWVudEZyb21Ob2RlcyhEb2N1bWVudCAqZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxOb2Rl
Kj4mIG5vZGVzKQorUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21Ob2RlcyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxOb2RlKj4mIG5vZGVzKQog
ewogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTExLDcgKzkxMSw3
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ20KIAogICAgIHNpemVf
dCBzaXplID0gbm9kZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBh
cmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVu
dCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KCpkb2N1bWVudCk7CiAgICAgICAgIGVs
ZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVzW2ldLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCShyZXZpc2lvbiAxNTYyNTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ4MCwxNCArNDgwLDE4IEBAIGJvb2wgRWRpdG9y
OjpXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZW4KICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGZyYWdtZW50ID0gZnJhbWUuZG9jdW1lbnQoKS0+Y3JlYXRlRG9j
dW1lbnRGcmFnbWVudCgpOworICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9ICpmcmFtZS5kb2N1bWVudCgpOwor
CisgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBTdHJpbmcgdGV4
dCA9IHBhdGhzW2ldOwogICAgICAgICB0ZXh0ID0gZnJhbWUuZWRpdG9yKCkuY2xpZW50KCktPnVz
ZXJWaXNpYmxlU3RyaW5nKFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6dGV4dF0pOwogCi0gICAgICAg
IFJlZlB0cjxIVE1MRWxlbWVudD4gcGFyYWdyYXBoID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVs
ZW1lbnQoZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQo
ZnJhbWUuZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgICAgICBSZWZQdHI8
SFRNTEVsZW1lbnQ+IHBhcmFncmFwaCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRv
Y3VtZW50KTsKKyAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSh0ZXh0KSk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChwYXJhZ3JhcGgu
cmVsZWFzZSgpKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAkocmV2aXNpb24gMTU2MjU1KQorKysgU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY5
LDcgKzY2OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1QKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxIVE1MRWxlbWVu
dD4gcGFyc2VkRWxlbWVudCA9IGNyZWF0ZUhUTUxFbGVtZW50KCZlbGVtZW50LT5kb2N1bWVudCgp
LCBzcGFuVGFnKTsKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHBhcnNlZEVsZW1lbnQgPSBjcmVh
dGVIVE1MRWxlbWVudChlbGVtZW50LT5kb2N1bWVudCgpLCBzcGFuVGFnKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBwYXJzZWRFbGVtZW50LmdldCgpLT5zZXRJbm5lckhUTUwoIjxz
cGFuICIgKyB0ZXh0ICsgIj48L3NwYW4+IiwgZWMpOwogICAgIGlmIChlYykgewo=
</data>
<flag name="review"
          id="234595"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>