<?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>121401</bug_id>
          
          <creation_ts>2013-09-15 13:25:23 -0700</creation_ts>
          <short_desc>CTTE: InputType element backpointer should be a reference.</short_desc>
          <delta_ts>2013-09-16 23:32:40 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>121466</dup_id>
          
          <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="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>929494</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-15 13:25:23 -0700</bug_when>
    <thetext>CTTE: InputType element backpointer should be a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929495</commentid>
    <comment_count>1</comment_count>
      <attachid>211727</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-15 13:27:53 -0700</bug_when>
    <thetext>Created attachment 211727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929503</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-15 14:18:33 -0700</bug_when>
    <thetext>Attachment 211727 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/html/BaseButtonInputType.cpp&apos;, u&apos;Source/WebCore/html/BaseButtonInputType.h&apos;, u&apos;Source/WebCore/html/BaseCheckableInputType.cpp&apos;, u&apos;Source/WebCore/html/BaseCheckableInputType.h&apos;, u&apos;Source/WebCore/html/BaseClickableWithKeyInputType.cpp&apos;, u&apos;Source/WebCore/html/BaseClickableWithKeyInputType.h&apos;, u&apos;Source/WebCore/html/BaseTextInputType.cpp&apos;, u&apos;Source/WebCore/html/BaseTextInputType.h&apos;, u&apos;Source/WebCore/html/ButtonInputType.cpp&apos;, u&apos;Source/WebCore/html/ButtonInputType.h&apos;, u&apos;Source/WebCore/html/CheckboxInputType.cpp&apos;, u&apos;Source/WebCore/html/CheckboxInputType.h&apos;, u&apos;Source/WebCore/html/ColorInputType.cpp&apos;, u&apos;Source/WebCore/html/ColorInputType.h&apos;, u&apos;Source/WebCore/html/EmailInputType.cpp&apos;, u&apos;Source/WebCore/html/EmailInputType.h&apos;, u&apos;Source/WebCore/html/FileInputType.cpp&apos;, u&apos;Source/WebCore/html/FileInputType.h&apos;, u&apos;Source/WebCore/html/HTMLInputElement.cpp&apos;, u&apos;Source/WebCore/html/HiddenInputType.cpp&apos;, u&apos;Source/WebCore/html/HiddenInputType.h&apos;, u&apos;Source/WebCore/html/ImageInputType.cpp&apos;, u&apos;Source/WebCore/html/ImageInputType.h&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/InputType.h&apos;, u&apos;Source/WebCore/html/NumberInputType.cpp&apos;, u&apos;Source/WebCore/html/NumberInputType.h&apos;, u&apos;Source/WebCore/html/PasswordInputType.cpp&apos;, u&apos;Source/WebCore/html/PasswordInputType.h&apos;, u&apos;Source/WebCore/html/RadioInputType.cpp&apos;, u&apos;Source/WebCore/html/RadioInputType.h&apos;, u&apos;Source/WebCore/html/RangeInputType.cpp&apos;, u&apos;Source/WebCore/html/RangeInputType.h&apos;, u&apos;Source/WebCore/html/ResetInputType.cpp&apos;, u&apos;Source/WebCore/html/ResetInputType.h&apos;, u&apos;Source/WebCore/html/SearchInputType.cpp&apos;, u&apos;Source/WebCore/html/SearchInputType.h&apos;, u&apos;Source/WebCore/html/SubmitInputType.cpp&apos;, u&apos;Source/WebCore/html/SubmitInputType.h&apos;, u&apos;Source/WebCore/html/TelephoneInputType.cpp&apos;, u&apos;Source/WebCore/html/TelephoneInputType.h&apos;, u&apos;Source/WebCore/html/TextFieldInputType.cpp&apos;, u&apos;Source/WebCore/html/TextFieldInputType.h&apos;, u&apos;Source/WebCore/html/TextInputType.cpp&apos;, u&apos;Source/WebCore/html/TextInputType.h&apos;, u&apos;Source/WebCore/html/URLInputType.cpp&apos;, u&apos;Source/WebCore/html/URLInputType.h&apos;]&quot; exit_code: 1
Source/WebCore/html/InputType.cpp:142:  Local variables should never be PassOwnPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Total errors found: 1 in 48 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929504</commentid>
    <comment_count>3</comment_count>
      <attachid>211727</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-15 14:20:14 -0700</bug_when>
    <thetext>Comment on attachment 211727
Patch

Attachment 211727 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/1898047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929505</commentid>
    <comment_count>4</comment_count>
      <attachid>211727</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-15 14:20:24 -0700</bug_when>
    <thetext>Comment on attachment 211727
Patch

Attachment 211727 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/1883121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929506</commentid>
    <comment_count>5</comment_count>
      <attachid>211727</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-15 14:21:57 -0700</bug_when>
    <thetext>Comment on attachment 211727
Patch

Attachment 211727 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1892169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>929507</commentid>
    <comment_count>6</comment_count>
      <attachid>211727</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-15 14:22:57 -0700</bug_when>
    <thetext>Comment on attachment 211727
Patch

Attachment 211727 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/1892170</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930071</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-16 23:32:40 -0700</bug_when>
    <thetext>heh

*** This bug has been marked as a duplicate of bug 121466 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211727</attachid>
            <date>2013-09-15 13:27:53 -0700</date>
            <delta_ts>2013-09-15 14:22:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121401.diff</filename>
            <type>text/plain</type>
            <size>109137</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjU0YzE0Li4wYTU2MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMDktMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIENUVEU6IElucHV0VHlwZSBlbGVtZW50IGJhY2twb2ludGVyIHNob3VsZCBiZSBhIHJlZmVy
ZW5jZS4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMTQwMT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMZXQgSW5wdXRUeXBlIHN0b3Jl
IGEgSFRNTElucHV0RWxlbWVudCYgaW50ZXJuYWxseSBzaW5jZSBpdCdzIGFsd2F5cworICAgICAg
ICBvd25lZCBieSBhIEhUTUxJbnB1dEVsZW1lbnQuCisKKyAgICAgICAgVGhpcyBhdm9pZHMgc29t
ZSBhd2t3YXJkIGRlcmVmZXJlbmNpbmcgYW5kIGFzc2VydGlvbnMuCisKIDIwMTMtMDktMTUgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDVFRFOiBSZW5kZXJPYmplY3Qn
cyBjcmVhdGVBbm9ueW1vdXMoKSBhbmQgc2V0RG9jdW1lbnRGb3JBbm9ueW1vdXMoKSBzaG91bGQg
dGFrZSBEb2N1bWVudCByZWZlcmVuY2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGM5YjAxNWYu
LmU3NmE5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0yNTIxLDcgKzI1MjEsNiBAQCBfX1pO
SzdXZWJDb3JlMTJJY29uRGF0YWJhc2U5aXNFbmFibGVkRXYKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKIF9fWk43V2ViQ29yZTVDb2xvckMxRVA3Q0dDb2xvcgogX19aTjdXZWJDb3JlNUNv
bG9yQzFFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNENvbG9ySW5wdXRUeXBlNmNyZWF0
ZUVQTlNfMTZIVE1MSW5wdXRFbGVtZW50RQogX19aTjdXZWJDb3JlMTZIVE1MSW5wdXRFbGVtZW50
MjVzZWxlY3RDb2xvckluQ29sb3JDaG9vc2VyRVJLTlNfNUNvbG9yRQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwCmluZGV4IDAyZDU5YTcuLmZi
Nzc3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlw
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcApA
QCAtNTQsOCArNTQsNyBAQCBib29sIEJhc2VCdXR0b25JbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRh
KEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0CiAKIFJlbmRlck9iamVjdCogQmFzZUJ1dHRvbklu
cHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSop
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7IC8vIEZJWE1FOiBlbGVtZW50KCkgc2hv
dWxkIHJldHVybiBhIHJlZmVyZW5jZS4KLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyQnV0
dG9uKCplbGVtZW50KCkpOworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJCdXR0b24oZWxl
bWVudCgpKTsKIH0KIAogYm9vbCBCYXNlQnV0dG9uSW5wdXRUeXBlOjpzdG9yZXNWYWx1ZVNlcGFy
YXRlRnJvbUF0dHJpYnV0ZSgpCkBAIC02NSw3ICs2NCw3IEBAIGJvb2wgQmFzZUJ1dHRvbklucHV0
VHlwZTo6c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQogCiB2b2lkIEJhc2VCdXR0
b25JbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc2FuaXRpemVkVmFsdWUsIGJvb2ws
IFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiB7Ci0gICAgZWxlbWVudCgpLT5zZXRBdHRyaWJ1dGUo
dmFsdWVBdHRyLCBzYW5pdGl6ZWRWYWx1ZSk7CisgICAgZWxlbWVudCgpLnNldEF0dHJpYnV0ZSh2
YWx1ZUF0dHIsIHNhbml0aXplZFZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaAppbmRleCA1MjFlMTBhLi5l
ODA3YTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuaApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBCYXNlIG9mIGJ1dHRvbiwgZmls
ZSwgaW1hZ2UsIHJlc2V0LCBhbmQgc3VibWl0IHR5cGVzLgogY2xhc3MgQmFzZUJ1dHRvbklucHV0
VHlwZSA6IHB1YmxpYyBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZSB7CiBwcm90ZWN0ZWQ6
Ci0gICAgZXhwbGljaXQgQmFzZUJ1dHRvbklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KSA6IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAgIGV4
cGxpY2l0IEJhc2VCdXR0b25JbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBC
YXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29u
c3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2Fi
bGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRU
eXBlLmNwcAppbmRleCBjMzFiZmUzLi4wMTgwZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKQEAgLTQ1LDE5ICs0NSwxOSBAQCB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCiBGb3JtQ29udHJvbFN0YXRlIEJhc2VDaGVja2FibGVJbnB1
dFR5cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gRm9ybUNv
bnRyb2xTdGF0ZShlbGVtZW50KCktPmNoZWNrZWQoKSA/IEFTQ0lJTGl0ZXJhbCgib24iKSA6IEFT
Q0lJTGl0ZXJhbCgib2ZmIikpOworICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKGVsZW1lbnQo
KS5jaGVja2VkKCkgPyBBU0NJSUxpdGVyYWwoIm9uIikgOiBBU0NJSUxpdGVyYWwoIm9mZiIpKTsK
IH0KIAogdm9pZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNvbnRyb2xTdGF0
ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIHsKLSAgICBlbGVtZW50KCktPnNldENo
ZWNrZWQoc3RhdGVbMF0gPT0gIm9uIik7CisgICAgZWxlbWVudCgpLnNldENoZWNrZWQoc3RhdGVb
MF0gPT0gIm9uIik7CiB9CiAKIGJvb2wgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6YXBwZW5kRm9y
bURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkgY29uc3QKIHsKLSAgICBpZiAoIWVs
ZW1lbnQoKS0+Y2hlY2tlZCgpKQorICAgIGlmICghZWxlbWVudCgpLmNoZWNrZWQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGVuY29kaW5nLmFwcGVuZERhdGEoZWxlbWVudCgpLT5uYW1l
KCksIGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgZW5jb2RpbmcuYXBwZW5kRGF0YShlbGVtZW50
KCkubmFtZSgpLCBlbGVtZW50KCkudmFsdWUoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTY1LDcgKzY1LDcgQEAgdm9pZCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpoYW5kbGVLZXlkb3du
RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBrZXkgPSBl
dmVudC0+a2V5SWRlbnRpZmllcigpOwogICAgIGlmIChrZXkgPT0gIlUrMDAyMCIpIHsKLSAgICAg
ICAgZWxlbWVudCgpLT5zZXRBY3RpdmUodHJ1ZSwgdHJ1ZSk7CisgICAgICAgIGVsZW1lbnQoKS5z
ZXRBY3RpdmUodHJ1ZSwgdHJ1ZSk7CiAgICAgICAgIC8vIE5vIHNldERlZmF1bHRIYW5kbGVkKCks
IGJlY2F1c2UgSUUgZGlzcGF0Y2hlcyBhIGtleXByZXNzIGluIHRoaXMgY2FzZQogICAgICAgICAv
LyBhbmQgdGhlIGNhbGxlciB3aWxsIG9ubHkgZGlzcGF0Y2ggYSBrZXlwcmVzcyBpZiB3ZSBkb24n
dCBjYWxsIHNldERlZmF1bHRIYW5kbGVkKCkuCiAgICAgfQpAQCAtODksNyArODksNyBAQCB2b2lk
IEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2
ZW50cykKIHsKICAgICBJbnB1dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihzZW5kTW91c2VFdmVudHMp
OwogCi0gICAgZWxlbWVudCgpLT5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKDAsIHNlbmRNb3VzZUV2
ZW50cyA/IFNlbmRNb3VzZVVwRG93bkV2ZW50cyA6IFNlbmROb0V2ZW50cyk7CisgICAgZWxlbWVu
dCgpLmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soMCwgc2VuZE1vdXNlRXZlbnRzID8gU2VuZE1vdXNl
VXBEb3duRXZlbnRzIDogU2VuZE5vRXZlbnRzKTsKIH0KIAogU3RyaW5nIEJhc2VDaGVja2FibGVJ
bnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUoKSBjb25zdApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wg
QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUo
KQogCiB2b2lkIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYg
c2FuaXRpemVkVmFsdWUsIGJvb2wsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpCiB7Ci0gICAgZWxl
bWVudCgpLT5zZXRBdHRyaWJ1dGUodmFsdWVBdHRyLCBzYW5pdGl6ZWRWYWx1ZSk7CisgICAgZWxl
bWVudCgpLnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIHNhbml0aXplZFZhbHVlKTsKIH0KIAogYm9v
bCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjppc0NoZWNrYWJsZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oCmluZGV4IDViZTRiOGMuLjFhZmM4NzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuaApAQCAtMzgs
NyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBCYXNlIG9mIGNoZWNrYm94IGFuZCBy
YWRpbyB0eXBlcy4KIGNsYXNzIEJhc2VDaGVja2FibGVJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRU
eXBlIHsKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlKEhU
TUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAgIGV4
cGxpY2l0IEJhc2VDaGVja2FibGVJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkg
OiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50Kik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwCmluZGV4IDJhMDliMmYu
LmY5OWRjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNsaWNrYWJsZVdp
dGhLZXlJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNsaWNrYWJs
ZVdpdGhLZXlJbnB1dFR5cGUuY3BwCkBAIC0zOSwyMSArMzksMjEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi12b2lkIEJhc2VDbGlja2FibGVX
aXRoS2V5SW5wdXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoSFRNTElucHV0RWxlbWVudCogZWxl
bWVudCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit2b2lkIEJhc2VDbGlja2FibGVXaXRoS2V5SW5w
dXRUeXBlOjpoYW5kbGVLZXlkb3duRXZlbnQoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgY29uc3QgU3RyaW5nJiBrZXkgPSBldmVudC0+a2V5
SWRlbnRpZmllcigpOwogICAgIGlmIChrZXkgPT0gIlUrMDAyMCIpIHsKLSAgICAgICAgZWxlbWVu
dC0+c2V0QWN0aXZlKHRydWUsIHRydWUpOworICAgICAgICBlbGVtZW50LnNldEFjdGl2ZSh0cnVl
LCB0cnVlKTsKICAgICAgICAgLy8gTm8gc2V0RGVmYXVsdEhhbmRsZWQoKSwgYmVjYXVzZSBJRSBk
aXNwYXRjaGVzIGEga2V5cHJlc3MgaW4gdGhpcyBjYXNlCiAgICAgICAgIC8vIGFuZCB0aGUgY2Fs
bGVyIHdpbGwgb25seSBkaXNwYXRjaCBhIGtleXByZXNzIGlmIHdlIGRvbid0IGNhbGwgc2V0RGVm
YXVsdEhhbmRsZWQoKS4KICAgICB9CiB9CiAKLXZvaWQgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1
dFR5cGU6OmhhbmRsZUtleXByZXNzRXZlbnQoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCwgS2V5
Ym9hcmRFdmVudCogZXZlbnQpCit2b2lkIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlOjpo
YW5kbGVLZXlwcmVzc0V2ZW50KEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogewogICAgIGludCBjaGFyQ29kZSA9IGV2ZW50LT5jaGFyQ29kZSgpOwogICAg
IGlmIChjaGFyQ29kZSA9PSAnXHInKSB7Ci0gICAgICAgIGVsZW1lbnQtPmRpc3BhdGNoU2ltdWxh
dGVkQ2xpY2soZXZlbnQpOworICAgICAgICBlbGVtZW50LmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2so
ZXZlbnQpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTczLDkgKzczLDkgQEAgdm9pZCBCYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZTo6aGFuZGxlS2V5dXBFdmVudChJbnB1dFR5cGUmIGlucHV0VHlwZSwgS2V5Ym8KIH0K
IAogLy8gRklYTUU6IENvdWxkIHNoYXJlIHRoaXMgd2l0aCBCYXNlQ2hlY2thYmxlSW5wdXRUeXBl
IGFuZCBSYW5nZUlucHV0VHlwZSBpZiB3ZSBoYWQgYSBjb21tb24gYmFzZSBjbGFzcy4KLXZvaWQg
QmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50LCBib29sIHNlbmRNb3VzZUV2ZW50cykKK3ZvaWQgQmFzZUNsaWNrYWJs
ZVdpdGhLZXlJbnB1dFR5cGU6OmFjY2Vzc0tleUFjdGlvbihIVE1MSW5wdXRFbGVtZW50JiBlbGVt
ZW50LCBib29sIHNlbmRNb3VzZUV2ZW50cykKIHsKLSAgICBlbGVtZW50LT5kaXNwYXRjaFNpbXVs
YXRlZENsaWNrKDAsIHNlbmRNb3VzZUV2ZW50cyA/IFNlbmRNb3VzZVVwRG93bkV2ZW50cyA6IFNl
bmROb0V2ZW50cyk7CisgICAgZWxlbWVudC5kaXNwYXRjaFNpbXVsYXRlZENsaWNrKDAsIHNlbmRN
b3VzZUV2ZW50cyA/IFNlbmRNb3VzZVVwRG93bkV2ZW50cyA6IFNlbmROb0V2ZW50cyk7CiB9CiAK
IHZvaWQgQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNs
aWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaAppbmRleCBmYjZlY2NhLi45ZWRlNThjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5o
CkBAIC0zOCwxMyArMzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQmFzZSBvZiBpbnB1
dCB0eXBlcyB0aGF0IGRpc3BhdGNoZXMgYSBzaW11bGF0ZWQgY2xpY2sgb24gc3BhY2UvcmV0dXJu
IGtleS4KIGNsYXNzIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlIDogcHVibGljIElucHV0
VHlwZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEhUTUxJ
bnB1dEVsZW1lbnQqLCBLZXlib2FyZEV2ZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgaGFuZGxlS2V5
cHJlc3NFdmVudChIVE1MSW5wdXRFbGVtZW50KiwgS2V5Ym9hcmRFdmVudCopOworICAgIHN0YXRp
YyB2b2lkIGhhbmRsZUtleWRvd25FdmVudChIVE1MSW5wdXRFbGVtZW50JiwgS2V5Ym9hcmRFdmVu
dCopOworICAgIHN0YXRpYyB2b2lkIGhhbmRsZUtleXByZXNzRXZlbnQoSFRNTElucHV0RWxlbWVu
dCYsIEtleWJvYXJkRXZlbnQqKTsKICAgICBzdGF0aWMgdm9pZCBoYW5kbGVLZXl1cEV2ZW50KElu
cHV0VHlwZSYsIEtleWJvYXJkRXZlbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBhY2Nlc3NLZXlBY3Rp
b24oSFRNTElucHV0RWxlbWVudCosIGJvb2wgc2VuZE1vdXNlRXZlbnRzKTsKKyAgICBzdGF0aWMg
dm9pZCBhY2Nlc3NLZXlBY3Rpb24oSFRNTElucHV0RWxlbWVudCYsIGJvb2wgc2VuZE1vdXNlRXZl
bnRzKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBCYXNlQ2xpY2thYmxlV2l0aEtl
eUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50
KSB7IH0KKyAgICBleHBsaWNpdCBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50JiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVS
UklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAKaW5kZXggZDFk
MTJhYS4uOWEyNmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgYm9vbCBCYXNlVGV4dElucHV0VHlwZTo6aXNUZXh0VHlwZSgp
IGNvbnN0CiAKIGJvb2wgQmFzZVRleHRJbnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmF3UGF0dGVy
biA9IGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShwYXR0ZXJuQXR0cik7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiByYXdQYXR0ZXJuID0gZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUocGF0
dGVybkF0dHIpOwogICAgIGlmIChyYXdQYXR0ZXJuLmlzTnVsbCgpIHx8IHZhbHVlLmlzRW1wdHko
KSB8fCAhUmVndWxhckV4cHJlc3Npb24ocmF3UGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpLmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFN0cmluZyBwYXR0ZXJuID0gIl4o
PzoiICsgcmF3UGF0dGVybiArICIpJCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VUZXh0SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRU
eXBlLmgKaW5kZXggMDg5ZGEwYS4uMTYzYjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlVGV4dElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZVRl
eHRJbnB1dFR5cGUuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBU
aGV5IHN1cHBvcnQgbWF4bGVuZ3RoLCBzZWxlY3Rpb24gZnVuY3Rpb25zLCBhbmQgc28gb24uCiBj
bGFzcyBCYXNlVGV4dElucHV0VHlwZSA6IHB1YmxpYyBUZXh0RmllbGRJbnB1dFR5cGUgewogcHJv
dGVjdGVkOgotICAgIGV4cGxpY2l0IEJhc2VUZXh0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
IGVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAgIGV4cGxpY2l0
IEJhc2VUZXh0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogVGV4dEZpZWxk
SW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1Rl
eHRUeXBlKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0J1dHRvbklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlw
ZS5jcHAKaW5kZXggZDhlNDJhZi4uMWJlYTYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CdXR0b25JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQnV0dG9u
SW5wdXRUeXBlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NPd25QdHI8SW5wdXRUeXBlPiBCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50KiBlbGVtZW50KQorUGFzc093blB0cjxJbnB1dFR5cGU+IEJ1dHRvbklucHV0VHlwZTo6
Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQnV0dG9u
SW5wdXRUeXBlLmgKaW5kZXggN2NlNGJlOS4uYjhiNDVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0J1
dHRvbklucHV0VHlwZS5oCkBAIC0zNywxMCArMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBCdXR0b25JbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUJ1dHRvbklucHV0VHlwZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0
RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJ
bnB1dEVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBCdXR0b25JbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkgOiBCYXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAg
IEJ1dHRvbklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VCdXR0b25J
bnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c1ZhbGlkYXRpb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0QnV0
dG9uKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0No
ZWNrYm94SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5
cGUuY3BwCmluZGV4IDE3ODFjMjQuLmUyMzNhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hl
Y2tib3hJbnB1dFR5cGUuY3BwCkBAIC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc093blB0cjxJbnB1dFR5cGU+IENoZWNrYm94SW5wdXRUeXBlOjpjcmVhdGUoSFRN
TElucHV0RWxlbWVudCogZWxlbWVudCkKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBDaGVja2JveElu
cHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBDaGVja2JveElucHV0VHlwZShlbGVtZW50KSk7CiB9CkBAIC01Miw3ICs1
Miw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgQ2hlY2tib3hJbnB1dFR5cGU6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0CiAKIGJvb2wgQ2hlY2tib3hJbnB1dFR5cGU6OnZhbHVlTWlzc2luZyhjb25z
dCBTdHJpbmcmKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50KCktPmlzUmVxdWlyZWQoKSAm
JiAhZWxlbWVudCgpLT5jaGVja2VkKCk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS5pc1JlcXVpcmVk
KCkgJiYgIWVsZW1lbnQoKS5jaGVja2VkKCk7CiB9CiAKIFN0cmluZyBDaGVja2JveElucHV0VHlw
ZTo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0CkBAIC03NSwxMyArNzUsMTMgQEAgUGFzc093blB0
cjxDbGlja0hhbmRsaW5nU3RhdGU+IENoZWNrYm94SW5wdXRUeXBlOjp3aWxsRGlzcGF0Y2hDbGlj
aygpCiAKICAgICBPd25QdHI8Q2xpY2tIYW5kbGluZ1N0YXRlPiBzdGF0ZSA9IGFkb3B0UHRyKG5l
dyBDbGlja0hhbmRsaW5nU3RhdGUpOwogCi0gICAgc3RhdGUtPmNoZWNrZWQgPSBlbGVtZW50KCkt
PmNoZWNrZWQoKTsKLSAgICBzdGF0ZS0+aW5kZXRlcm1pbmF0ZSA9IGVsZW1lbnQoKS0+aW5kZXRl
cm1pbmF0ZSgpOworICAgIHN0YXRlLT5jaGVja2VkID0gZWxlbWVudCgpLmNoZWNrZWQoKTsKKyAg
ICBzdGF0ZS0+aW5kZXRlcm1pbmF0ZSA9IGVsZW1lbnQoKS5pbmRldGVybWluYXRlKCk7CiAKICAg
ICBpZiAoc3RhdGUtPmluZGV0ZXJtaW5hdGUpCi0gICAgICAgIGVsZW1lbnQoKS0+c2V0SW5kZXRl
cm1pbmF0ZShmYWxzZSk7CisgICAgICAgIGVsZW1lbnQoKS5zZXRJbmRldGVybWluYXRlKGZhbHNl
KTsKIAotICAgIGVsZW1lbnQoKS0+c2V0Q2hlY2tlZCghc3RhdGUtPmNoZWNrZWQsIERpc3BhdGNo
Q2hhbmdlRXZlbnQpOworICAgIGVsZW1lbnQoKS5zZXRDaGVja2VkKCFzdGF0ZS0+Y2hlY2tlZCwg
RGlzcGF0Y2hDaGFuZ2VFdmVudCk7CiAKICAgICByZXR1cm4gc3RhdGUucmVsZWFzZSgpOwogfQpA
QCAtODksOCArODksOCBAQCBQYXNzT3duUHRyPENsaWNrSGFuZGxpbmdTdGF0ZT4gQ2hlY2tib3hJ
bnB1dFR5cGU6OndpbGxEaXNwYXRjaENsaWNrKCkKIHZvaWQgQ2hlY2tib3hJbnB1dFR5cGU6OmRp
ZERpc3BhdGNoQ2xpY2soRXZlbnQqIGV2ZW50LCBjb25zdCBDbGlja0hhbmRsaW5nU3RhdGUmIHN0
YXRlKQogewogICAgIGlmIChldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpIHx8IGV2ZW50LT5kZWZh
dWx0SGFuZGxlZCgpKSB7Ci0gICAgICAgIGVsZW1lbnQoKS0+c2V0SW5kZXRlcm1pbmF0ZShzdGF0
ZS5pbmRldGVybWluYXRlKTsKLSAgICAgICAgZWxlbWVudCgpLT5zZXRDaGVja2VkKHN0YXRlLmNo
ZWNrZWQpOworICAgICAgICBlbGVtZW50KCkuc2V0SW5kZXRlcm1pbmF0ZShzdGF0ZS5pbmRldGVy
bWluYXRlKTsKKyAgICAgICAgZWxlbWVudCgpLnNldENoZWNrZWQoc3RhdGUuY2hlY2tlZCk7CiAg
ICAgfQogCiAgICAgLy8gVGhlIHdvcmsgd2UgZGlkIGluIHdpbGxEaXNwYXRjaENsaWNrIHdhcyBk
ZWZhdWx0IGhhbmRsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2Jv
eElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2JveElucHV0VHlwZS5oCmlu
ZGV4IGM0YzAwOWEuLmQ3N2JmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hl
Y2tib3hJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRU
eXBlLmgKQEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENo
ZWNrYm94SW5wdXRUeXBlIDogcHVibGljIEJhc2VDaGVja2FibGVJbnB1dFR5cGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1l
bnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgQ2hlY2tib3hJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkgOiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQorICAg
IENoZWNrYm94SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZUNoZWNr
YWJsZUlucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHZh
bHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFN0
cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IGY2MmNiZTcuLjI0NDYyMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBib29sIGlz
VmFsaWRDb2xvclN0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBjb2xvci5p
c1ZhbGlkKCkgJiYgIWNvbG9yLmhhc0FscGhhKCk7CiB9CiAKLVBhc3NPd25QdHI8SW5wdXRUeXBl
PiBDb2xvcklucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitQYXNz
T3duUHRyPElucHV0VHlwZT4gQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50
JiBlbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29sb3JJbnB1dFR5cGUoZWxl
bWVudCkpOwogfQpAQCAtMTExLDIwICsxMTEsMjAgQEAgU3RyaW5nIENvbG9ySW5wdXRUeXBlOjpz
YW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKIAogQ29sb3Ig
Q29sb3JJbnB1dFR5cGU6OnZhbHVlQXNDb2xvcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENvbG9y
KGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIENvbG9yKGVsZW1lbnQoKS52YWx1ZSgp
KTsKIH0KIAogdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiB7Ci0g
ICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgpKTsKKyAgICBBU1NFUlQoZWxlbWVudCgp
LnNoYWRvd1Jvb3QoKSk7CiAKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCktPmRv
Y3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLmRvY3VtZW50KCk7
CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiB3cmFwcGVyRWxlbWVudCA9IEhUTUxEaXZFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIHdyYXBwZXJFbGVtZW50LT5zZXRQc2V1ZG8oQXRv
bWljU3RyaW5nKCItd2Via2l0LWNvbG9yLXN3YXRjaC13cmFwcGVyIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY29sb3JT
d2F0Y2ggPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb2xvclN3YXRj
aC0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1jb2xvci1zd2F0Y2giLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgd3JhcHBlckVsZW1lbnQtPmFwcGVu
ZENoaWxkKGNvbG9yU3dhdGNoLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAg
ZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJFbGVt
ZW50LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgZWxlbWVudCgpLnVzZXJB
Z2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQod3JhcHBlckVsZW1lbnQucmVsZWFzZSgpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAKICAgICB1cGRhdGVDb2xvclN3YXRjaCgpOwogfQpA
QCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0
cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFCiAKIHZvaWQgQ29sb3JJ
bnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAgIGlm
IChlbGVtZW50KCktPmlzRGlzYWJsZWRPclJlYWRPbmx5KCkgfHwgIWVsZW1lbnQoKS0+cmVuZGVy
ZXIoKSkKKyAgICBpZiAoZWxlbWVudCgpLmlzRGlzYWJsZWRPclJlYWRPbmx5KCkgfHwgIWVsZW1l
bnQoKS5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIVNjcmlwdENvbnRy
b2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQpAQCAtMTgxLDExICsxODEsMTEgQEAgYm9v
bCBDb2xvcklucHV0VHlwZTo6c2hvdWxkUmVzZXRPbkRvY3VtZW50QWN0aXZhdGlvbigpCiAKIHZv
aWQgQ29sb3JJbnB1dFR5cGU6OmRpZENob29zZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
LSAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkT3JSZWFkT25seSgpIHx8IGNvbG9yID09IHZh
bHVlQXNDb2xvcigpKQorICAgIGlmIChlbGVtZW50KCkuaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSB8
fCBjb2xvciA9PSB2YWx1ZUFzQ29sb3IoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGVsZW1lbnQo
KS0+c2V0VmFsdWVGcm9tUmVuZGVyZXIoY29sb3Iuc2VyaWFsaXplZCgpKTsKKyAgICBlbGVtZW50
KCkuc2V0VmFsdWVGcm9tUmVuZGVyZXIoY29sb3Iuc2VyaWFsaXplZCgpKTsKICAgICB1cGRhdGVD
b2xvclN3YXRjaCgpOwotICAgIGVsZW1lbnQoKS0+ZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2
ZW50KCk7CisgICAgZWxlbWVudCgpLmRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOwog
fQogCiB2b2lkIENvbG9ySW5wdXRUeXBlOjpkaWRFbmRDaG9vc2VyKCkKQEAgLTIwNSwxOCArMjA1
LDE4IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OnVwZGF0ZUNvbG9yU3dhdGNoKCkKICAgICBpZiAo
IWNvbG9yU3dhdGNoKQogICAgICAgICByZXR1cm47CiAKLSAgICBjb2xvclN3YXRjaC0+c2V0SW5s
aW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgZWxlbWVudCgpLT52
YWx1ZSgpLCBmYWxzZSk7CisgICAgY29sb3JTd2F0Y2gtPnNldElubGluZVN0eWxlUHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIGVsZW1lbnQoKS52YWx1ZSgpLCBmYWxzZSk7CiB9
CiAKIEhUTUxFbGVtZW50KiBDb2xvcklucHV0VHlwZTo6c2hhZG93Q29sb3JTd2F0Y2goKSBjb25z
dAogewotICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpOworICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IGVsZW1lbnQoKS51c2VyQWdlbnRTaGFk
b3dSb290KCk7CiAgICAgcmV0dXJuIHNoYWRvdyA/IHRvSFRNTEVsZW1lbnQoc2hhZG93LT5maXJz
dENoaWxkKCktPmZpcnN0Q2hpbGQoKSkgOiAwOwogfQogCiBJbnRSZWN0IENvbG9ySW5wdXRUeXBl
OjplbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVs
ZW1lbnQoKS0+ZG9jdW1lbnQoKS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhlbGVtZW50KCkt
PnBpeGVsU25hcHBlZEJvdW5kaW5nQm94KCkpOworICAgIHJldHVybiBlbGVtZW50KCkuZG9jdW1l
bnQoKS52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhlbGVtZW50KCkucGl4ZWxTbmFwcGVkQm91
bmRpbmdCb3goKSk7CiB9CiAKIENvbG9yIENvbG9ySW5wdXRUeXBlOjpjdXJyZW50Q29sb3IoKQpA
QCAtMjI3LDcgKzIyNyw3IEBAIENvbG9yIENvbG9ySW5wdXRUeXBlOjpjdXJyZW50Q29sb3IoKQog
Ym9vbCBDb2xvcklucHV0VHlwZTo6c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3QKIHsKICNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICByZXR1cm4gZWxlbWVudCgpLT5mYXN0SGFz
QXR0cmlidXRlKGxpc3RBdHRyKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLmZhc3RIYXNBdHRyaWJ1
dGUobGlzdEF0dHIpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTIzNywx
MSArMjM3LDExIEBAIFZlY3RvcjxDb2xvcj4gQ29sb3JJbnB1dFR5cGU6OnN1Z2dlc3Rpb25zKCkg
Y29uc3QKIHsKICAgICBWZWN0b3I8Q29sb3I+IHN1Z2dlc3Rpb25zOwogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQotICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQqIGRhdGFMaXN0ID0gZWxlbWVu
dCgpLT5kYXRhTGlzdCgpOworICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQqIGRhdGFMaXN0ID0gZWxl
bWVudCgpLmRhdGFMaXN0KCk7CiAgICAgaWYgKGRhdGFMaXN0KSB7CiAgICAgICAgIFJlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24gPSB0b0hUTUxPcHRp
b25FbGVtZW50KG9wdGlvbnMtPml0ZW0oaSkpOyBpKyspIHsKLSAgICAgICAgICAgIGlmICghZWxl
bWVudCgpLT5pc1ZhbGlkVmFsdWUob3B0aW9uLT52YWx1ZSgpKSkKKyAgICAgICAgICAgIGlmICgh
ZWxlbWVudCgpLmlzVmFsaWRWYWx1ZShvcHRpb24tPnZhbHVlKCkpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgQ29sb3IgY29sb3Iob3B0aW9uLT52YWx1ZSgpKTsKICAg
ICAgICAgICAgIGlmICghY29sb3IuaXNWYWxpZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Db2xvcklucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5oCmluZGV4IGZmMWU3NzguLjY2ZjQwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5w
dXRUeXBlLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b2xvcklucHV0VHlwZSA6IHB1YmxpYyBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZSwgcHVi
bGljIENvbG9yQ2hvb3NlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzT3du
UHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5D
b2xvcklucHV0VHlwZSgpOwogCiAgICAgLy8gQ29sb3JDaG9vc2VyQ2xpZW50IGltcGxlbWVudGF0
aW9uLgpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8Q29sb3I+
IHN1Z2dlc3Rpb25zKCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
Q29sb3JJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBCYXNlQ2xpY2thYmxl
V2l0aEtleUlucHV0VHlwZShlbGVtZW50KSB7IH0KKyAgICBleHBsaWNpdCBDb2xvcklucHV0VHlw
ZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRU
eXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNDb2xvckNvbnRyb2woKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCmluZGV4IGI1MWQwYTcuLmQ3Yzk2
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRyZXNz
KQogICAgIHJldHVybiAhbWF0Y2hPZmZzZXQgJiYgbWF0Y2hMZW5ndGggPT0gYWRkcmVzc0xlbmd0
aDsKIH0KIAotUGFzc093blB0cjxJbnB1dFR5cGU+IEVtYWlsSW5wdXRUeXBlOjpjcmVhdGUoSFRN
TElucHV0RWxlbWVudCogZWxlbWVudCkKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBFbWFpbElucHV0
VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBFbWFpbElucHV0VHlwZShlbGVtZW50KSk7CiB9CkBAIC03Myw3ICs3Myw3IEBA
IGJvb2wgRW1haWxJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAogewogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoIWVsZW1lbnQoKS0+bXVsdGlwbGUoKSkKKyAgICBpZiAoIWVsZW1lbnQoKS5t
dWx0aXBsZSgpKQogICAgICAgICByZXR1cm4gIWlzVmFsaWRFbWFpbEFkZHJlc3ModmFsdWUpOwog
ICAgIFZlY3RvcjxTdHJpbmc+IGFkZHJlc3NlczsKICAgICB2YWx1ZS5zcGxpdCgnLCcsIHRydWUs
IGFkZHJlc3Nlcyk7CkBAIC04NiwxMiArODYsMTIgQEAgYm9vbCBFbWFpbElucHV0VHlwZTo6dHlw
ZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAKIGJvb2wgRW1haWxJbnB1
dFR5cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGVNaXNtYXRjaEZv
cihlbGVtZW50KCktPnZhbHVlKCkpOworICAgIHJldHVybiB0eXBlTWlzbWF0Y2hGb3IoZWxlbWVu
dCgpLnZhbHVlKCkpOwogfQogCiBTdHJpbmcgRW1haWxJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaFRl
eHQoKSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50KCktPm11bHRpcGxlKCkgPyB2YWxpZGF0
aW9uTWVzc2FnZVR5cGVNaXNtYXRjaEZvck11bHRpcGxlRW1haWxUZXh0KCkgOiB2YWxpZGF0aW9u
TWVzc2FnZVR5cGVNaXNtYXRjaEZvckVtYWlsVGV4dCgpOworICAgIHJldHVybiBlbGVtZW50KCku
bXVsdGlwbGUoKSA/IHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yTXVsdGlwbGVFbWFp
bFRleHQoKSA6IHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoRm9yRW1haWxUZXh0KCk7CiB9
CiAKIGJvb2wgRW1haWxJbnB1dFR5cGU6OmlzRW1haWxGaWVsZCgpIGNvbnN0CkBAIC0xMDcsNyAr
MTA3LDcgQEAgYm9vbCBFbWFpbElucHV0VHlwZTo6c3VwcG9ydHNTZWxlY3Rpb25BUEkoKSBjb25z
dAogU3RyaW5nIEVtYWlsSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJv
cG9zZWRWYWx1ZSkgY29uc3QKIHsKICAgICBTdHJpbmcgbm9MaW5lQnJlYWtWYWx1ZSA9IHByb3Bv
c2VkVmFsdWUucmVtb3ZlQ2hhcmFjdGVycyhpc0hUTUxMaW5lQnJlYWspOwotICAgIGlmICghZWxl
bWVudCgpLT5tdWx0aXBsZSgpKQorICAgIGlmICghZWxlbWVudCgpLm11bHRpcGxlKCkpCiAgICAg
ICAgIHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMobm9MaW5lQnJlYWtW
YWx1ZSk7CiAgICAgVmVjdG9yPFN0cmluZz4gYWRkcmVzc2VzOwogICAgIG5vTGluZUJyZWFrVmFs
dWUuc3BsaXQoJywnLCB0cnVlLCBhZGRyZXNzZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9FbWFpbElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0
VHlwZS5oCmluZGV4IDExMTAxMjYuLjVmMTQ3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRW1haWxJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5w
dXRUeXBlLmgKQEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVtYWlsSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7
CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVu
dCYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEVtYWlsSW5wdXRUeXBlKEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoZWxlbWVudCkgeyB9CisgICAgZXhw
bGljaXQgRW1haWxJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlVGV4
dElucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3Ry
aW5nJikgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApp
bmRleCAzYjRmYWQyLi5iZDhlZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5j
cHAKQEAgLTg1LDEyICs4NSwxMiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFVwbG9hZEJ1dHRvbkVs
ZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKICAgICByZXR1cm4gcHNldWRvSWQ7CiB9CiAK
LVBhc3NPd25QdHI8SW5wdXRUeXBlPiBGaWxlSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCkKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBGaWxlSW5wdXRUeXBlOjpjcmVh
dGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEZpbGVJbnB1dFR5cGUoZWxlbWVudCkpOwogfQogCi1GaWxlSW5wdXRUeXBlOjpGaWxlSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitGaWxlSW5wdXRUeXBlOjpGaWxlSW5wdXRU
eXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgOiBCYXNlQ2xpY2thYmxlV2l0aEtl
eUlucHV0VHlwZShlbGVtZW50KQogICAgICwgbV9maWxlTGlzdChGaWxlTGlzdDo6Y3JlYXRlKCkp
CiB7CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpyZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJiBzdGF0ZSkKIAogYm9vbCBGaWxlSW5w
dXRUeXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIG11bHRp
cGFydCkgY29uc3QKIHsKLSAgICBGaWxlTGlzdCogZmlsZUxpc3QgPSBlbGVtZW50KCktPmZpbGVz
KCk7CisgICAgRmlsZUxpc3QqIGZpbGVMaXN0ID0gZWxlbWVudCgpLmZpbGVzKCk7CiAgICAgdW5z
aWduZWQgbnVtRmlsZXMgPSBmaWxlTGlzdC0+bGVuZ3RoKCk7CiAgICAgaWYgKCFtdWx0aXBhcnQp
IHsKICAgICAgICAgLy8gU2VuZCBvbmx5IHRoZSBiYXNlbmFtZXMuCkBAIC0xNTUsMzUgKzE1NSwz
NSBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5j
b2RpbmcsIGJvb2wgbXVsdGlwYXJ0KSBjb25zdAogICAgICAgICAvLyBzdWJtaXNzaW9uIG9mIGZp
bGUgaW5wdXRzLCBhbmQgRmlyZWZveCBkb2Vzbid0IGFkZCAibmFtZT0iIHF1ZXJ5CiAgICAgICAg
IC8vIHBhcmFtZXRlci4KICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUZpbGVz
OyArK2kpCi0gICAgICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1lbnQoKS0+bmFtZSgp
LCBmaWxlTGlzdC0+aXRlbShpKS0+bmFtZSgpKTsKKyAgICAgICAgICAgIGVuY29kaW5nLmFwcGVu
ZERhdGEoZWxlbWVudCgpLm5hbWUoKSwgZmlsZUxpc3QtPml0ZW0oaSktPm5hbWUoKSk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIC8vIElmIG5vIGZpbGVuYW1lIGF0IGFsbCBp
cyBlbnRlcmVkLCByZXR1cm4gc3VjY2Vzc2Z1bCBidXQgZW1wdHkuCiAgICAgLy8gTnVsbCB3b3Vs
ZCBiZSBtb3JlIGxvZ2ljYWwsIGJ1dCBOZXRzY2FwZSBwb3N0cyBhbiBlbXB0eSBmaWxlLiBBcmdo
LgogICAgIGlmICghbnVtRmlsZXMpIHsKLSAgICAgICAgZW5jb2RpbmcuYXBwZW5kQmxvYihlbGVt
ZW50KCktPm5hbWUoKSwgRmlsZTo6Y3JlYXRlKCIiKSk7CisgICAgICAgIGVuY29kaW5nLmFwcGVu
ZEJsb2IoZWxlbWVudCgpLm5hbWUoKSwgRmlsZTo6Y3JlYXRlKCIiKSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1GaWxlczsg
KytpKQotICAgICAgICBlbmNvZGluZy5hcHBlbmRCbG9iKGVsZW1lbnQoKS0+bmFtZSgpLCBmaWxl
TGlzdC0+aXRlbShpKSk7CisgICAgICAgIGVuY29kaW5nLmFwcGVuZEJsb2IoZWxlbWVudCgpLm5h
bWUoKSwgZmlsZUxpc3QtPml0ZW0oaSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEZp
bGVJbnB1dFR5cGU6OnZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewot
ICAgIHJldHVybiBlbGVtZW50KCktPmlzUmVxdWlyZWQoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7Cisg
ICAgcmV0dXJuIGVsZW1lbnQoKS5pc1JlcXVpcmVkKCkgJiYgdmFsdWUuaXNFbXB0eSgpOwogfQog
CiBTdHJpbmcgRmlsZUlucHV0VHlwZTo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNz
aW5nRm9yTXVsdGlwbGVGaWxlVGV4dCgpIDogdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdG
b3JGaWxlVGV4dCgpOworICAgIHJldHVybiBlbGVtZW50KCkubXVsdGlwbGUoKSA/IHZhbGlkYXRp
b25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yTXVsdGlwbGVGaWxlVGV4dCgpIDogdmFsaWRhdGlvbk1l
c3NhZ2VWYWx1ZU1pc3NpbmdGb3JGaWxlVGV4dCgpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6
OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAgIGlmIChlbGVtZW50
KCktPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpKQorICAgIGlmIChlbGVtZW50KCkuaXNEaXNhYmxl
ZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghU2NyaXB0Q29udHJv
bGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpCkBAIC0xOTEsMjIgKzE5MSwyMiBAQCB2b2lk
IEZpbGVJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQogCiAg
ICAgaWYgKENocm9tZSogY2hyb21lID0gdGhpcy0+Y2hyb21lKCkpIHsKICAgICAgICAgRmlsZUNo
b29zZXJTZXR0aW5ncyBzZXR0aW5nczsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQg
PSBlbGVtZW50KCk7CisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQmIGlucHV0ID0gZWxlbWVudCgp
OwogI2lmIEVOQUJMRShESVJFQ1RPUllfVVBMT0FEKQotICAgICAgICBzZXR0aW5ncy5hbGxvd3NE
aXJlY3RvcnlVcGxvYWQgPSBpbnB1dC0+ZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXRkaXJlY3RvcnlB
dHRyKTsKLSAgICAgICAgc2V0dGluZ3MuYWxsb3dzTXVsdGlwbGVGaWxlcyA9IHNldHRpbmdzLmFs
bG93c0RpcmVjdG9yeVVwbG9hZCB8fCBpbnB1dC0+ZmFzdEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0
dHIpOworICAgICAgICBzZXR0aW5ncy5hbGxvd3NEaXJlY3RvcnlVcGxvYWQgPSBpbnB1dC5mYXN0
SGFzQXR0cmlidXRlKHdlYmtpdGRpcmVjdG9yeUF0dHIpOworICAgICAgICBzZXR0aW5ncy5hbGxv
d3NNdWx0aXBsZUZpbGVzID0gc2V0dGluZ3MuYWxsb3dzRGlyZWN0b3J5VXBsb2FkIHx8IGlucHV0
LmZhc3RIYXNBdHRyaWJ1dGUobXVsdGlwbGVBdHRyKTsKICNlbHNlCi0gICAgICAgIHNldHRpbmdz
LmFsbG93c011bHRpcGxlRmlsZXMgPSBpbnB1dC0+ZmFzdEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0
dHIpOworICAgICAgICBzZXR0aW5ncy5hbGxvd3NNdWx0aXBsZUZpbGVzID0gaW5wdXQuZmFzdEhh
c0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIpOwogI2VuZGlmCi0gICAgICAgIHNldHRpbmdzLmFjY2Vw
dE1JTUVUeXBlcyA9IGlucHV0LT5hY2NlcHRNSU1FVHlwZXMoKTsKLSAgICAgICAgc2V0dGluZ3Mu
YWNjZXB0RmlsZUV4dGVuc2lvbnMgPSBpbnB1dC0+YWNjZXB0RmlsZUV4dGVuc2lvbnMoKTsKKyAg
ICAgICAgc2V0dGluZ3MuYWNjZXB0TUlNRVR5cGVzID0gaW5wdXQuYWNjZXB0TUlNRVR5cGVzKCk7
CisgICAgICAgIHNldHRpbmdzLmFjY2VwdEZpbGVFeHRlbnNpb25zID0gaW5wdXQuYWNjZXB0Rmls
ZUV4dGVuc2lvbnMoKTsKICAgICAgICAgc2V0dGluZ3Muc2VsZWN0ZWRGaWxlcyA9IG1fZmlsZUxp
c3QtPnBhdGhzKCk7CiAjaWYgRU5BQkxFKE1FRElBX0NBUFRVUkUpCi0gICAgICAgIHNldHRpbmdz
LmNhcHR1cmUgPSBpbnB1dC0+Y2FwdHVyZSgpOworICAgICAgICBzZXR0aW5ncy5jYXB0dXJlID0g
aW5wdXQuY2FwdHVyZSgpOwogI2VuZGlmCiAKICAgICAgICAgYXBwbHlGaWxlQ2hvb3NlclNldHRp
bmdzKHNldHRpbmdzKTsKLSAgICAgICAgY2hyb21lLT5ydW5PcGVuUGFuZWwoaW5wdXQtPmRvY3Vt
ZW50KCkuZnJhbWUoKSwgbV9maWxlQ2hvb3Nlcik7CisgICAgICAgIGNocm9tZS0+cnVuT3BlblBh
bmVsKGlucHV0LmRvY3VtZW50KCkuZnJhbWUoKSwgbV9maWxlQ2hvb3Nlcik7CiAgICAgfQogCiAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CkBAIC0yMTQsOCArMjE0LDcgQEAgdm9pZCBG
aWxlSW5wdXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKIAogUmVu
ZGVyT2JqZWN0KiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKikgY29uc3QKIHsKLSAgICBBU1NFUlQoZWxlbWVudCgpKTsgLy8gRklY
TUU6IGVsZW1lbnQoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlLgotICAgIHJldHVybiBuZXcg
KGFyZW5hKSBSZW5kZXJGaWxlVXBsb2FkQ29udHJvbCgqZWxlbWVudCgpKTsKKyAgICByZXR1cm4g
bmV3IChhcmVuYSkgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2woZWxlbWVudCgpKTsKIH0KIAogYm9v
bCBGaWxlSW5wdXRUeXBlOjpjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0CkBAIC0yNjgsNyArMjY3
LDcgQEAgdm9pZCBGaWxlSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yKQogewogICAgIG1fZmlsZUxpc3QtPmNsZWFyKCk7CiAgICAg
bV9pY29uLmNsZWFyKCk7Ci0gICAgZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Cisg
ICAgZWxlbWVudCgpLnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAogUGFzc1JlZlB0cjxGaWxl
TGlzdD4gRmlsZUlucHV0VHlwZTo6Y3JlYXRlRmlsZUxpc3QoY29uc3QgVmVjdG9yPEZpbGVDaG9v
c2VyRmlsZUluZm8+JiBmaWxlcykgY29uc3QKQEAgLTI4MCw3ICsyNzksNyBAQCBQYXNzUmVmUHRy
PEZpbGVMaXN0PiBGaWxlSW5wdXRUeXBlOjpjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8Rmls
ZUNob29zZXJGaWxlSQogICAgIC8vIElmIGEgZGlyZWN0b3J5IGlzIGJlaW5nIHNlbGVjdGVkLCB0
aGUgVUkgYWxsb3dzIGEgZGlyZWN0b3J5IHRvIGJlIGNob3NlbgogICAgIC8vIGFuZCB0aGUgcGF0
aHMgcHJvdmlkZWQgaGVyZSBzaGFyZSBhIHJvb3QgZGlyZWN0b3J5IHNvbWV3aGVyZSB1cCB0aGUg
dHJlZTsKICAgICAvLyB3ZSB3YW50IHRvIHN0b3JlIG9ubHkgdGhlIHJlbGF0aXZlIHBhdGhzIGZy
b20gdGhhdCBwb2ludC4KLSAgICBpZiAoc2l6ZSAmJiBlbGVtZW50KCktPmZhc3RIYXNBdHRyaWJ1
dGUod2Via2l0ZGlyZWN0b3J5QXR0cikpIHsKKyAgICBpZiAoc2l6ZSAmJiBlbGVtZW50KCkuZmFz
dEhhc0F0dHJpYnV0ZSh3ZWJraXRkaXJlY3RvcnlBdHRyKSkgewogICAgICAgICAvLyBGaW5kIHRo
ZSBjb21tb24gcm9vdCBwYXRoLgogICAgICAgICBTdHJpbmcgcm9vdFBhdGggPSBkaXJlY3RvcnlO
YW1lKGZpbGVzWzBdLnBhdGgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNpemU7
IGkrKykgewpAQCAtMzEzLDI0ICszMTIsMjQgQEAgYm9vbCBGaWxlSW5wdXRUeXBlOjppc0ZpbGVV
cGxvYWQoKSBjb25zdAogCiB2b2lkIEZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUo
KQogewotICAgIEFTU0VSVChlbGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7Ci0gICAgZWxlbWVudCgp
LT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKGVsZW1lbnQoKS0+bXVsdGlwbGUo
KSA/IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9j
dW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50
KCkpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBBU1NFUlQoZWxlbWVudCgpLnNoYWRvd1Jvb3Qo
KSk7CisgICAgZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoZWxl
bWVudCgpLm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50OjpjcmVhdGVGb3JNdWx0aXBs
ZShlbGVtZW50KCkuZG9jdW1lbnQoKSk6IFVwbG9hZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVt
ZW50KCkuZG9jdW1lbnQoKSksIElHTk9SRV9FWENFUFRJT04pOwogfQogCiB2b2lkIEZpbGVJbnB1
dFR5cGU6OmRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQo
KS0+c2hhZG93Um9vdCgpKTsKLSAgICBVcGxvYWRCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0
aWNfY2FzdDxVcGxvYWRCdXR0b25FbGVtZW50Kj4oZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dS
b290KCktPmZpcnN0Q2hpbGQoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQoKS5zaGFkb3dSb290KCkp
OworICAgIFVwbG9hZEJ1dHRvbkVsZW1lbnQqIGJ1dHRvbiA9IHN0YXRpY19jYXN0PFVwbG9hZEJ1
dHRvbkVsZW1lbnQqPihlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxk
KCkpOwogICAgIGlmIChidXR0b24pCi0gICAgICAgIGJ1dHRvbi0+c2V0Qm9vbGVhbkF0dHJpYnV0
ZShkaXNhYmxlZEF0dHIsIGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpOworICAg
ICAgICBidXR0b24tPnNldEJvb2xlYW5BdHRyaWJ1dGUoZGlzYWJsZWRBdHRyLCBlbGVtZW50KCku
aXNEaXNhYmxlZEZvcm1Db250cm9sKCkpOwogfQogCiB2b2lkIEZpbGVJbnB1dFR5cGU6Om11bHRp
cGxlQXR0cmlidXRlQ2hhbmdlZCgpCiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9v
dCgpKTsKLSAgICBVcGxvYWRCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0aWNfY2FzdDxVcGxv
YWRCdXR0b25FbGVtZW50Kj4oZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmZpcnN0
Q2hpbGQoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQoKS5zaGFkb3dSb290KCkpOworICAgIFVwbG9h
ZEJ1dHRvbkVsZW1lbnQqIGJ1dHRvbiA9IHN0YXRpY19jYXN0PFVwbG9hZEJ1dHRvbkVsZW1lbnQq
PihlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOwogICAgIGlm
IChidXR0b24pCi0gICAgICAgIGJ1dHRvbi0+c2V0VmFsdWUoZWxlbWVudCgpLT5tdWx0aXBsZSgp
ID8gZmlsZUJ1dHRvbkNob29zZU11bHRpcGxlRmlsZXNMYWJlbCgpIDogZmlsZUJ1dHRvbkNob29z
ZUZpbGVMYWJlbCgpKTsKKyAgICAgICAgYnV0dG9uLT5zZXRWYWx1ZShlbGVtZW50KCkubXVsdGlw
bGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6IGZpbGVCdXR0b25D
aG9vc2VGaWxlTGFiZWwoKSk7CiB9CiAKIHZvaWQgRmlsZUlucHV0VHlwZTo6cmVxdWVzdEljb24o
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQpAQCAtMzYzLDcgKzM2Miw3IEBAIHZvaWQgRmls
ZUlucHV0VHlwZTo6c2V0RmlsZXMoUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmlsZXMpCiAgICAgaWYg
KCFmaWxlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IGlucHV0ID0gZWxlbWVudCgpOworICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dChlbGVt
ZW50KCkpOwogCiAgICAgYm9vbCBwYXRoc0NoYW5nZWQgPSBmYWxzZTsKICAgICBpZiAoZmlsZXMt
Pmxlbmd0aCgpICE9IG1fZmlsZUxpc3QtPmxlbmd0aCgpKQpAQCAtMzg0LDggKzM4Myw5IEBAIHZv
aWQgRmlsZUlucHV0VHlwZTo6c2V0RmlsZXMoUGFzc1JlZlB0cjxGaWxlTGlzdD4gZmlsZXMpCiAg
ICAgaW5wdXQtPnNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogCiAgICAgVmVjdG9yPFN0cmluZz4g
cGF0aHM7CisgICAgcGF0aHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2ZpbGVMaXN0LT5sZW5n
dGgoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZmlsZUxpc3QtPmxlbmd0aCgp
OyArK2kpCi0gICAgICAgIHBhdGhzLmFwcGVuZChtX2ZpbGVMaXN0LT5pdGVtKGkpLT5wYXRoKCkp
OworICAgICAgICBwYXRocy51bmNoZWNrZWRBcHBlbmQobV9maWxlTGlzdC0+aXRlbShpKS0+cGF0
aCgpKTsKICAgICByZXF1ZXN0SWNvbihwYXRocyk7CiAKICAgICBpZiAoaW5wdXQtPnJlbmRlcmVy
KCkpCkBAIC00MTIsMTIgKzQxMiwxMiBAQCB2b2lkIEZpbGVJbnB1dFR5cGU6OnJlY2VpdmVEcm9w
Rm9yRGlyZWN0b3J5VXBsb2FkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRmlsZUNob29zZXJTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dCA9IGVsZW1lbnQoKTsKKyAgICBIVE1MSW5wdXRFbGVtZW50JiBpbnB1
dCA9IGVsZW1lbnQoKTsKICAgICBzZXR0aW5ncy5hbGxvd3NEaXJlY3RvcnlVcGxvYWQgPSB0cnVl
OwogICAgIHNldHRpbmdzLmFsbG93c011bHRpcGxlRmlsZXMgPSB0cnVlOwogICAgIHNldHRpbmdz
LnNlbGVjdGVkRmlsZXMuYXBwZW5kKHBhdGhzWzBdKTsKLSAgICBzZXR0aW5ncy5hY2NlcHRNSU1F
VHlwZXMgPSBpbnB1dC0+YWNjZXB0TUlNRVR5cGVzKCk7Ci0gICAgc2V0dGluZ3MuYWNjZXB0Rmls
ZUV4dGVuc2lvbnMgPSBpbnB1dC0+YWNjZXB0RmlsZUV4dGVuc2lvbnMoKTsKKyAgICBzZXR0aW5n
cy5hY2NlcHRNSU1FVHlwZXMgPSBpbnB1dC5hY2NlcHRNSU1FVHlwZXMoKTsKKyAgICBzZXR0aW5n
cy5hY2NlcHRGaWxlRXh0ZW5zaW9ucyA9IGlucHV0LmFjY2VwdEZpbGVFeHRlbnNpb25zKCk7CiAK
ICAgICBhcHBseUZpbGVDaG9vc2VyU2V0dGluZ3Moc2V0dGluZ3MpOwogICAgIGNocm9tZS0+ZW51
bWVyYXRlQ2hvc2VuRGlyZWN0b3J5KG1fZmlsZUNob29zZXIpOwpAQCAtNDMwLDggKzQzMCw4IEBA
IHZvaWQgRmlsZUlucHV0VHlwZTo6dXBkYXRlUmVuZGVyaW5nKFBhc3NSZWZQdHI8SWNvbj4gaWNv
bikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pY29uID0gaWNvbjsKLSAgICBpZiAoZWxlbWVu
dCgpLT5yZW5kZXJlcigpKQotICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnJlcGFpbnQo
KTsKKyAgICBpZiAoZWxlbWVudCgpLnJlbmRlcmVyKCkpCisgICAgICAgIGVsZW1lbnQoKS5yZW5k
ZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKIGJvb2wgRmlsZUlucHV0VHlwZTo6cmVjZWl2ZURyb3Bw
ZWRGaWxlcyhjb25zdCBEcmFnRGF0YSogZHJhZ0RhdGEpCkBAIC00NDEsOSArNDQxLDkgQEAgYm9v
bCBGaWxlSW5wdXRUeXBlOjpyZWNlaXZlRHJvcHBlZEZpbGVzKGNvbnN0IERyYWdEYXRhKiBkcmFn
RGF0YSkKICAgICBpZiAocGF0aHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IGVsZW1lbnQoKTsKKyAgICBIVE1MSW5wdXRF
bGVtZW50JiBpbnB1dCA9IGVsZW1lbnQoKTsKICNpZiBFTkFCTEUoRElSRUNUT1JZX1VQTE9BRCkK
LSAgICBpZiAoaW5wdXQtPmZhc3RIYXNBdHRyaWJ1dGUod2Via2l0ZGlyZWN0b3J5QXR0cikpIHsK
KyAgICBpZiAoaW5wdXQuZmFzdEhhc0F0dHJpYnV0ZSh3ZWJraXRkaXJlY3RvcnlBdHRyKSkgewog
ICAgICAgICByZWNlaXZlRHJvcEZvckRpcmVjdG9yeVVwbG9hZChwYXRocyk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTQ1Nyw3ICs0NTcsNyBAQCBib29sIEZpbGVJbnB1dFR5cGU6
OnJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEqIGRyYWdEYXRhKQogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBwYXRocy5zaXplKCk7ICsraSkKICAgICAgICAgZmlsZXMuYXBw
ZW5kKEZpbGVDaG9vc2VyRmlsZUluZm8ocGF0aHNbaV0pKTsKIAotICAgIGlmIChpbnB1dC0+ZmFz
dEhhc0F0dHJpYnV0ZShtdWx0aXBsZUF0dHIpKQorICAgIGlmIChpbnB1dC5mYXN0SGFzQXR0cmli
dXRlKG11bHRpcGxlQXR0cikpCiAgICAgICAgIGZpbGVzQ2hvc2VuKGZpbGVzKTsKICAgICBlbHNl
IHsKICAgICAgICAgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+IGZpcnN0RmlsZU9ubHk7CkBA
IC00ODQsNyArNDg0LDcgQEAgU3RyaW5nIEZpbGVJbnB1dFR5cGU6OmRlZmF1bHRUb29sVGlwKCkg
Y29uc3QKICAgICBGaWxlTGlzdCogZmlsZUxpc3QgPSBtX2ZpbGVMaXN0LmdldCgpOwogICAgIHVu
c2lnbmVkIGxpc3RTaXplID0gZmlsZUxpc3QtPmxlbmd0aCgpOwogICAgIGlmICghbGlzdFNpemUp
IHsKLSAgICAgICAgaWYgKGVsZW1lbnQoKS0+bXVsdGlwbGUoKSkKKyAgICAgICAgaWYgKGVsZW1l
bnQoKS5tdWx0aXBsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZpbGVCdXR0b25Ob0ZpbGVzU2Vs
ZWN0ZWRMYWJlbCgpOwogICAgICAgICByZXR1cm4gZmlsZUJ1dHRvbk5vRmlsZVNlbGVjdGVkTGFi
ZWwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4IDM5MDY0OTMu
LjFlZWE2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC00NCwxMyArNDQs
MTMgQEAgY2xhc3MgRmlsZUxpc3Q7CiAKIGNsYXNzIEZpbGVJbnB1dFR5cGUgOiBwdWJsaWMgQmFz
ZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUsIHByaXZhdGUgRmlsZUNob29zZXJDbGllbnQsIHBy
aXZhdGUgRmlsZUljb25Mb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Jik7CiAgICAgdmlydHVh
bCB+RmlsZUlucHV0VHlwZSgpOwogCiAgICAgc3RhdGljIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJ
bmZvPiBmaWxlc0Zyb21Gb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsK
IAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBGaWxlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQq
KTsKKyAgICBleHBsaWNpdCBGaWxlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKIAogICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUo
KSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IDY2Mzc4MTQuLjEzN2E1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1faGFzVG91Y2hFdmVudEhhbmRsZXIoZmFs
c2UpCiAjZW5kaWYKLSAgICAsIG1faW5wdXRUeXBlKElucHV0VHlwZTo6Y3JlYXRlVGV4dCh0aGlz
KSkKKyAgICAsIG1faW5wdXRUeXBlKElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcykpCiB7CiAg
ICAgQVNTRVJUKGhhc1RhZ05hbWUoaW5wdXRUYWcpIHx8IGhhc1RhZ05hbWUoaXNpbmRleFRhZykp
OwogICAgIHNldEhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpOwpAQCAtNDU3LDcgKzQ1
Nyw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiB7Ci0gICAgT3duUHRyPElu
cHV0VHlwZT4gbmV3VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlKHRoaXMsIGZhc3RHZXRBdHRyaWJ1
dGUodHlwZUF0dHIpKTsKKyAgICBPd25QdHI8SW5wdXRUeXBlPiBuZXdUeXBlID0gSW5wdXRUeXBl
OjpjcmVhdGUoKnRoaXMsIGZhc3RHZXRBdHRyaWJ1dGUodHlwZUF0dHIpKTsKICAgICBib29sIGhh
ZFR5cGUgPSBtX2hhc1R5cGU7CiAgICAgbV9oYXNUeXBlID0gdHJ1ZTsKICAgICBpZiAobV9pbnB1
dFR5cGUtPmZvcm1Db250cm9sVHlwZSgpID09IG5ld1R5cGUtPmZvcm1Db250cm9sVHlwZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCmluZGV4IGFjYjU1ZjYuLmEyNDdh
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
Ci1QYXNzT3duUHRyPElucHV0VHlwZT4gSGlkZGVuSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0
RWxlbWVudCogZWxlbWVudCkKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBIaWRkZW5JbnB1dFR5cGU6
OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFB0
cihuZXcgSGlkZGVuSW5wdXRUeXBlKGVsZW1lbnQpKTsKIH0KQEAgLTU5LDEyICs1OSwxMiBAQCBG
b3JtQ29udHJvbFN0YXRlIEhpZGRlbklucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBj
b25zdAogICAgIC8vIGNvbnRyb2xzIGNyZWF0ZSBieSBjcmVhdGVFbGVtZW50KCkgb3IgY2xvbmVO
b2RlKCkuIEl0J3Mgb2sgZm9yCiAgICAgLy8gbm93IGJlY2F1c2Ugd2UgcmVzdG9yZSB2YWx1ZXMg
b25seSB0byBmb3JtIGNvbnRyb2xzIGNyZWF0ZWQgYnkKICAgICAvLyBwYXJzaW5nLgotICAgIHJl
dHVybiBlbGVtZW50KCktPnZhbHVlQXR0cmlidXRlV2FzVXBkYXRlZEFmdGVyUGFyc2luZygpID8g
Rm9ybUNvbnRyb2xTdGF0ZShlbGVtZW50KCktPnZhbHVlKCkpIDogRm9ybUNvbnRyb2xTdGF0ZSgp
OworICAgIHJldHVybiBlbGVtZW50KCkudmFsdWVBdHRyaWJ1dGVXYXNVcGRhdGVkQWZ0ZXJQYXJz
aW5nKCkgPyBGb3JtQ29udHJvbFN0YXRlKGVsZW1lbnQoKS52YWx1ZSgpKSA6IEZvcm1Db250cm9s
U3RhdGUoKTsKIH0KIAogdm9pZCBIaWRkZW5JbnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0
YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRlKQogewotICAgIGVsZW1lbnQoKS0+c2V0
QXR0cmlidXRlKHZhbHVlQXR0ciwgc3RhdGVbMF0pOworICAgIGVsZW1lbnQoKS5zZXRBdHRyaWJ1
dGUodmFsdWVBdHRyLCBzdGF0ZVswXSk7CiB9CiAKIGJvb2wgSGlkZGVuSW5wdXRUeXBlOjpzdXBw
b3J0c1ZhbGlkYXRpb24oKSBjb25zdApAQCAtOTQsNyArOTQsNyBAQCBib29sIEhpZGRlbklucHV0
VHlwZTo6c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKQogCiB2b2lkIEhpZGRlbklu
cHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzYW5pdGl6ZWRWYWx1ZSwgYm9vbCwgVGV4
dEZpZWxkRXZlbnRCZWhhdmlvcikKIHsKLSAgICBlbGVtZW50KCktPnNldEF0dHJpYnV0ZSh2YWx1
ZUF0dHIsIHNhbml0aXplZFZhbHVlKTsKKyAgICBlbGVtZW50KCkuc2V0QXR0cmlidXRlKHZhbHVl
QXR0ciwgc2FuaXRpemVkVmFsdWUpOwogfQogCiBib29sIEhpZGRlbklucHV0VHlwZTo6aXNIaWRk
ZW5UeXBlKCkgY29uc3QKQEAgLTEwNCw4ICsxMDQsOCBAQCBib29sIEhpZGRlbklucHV0VHlwZTo6
aXNIaWRkZW5UeXBlKCkgY29uc3QKIAogYm9vbCBIaWRkZW5JbnB1dFR5cGU6OmFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wgaXNNdWx0aXBhcnRGb3JtKSBjb25zdAog
ewotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50KCktPm5hbWUoKSwgIl9jaGFyc2V0
XyIpKSB7Ci0gICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEoZWxlbWVudCgpLT5uYW1lKCksIFN0
cmluZyhlbmNvZGluZy5lbmNvZGluZygpLm5hbWUoKSkpOworICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShlbGVtZW50KCkubmFtZSgpLCAiX2NoYXJzZXRfIikpIHsKKyAgICAgICAgZW5jb2Rpbmcu
YXBwZW5kRGF0YShlbGVtZW50KCkubmFtZSgpLCBTdHJpbmcoZW5jb2RpbmcuZW5jb2RpbmcoKS5u
YW1lKCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBJbnB1dFR5
cGU6OmFwcGVuZEZvcm1EYXRhKGVuY29kaW5nLCBpc011bHRpcGFydEZvcm0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgKaW5kZXggZDkwMWFlZS4uOWM0NjI5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCkBAIC0zNywxMCArMzcsMTAgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBIaWRkZW5JbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5w
dXRFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRN
TElucHV0RWxlbWVudCYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEhpZGRlbklucHV0VHlw
ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KKyAg
ICBleHBsaWNpdCBIaWRkZW5JbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBJ
bnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xT
dGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgT1ZF
UlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCmluZGV4IDZjMGQwN2Eu
LmE2Mzc1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuY3BwCkBAIC0zOSwx
MiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1pbmxpbmUgSW1hZ2VJbnB1dFR5cGU6OkltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQpCitpbmxpbmUgSW1hZ2VJbnB1dFR5cGU6OkltYWdlSW5wdXRUeXBlKEhU
TUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgOiBCYXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1l
bnQpCiB7CiB9CiAKLVBhc3NPd25QdHI8SW5wdXRUeXBlPiBJbWFnZUlucHV0VHlwZTo6Y3JlYXRl
KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzT3duUHRyPElucHV0VHlwZT4gSW1hZ2VJ
bnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVy
biBhZG9wdFB0cihuZXcgSW1hZ2VJbnB1dFR5cGUoZWxlbWVudCkpOwogfQpAQCAtNjEsOSArNjEs
OSBAQCBib29sIEltYWdlSW5wdXRUeXBlOjppc0Zvcm1EYXRhQXBwZW5kYWJsZSgpIGNvbnN0CiAK
IGJvb2wgSW1hZ2VJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2Rp
bmcsIGJvb2wpIGNvbnN0CiB7Ci0gICAgaWYgKCFlbGVtZW50KCktPmlzQWN0aXZhdGVkU3VibWl0
KCkpCisgICAgaWYgKCFlbGVtZW50KCkuaXNBY3RpdmF0ZWRTdWJtaXQoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGVsZW1lbnQoKS0+bmFt
ZSgpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGVsZW1lbnQoKS5uYW1lKCk7CiAg
ICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGVuY29kaW5nLmFwcGVuZERhdGEoIngi
LCBtX2NsaWNrTG9jYXRpb24ueCgpKTsKICAgICAgICAgZW5jb2RpbmcuYXBwZW5kRGF0YSgieSIs
IG1fY2xpY2tMb2NhdGlvbi55KCkpOwpAQCAtNzUsOCArNzUsOCBAQCBib29sIEltYWdlSW5wdXRU
eXBlOjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sKSBjb25zdAog
ICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFhTdHJpbmcsIG1fY2xpY2tMb2NhdGlv
bi54KCkpOwogICAgIGVuY29kaW5nLmFwcGVuZERhdGEobmFtZSArIGRvdFlTdHJpbmcsIG1fY2xp
Y2tMb2NhdGlvbi55KCkpOwogCi0gICAgaWYgKCFlbGVtZW50KCktPnZhbHVlKCkuaXNFbXB0eSgp
KQotICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKG5hbWUsIGVsZW1lbnQoKS0+dmFsdWUoKSk7
CisgICAgaWYgKCFlbGVtZW50KCkudmFsdWUoKS5pc0VtcHR5KCkpCisgICAgICAgIGVuY29kaW5n
LmFwcGVuZERhdGEobmFtZSwgZWxlbWVudCgpLnZhbHVlKCkpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC04Nyw3ICs4Nyw3IEBAIGJvb2wgSW1hZ2VJbnB1dFR5cGU6OnN1cHBvcnRzVmFsaWRh
dGlvbigpIGNvbnN0CiAKIHZvaWQgSW1hZ2VJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2YXRlRXZl
bnQoRXZlbnQqIGV2ZW50KQogewotICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50
ID0gdGhpcy0+ZWxlbWVudCgpOworICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50KHRo
aXMtPmVsZW1lbnQoKSk7CiAgICAgaWYgKGVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
IHx8ICFlbGVtZW50LT5mb3JtKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbGVtZW50LT5zZXRB
Y3RpdmF0ZWRTdWJtaXQodHJ1ZSk7CkBAIC0xMDMsMTQgKzEwMywxNCBAQCB2b2lkIEltYWdlSW5w
dXRUeXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKIAogUmVuZGVyT2Jq
ZWN0KiBJbWFnZUlucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBS
ZW5kZXJTdHlsZSopIGNvbnN0CiB7Ci0gICAgUmVuZGVySW1hZ2UqIGltYWdlID0gbmV3IChhcmVu
YSkgUmVuZGVySW1hZ2UoZWxlbWVudCgpKTsKKyAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBuZXcg
KGFyZW5hKSBSZW5kZXJJbWFnZSgmZWxlbWVudCgpKTsKICAgICBpbWFnZS0+c2V0SW1hZ2VSZXNv
dXJjZShSZW5kZXJJbWFnZVJlc291cmNlOjpjcmVhdGUoKSk7CiAgICAgcmV0dXJuIGltYWdlOwog
fQogCiB2b2lkIEltYWdlSW5wdXRUeXBlOjphbHRBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKLSAgICBS
ZW5kZXJJbWFnZSogaW1hZ2UgPSB0b1JlbmRlckltYWdlKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSk7
CisgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gdG9SZW5kZXJJbWFnZShlbGVtZW50KCkucmVuZGVy
ZXIoKSk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIGltYWdlLT51cGRh
dGVBbHRUZXh0KCk7CkBAIC0xMTgsMTkgKzExOCwxOSBAQCB2b2lkIEltYWdlSW5wdXRUeXBlOjph
bHRBdHRyaWJ1dGVDaGFuZ2VkKCkKIAogdm9pZCBJbWFnZUlucHV0VHlwZTo6c3JjQXR0cmlidXRl
Q2hhbmdlZCgpCiB7Ci0gICAgaWYgKCFlbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgaWYgKCFl
bGVtZW50KCkucmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGVsZW1lbnQoKS0+aW1h
Z2VMb2FkZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJyb3IoKTsKKyAg
ICBlbGVtZW50KCkuaW1hZ2VMb2FkZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZp
b3VzRXJyb3IoKTsKIH0KIAogdm9pZCBJbWFnZUlucHV0VHlwZTo6YXR0YWNoKCkKIHsKICAgICBC
YXNlQnV0dG9uSW5wdXRUeXBlOjphdHRhY2goKTsKIAotICAgIEhUTUxJbWFnZUxvYWRlciogaW1h
Z2VMb2FkZXIgPSBlbGVtZW50KCktPmltYWdlTG9hZGVyKCk7CisgICAgSFRNTEltYWdlTG9hZGVy
KiBpbWFnZUxvYWRlciA9IGVsZW1lbnQoKS5pbWFnZUxvYWRlcigpOwogICAgIGltYWdlTG9hZGVy
LT51cGRhdGVGcm9tRWxlbWVudCgpOwogCi0gICAgUmVuZGVySW1hZ2UqIHJlbmRlcmVyID0gdG9S
ZW5kZXJJbWFnZShlbGVtZW50KCktPnJlbmRlcmVyKCkpOworICAgIFJlbmRlckltYWdlKiByZW5k
ZXJlciA9IHRvUmVuZGVySW1hZ2UoZWxlbWVudCgpLnJlbmRlcmVyKCkpOwogICAgIGlmICghcmVu
ZGVyZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTczLDcgKzE3Myw3IEBAIGJvb2wgSW1hZ2VJ
bnB1dFR5cGU6OnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0ZXMoKQogCiB1bnNp
Z25lZCBJbWFnZUlucHV0VHlwZTo6aGVpZ2h0KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8SFRNTElu
cHV0RWxlbWVudD4gZWxlbWVudCA9IHRoaXMtPmVsZW1lbnQoKTsKKyAgICBSZWY8SFRNTElucHV0
RWxlbWVudD4gZWxlbWVudCh0aGlzLT5lbGVtZW50KCkpOwogCiAgICAgaWYgKCFlbGVtZW50LT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRoZSBhdHRyaWJ1dGUgZmlyc3QgZm9yIGFu
IGV4cGxpY2l0IHBpeGVsIHZhbHVlLgpAQCAtMTk3LDcgKzE5Nyw3IEBAIHVuc2lnbmVkIEltYWdl
SW5wdXRUeXBlOjpoZWlnaHQoKSBjb25zdAogCiB1bnNpZ25lZCBJbWFnZUlucHV0VHlwZTo6d2lk
dGgoKSBjb25zdAogewotICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50ID0gdGhp
cy0+ZWxlbWVudCgpOworICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVtZW50KHRoaXMtPmVs
ZW1lbnQoKSk7CiAKICAgICBpZiAoIWVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgLy8g
Q2hlY2sgdGhlIGF0dHJpYnV0ZSBmaXJzdCBmb3IgYW4gZXhwbGljaXQgcGl4ZWwgdmFsdWUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgKaW5kZXggNWIyNjBhMC4uZjBmYTQ1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaApAQCAtNDAsMTAgKzQwLDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUJ1dHRv
bklucHV0VHlwZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBj
cmVhdGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlw
ZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBJ
bWFnZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgZXhwbGljaXQgSW1hZ2VJbnB1
dFR5cGUoSFRNTElucHV0RWxlbWVudCYpOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNG
b3JtRGF0YUFwcGVuZGFibGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgYXBw
ZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAKaW5kZXggYmQ5MDQ5ZS4uOWZkYzhiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SW5wdXRUeXBlLmNwcApAQCAtODQsNyArODQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAotdHlwZWRlZiBQ
YXNzT3duUHRyPElucHV0VHlwZT4gKCpJbnB1dFR5cGVGYWN0b3J5RnVuY3Rpb24pKEhUTUxJbnB1
dEVsZW1lbnQqKTsKK3R5cGVkZWYgUGFzc093blB0cjxJbnB1dFR5cGU+ICgqSW5wdXRUeXBlRmFj
dG9yeUZ1bmN0aW9uKShIVE1MSW5wdXRFbGVtZW50Jik7CiB0eXBlZGVmIEhhc2hNYXA8QXRvbWlj
U3RyaW5nLCBJbnB1dFR5cGVGYWN0b3J5RnVuY3Rpb24sIENhc2VGb2xkaW5nSGFzaD4gSW5wdXRU
eXBlRmFjdG9yeU1hcDsKIAogc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlRmFjdG9yeU1hcD4g
Y3JlYXRlSW5wdXRUeXBlRmFjdG9yeU1hcCgpCkBAIC0xMzYsMTYgKzEzNiwxNiBAQCBzdGF0aWMg
UGFzc093blB0cjxJbnB1dFR5cGVGYWN0b3J5TWFwPiBjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFw
KCkKICAgICByZXR1cm4gbWFwLnJlbGVhc2UoKTsKIH0KIAotUGFzc093blB0cjxJbnB1dFR5cGU+
IElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZU5hbWUpCitQYXNzT3duUHRyPElucHV0VHlwZT4gSW5wdXRUeXBlOjpjcmVh
dGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlTmFt
ZSkKIHsKICAgICBzdGF0aWMgY29uc3QgSW5wdXRUeXBlRmFjdG9yeU1hcCogZmFjdG9yeU1hcCA9
IGNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXAoKS5sZWFrUHRyKCk7Ci0gICAgUGFzc093blB0cjxJ
bnB1dFR5cGU+ICgqZmFjdG9yeSkoSFRNTElucHV0RWxlbWVudCopID0gdHlwZU5hbWUuaXNFbXB0
eSgpID8gMCA6IGZhY3RvcnlNYXAtPmdldCh0eXBlTmFtZSk7CisgICAgUGFzc093blB0cjxJbnB1
dFR5cGU+ICgqZmFjdG9yeSkoSFRNTElucHV0RWxlbWVudCYpID0gdHlwZU5hbWUuaXNFbXB0eSgp
ID8gMCA6IGZhY3RvcnlNYXAtPmdldCh0eXBlTmFtZSk7CiAgICAgaWYgKCFmYWN0b3J5KQogICAg
ICAgICBmYWN0b3J5ID0gVGV4dElucHV0VHlwZTo6Y3JlYXRlOwogICAgIHJldHVybiBmYWN0b3J5
KGVsZW1lbnQpOwogfQogCi1QYXNzT3duUHRyPElucHV0VHlwZT4gSW5wdXRUeXBlOjpjcmVhdGVU
ZXh0KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitQYXNzT3duUHRyPElucHV0VHlwZT4gSW5w
dXRUeXBlOjpjcmVhdGVUZXh0KEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0
dXJuIFRleHRJbnB1dFR5cGU6OmNyZWF0ZShlbGVtZW50KTsKIH0KQEAgLTE1Niw3ICsxNTYsNyBA
QCBJbnB1dFR5cGU6On5JbnB1dFR5cGUoKQogCiBib29sIElucHV0VHlwZTo6dGhlbWVTdXBwb3J0
c0RhdGFMaXN0VUkoSW5wdXRUeXBlKiB0eXBlKQogewotICAgIERvY3VtZW50JiBkb2N1bWVudCA9
IHR5cGUtPmVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0
eXBlLT5lbGVtZW50KCkuZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IHRoZW1l
ID0gZG9jdW1lbnQucGFnZSgpID8gZG9jdW1lbnQucGFnZSgpLT50aGVtZSgpIDogUmVuZGVyVGhl
bWU6OmRlZmF1bHRUaGVtZSgpOwogICAgIHJldHVybiB0aGVtZS0+c3VwcG9ydHNEYXRhTGlzdFVJ
KHR5cGUtPmZvcm1Db250cm9sVHlwZSgpKTsKIH0KQEAgLTE4MywyNyArMTgzLDI3IEBAIGJvb2wg
SW5wdXRUeXBlOjpzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdAog
CiBGb3JtQ29udHJvbFN0YXRlIElucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25z
dAogewotICAgIFN0cmluZyBjdXJyZW50VmFsdWUgPSBlbGVtZW50KCktPnZhbHVlKCk7Ci0gICAg
aWYgKGN1cnJlbnRWYWx1ZSA9PSBlbGVtZW50KCktPmRlZmF1bHRWYWx1ZSgpKQorICAgIFN0cmlu
ZyBjdXJyZW50VmFsdWUgPSBlbGVtZW50KCkudmFsdWUoKTsKKyAgICBpZiAoY3VycmVudFZhbHVl
ID09IGVsZW1lbnQoKS5kZWZhdWx0VmFsdWUoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9s
U3RhdGUoKTsKICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZShjdXJyZW50VmFsdWUpOwogfQog
CiB2b2lkIElucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRy
b2xTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzdGF0ZVswXSk7Cisg
ICAgZWxlbWVudCgpLnNldFZhbHVlKHN0YXRlWzBdKTsKIH0KIAogYm9vbCBJbnB1dFR5cGU6Omlz
Rm9ybURhdGFBcHBlbmRhYmxlKCkgY29uc3QKIHsKICAgICAvLyBUaGVyZSBpcyBubyBmb3JtIGRh
dGEgdW5sZXNzIHRoZXJlJ3MgYSBuYW1lIGZvciBub24taW1hZ2UgdHlwZXMuCi0gICAgcmV0dXJu
ICFlbGVtZW50KCktPm5hbWUoKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuICFlbGVtZW50KCkubmFt
ZSgpLmlzRW1wdHkoKTsKIH0KIAogYm9vbCBJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1E
YXRhTGlzdCYgZW5jb2RpbmcsIGJvb2wpIGNvbnN0CiB7CiAgICAgLy8gQWx3YXlzIHN1Y2Nlc3Nm
dWwuCi0gICAgZW5jb2RpbmcuYXBwZW5kRGF0YShlbGVtZW50KCktPm5hbWUoKSwgZWxlbWVudCgp
LT52YWx1ZSgpKTsKKyAgICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1lbnQoKS5uYW1lKCksIGVs
ZW1lbnQoKS52YWx1ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzA5LDcgKzMwOSw3
IEBAIGRvdWJsZSBJbnB1dFR5cGU6Om1heGltdW0oKSBjb25zdAogCiBib29sIElucHV0VHlwZTo6
c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25z
dAogewotICAgIHByZWZlcnJlZFNpemUgPSBlbGVtZW50KCktPnNpemUoKTsKKyAgICBwcmVmZXJy
ZWRTaXplID0gZWxlbWVudCgpLnNpemUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTM3
NCw3ICszNzQsNyBAQCBTdHJpbmcgSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3QK
IAogU3RyaW5nIElucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogewotICAgIGNv
bnN0IFN0cmluZyB2YWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKKyAgICBjb25zdCBTdHJpbmcg
dmFsdWUgPSBlbGVtZW50KCkudmFsdWUoKTsKIAogICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgZm9s
bG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2QgbGlrZSB0byBzaG93IHRoZQog
ICAgIC8vIGJhZElucHV0IG1lc3NhZ2UgZXZlbiBpZiB0aGUgY29udHJvbCBoYXMgb3RoZXIgdmFs
aWRhdGlvbiBlcnJvcnMuCkBAIC0zOTAsOCArMzkwLDggQEAgU3RyaW5nIElucHV0VHlwZTo6dmFs
aWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2godmFsdWUpKQog
ICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCk7CiAK
LSAgICBpZiAoZWxlbWVudCgpLT50b29Mb25nKCkpCi0gICAgICAgIHJldHVybiB2YWxpZGF0aW9u
TWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUpLCBlbGVtZW50KCkt
Pm1heExlbmd0aCgpKTsKKyAgICBpZiAoZWxlbWVudCgpLnRvb0xvbmcoKSkKKyAgICAgICAgcmV0
dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1
ZSksIGVsZW1lbnQoKS5tYXhMZW5ndGgoKSk7CiAKICAgICBpZiAoIWlzU3RlcHBhYmxlKCkpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpAQCAtNDYxLDE3ICs0NjEsMTcgQEAgYm9vbCBJ
bnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqIGV2ZW50KQogCiBQYXNzUmVm
UHRyPEhUTUxGb3JtRWxlbWVudD4gSW5wdXRUeXBlOjpmb3JtRm9yU3VibWlzc2lvbigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQoKS0+Zm9ybSgpOworICAgIHJldHVybiBlbGVtZW50KCku
Zm9ybSgpOwogfQogCiBSZW5kZXJPYmplY3QqIElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFJlbmRl
ck9iamVjdDo6Y3JlYXRlT2JqZWN0KGVsZW1lbnQoKSwgc3R5bGUpOworICAgIHJldHVybiBSZW5k
ZXJPYmplY3Q6OmNyZWF0ZU9iamVjdCgmZWxlbWVudCgpLCBzdHlsZSk7CiB9CiAKIHZvaWQgSW5w
dXRUeXBlOjpibHVyKCkKIHsKLSAgICBlbGVtZW50KCktPmRlZmF1bHRCbHVyKCk7CisgICAgZWxl
bWVudCgpLmRlZmF1bHRCbHVyKCk7CiB9CiAKIHZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCiAKIHZvaWQgSW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSgpCiB7Ci0g
ICAgU2hhZG93Um9vdCogcm9vdCA9IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpOwor
ICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpOwog
ICAgIGlmICghcm9vdCkKICAgICAgICAgcmV0dXJuOwogCkBAIC01MTIsMTQgKzUxMiwxNCBAQCBT
dHJpbmcgSW5wdXRUeXBlOjpzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0CiAKIHZvaWQg
SW5wdXRUeXBlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrSWZBY3RpdmUoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpIGNvbnN0CiB7Ci0gICAgaWYgKGVsZW1lbnQoKS0+YWN0aXZlKCkpCi0gICAgICAgIGVs
ZW1lbnQoKS0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCk7CisgICAgaWYgKGVsZW1lbnQo
KS5hY3RpdmUoKSkKKyAgICAgICAgZWxlbWVudCgpLmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soZXZl
bnQpOwogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCiBDaHJvbWUqIElucHV0
VHlwZTo6Y2hyb21lKCkgY29uc3QKIHsKLSAgICBpZiAoUGFnZSogcGFnZSA9IGVsZW1lbnQoKS0+
ZG9jdW1lbnQoKS5wYWdlKCkpCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBlbGVtZW50KCkuZG9jdW1l
bnQoKS5wYWdlKCkpCiAgICAgICAgIHJldHVybiAmcGFnZS0+Y2hyb21lKCk7CiAgICAgcmV0dXJu
IDA7CiB9CkBAIC01MzYsMTIgKzUzNiwxMiBAQCBib29sIElucHV0VHlwZTo6aGFzQ3VzdG9tRm9j
dXNMb2dpYygpIGNvbnN0CiAKIGJvb2wgSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtl
eWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50KCktPmlzVGV4
dEZvcm1Db250cm9sS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQpOworICAgIHJldHVybiBlbGVtZW50
KCkuaXNUZXh0Rm9ybUNvbnRyb2xLZXlib2FyZEZvY3VzYWJsZShldmVudCk7CiB9CiAKIGJvb2wg
SW5wdXRUeXBlOjppc01vdXNlRm9jdXNhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZWxlbWVu
dCgpLT5pc1RleHRGb3JtQ29udHJvbE1vdXNlRm9jdXNhYmxlKCk7CisgICAgcmV0dXJuIGVsZW1l
bnQoKS5pc1RleHRGb3JtQ29udHJvbE1vdXNlRm9jdXNhYmxlKCk7CiB9CiAKIGJvb2wgSW5wdXRU
eXBlOjpzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0CkBAIC01NTksNyArNTU5LDcgQEAgdm9p
ZCBJbnB1dFR5cGU6OmhhbmRsZUJsdXJFdmVudCgpCiAKIHZvaWQgSW5wdXRUeXBlOjphY2Nlc3NL
ZXlBY3Rpb24oYm9vbCkKIHsKLSAgICBlbGVtZW50KCktPmZvY3VzKGZhbHNlKTsKKyAgICBlbGVt
ZW50KCkuZm9jdXMoZmFsc2UpOwogfQogCiB2b2lkIElucHV0VHlwZTo6YWRkU2VhcmNoUmVzdWx0
KCkKQEAgLTY1NiwxNyArNjU2LDE3IEBAIGJvb2wgSW5wdXRUeXBlOjpzdG9yZXNWYWx1ZVNlcGFy
YXRlRnJvbUF0dHJpYnV0ZSgpCiAKIHZvaWQgSW5wdXRUeXBlOjpzZXRWYWx1ZShjb25zdCBTdHJp
bmcmIHNhbml0aXplZFZhbHVlLCBib29sIHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhh
dmlvciBldmVudEJlaGF2aW9yKQogewotICAgIGVsZW1lbnQoKS0+c2V0VmFsdWVJbnRlcm5hbChz
YW5pdGl6ZWRWYWx1ZSwgZXZlbnRCZWhhdmlvcik7Ci0gICAgZWxlbWVudCgpLT5zZXROZWVkc1N0
eWxlUmVjYWxjKCk7CisgICAgZWxlbWVudCgpLnNldFZhbHVlSW50ZXJuYWwoc2FuaXRpemVkVmFs
dWUsIGV2ZW50QmVoYXZpb3IpOworICAgIGVsZW1lbnQoKS5zZXROZWVkc1N0eWxlUmVjYWxjKCk7
CiAgICAgaWYgKCF2YWx1ZUNoYW5nZWQpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKGV2
ZW50QmVoYXZpb3IpIHsKICAgICBjYXNlIERpc3BhdGNoQ2hhbmdlRXZlbnQ6Ci0gICAgICAgIGVs
ZW1lbnQoKS0+ZGlzcGF0Y2hGb3JtQ29udHJvbENoYW5nZUV2ZW50KCk7CisgICAgICAgIGVsZW1l
bnQoKS5kaXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQ6Ci0gICAgICAgIGVsZW1lbnQoKS0+
ZGlzcGF0Y2hGb3JtQ29udHJvbElucHV0RXZlbnQoKTsKLSAgICAgICAgZWxlbWVudCgpLT5kaXNw
YXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKTsKKyAgICAgICAgZWxlbWVudCgpLmRpc3BhdGNo
Rm9ybUNvbnRyb2xJbnB1dEV2ZW50KCk7CisgICAgICAgIGVsZW1lbnQoKS5kaXNwYXRjaEZvcm1D
b250cm9sQ2hhbmdlRXZlbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEaXNwYXRjaE5v
RXZlbnQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNjk0LDcgKzY5NCw3IEBAIFN0cmluZyBJbnB1dFR5
cGU6OmxvY2FsaXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogCiBT
dHJpbmcgSW5wdXRUeXBlOjp2aXNpYmxlVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBlbGVt
ZW50KCktPnZhbHVlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS52YWx1ZSgpOwogfQogCiBTdHJp
bmcgSW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkg
Y29uc3QKQEAgLTk2Nyw3ICs5NjcsNyBAQCB2b2lkIElucHV0VHlwZTo6YXBwbHlTdGVwKGludCBj
b3VudCwgQW55U3RlcEhhbmRsaW5nIGFueVN0ZXBIYW5kbGluZywgVGV4dEZpZWxkRQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgRGVjaW1hbCBjdXJyZW50ID0gcGFyc2VUb051
bWJlck9yTmFOKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgY29uc3QgRGVjaW1hbCBjdXJyZW50
ID0gcGFyc2VUb051bWJlck9yTmFOKGVsZW1lbnQoKS52YWx1ZSgpKTsKICAgICBpZiAoIWN1cnJl
bnQuaXNGaW5pdGUoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAg
ICByZXR1cm47CkBAIC05ODYsNyArOTg2LDcgQEAgdm9pZCBJbnB1dFR5cGU6OmFwcGx5U3RlcChp
bnQgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEUKICAg
ICBpZiAobmV3VmFsdWUgPCBzdGVwUmFuZ2UubWluaW11bSgpKQogICAgICAgICBuZXdWYWx1ZSA9
IHN0ZXBSYW5nZS5taW5pbXVtKCk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZXBTdHJp
bmcgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOworICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgc3RlcFN0cmluZyA9IGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKHN0ZXBB
dHRyKTsKICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKHN0ZXBTdHJpbmcsICJhbnkiKSkKICAg
ICAgICAgbmV3VmFsdWUgPSBzdGVwUmFuZ2UuYWxpZ25WYWx1ZUZvclN0ZXAoY3VycmVudCwgbmV3
VmFsdWUpOwogCkBAIC05OTksOCArOTk5LDggQEAgdm9pZCBJbnB1dFR5cGU6OmFwcGx5U3RlcChp
bnQgY291bnQsIEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcsIFRleHRGaWVsZEUKIAog
ICAgIHNldFZhbHVlQXNEZWNpbWFsKG5ld1ZhbHVlLCBldmVudEJlaGF2aW9yLCBlYyk7CiAKLSAg
ICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBlbGVtZW50KCktPmRvY3VtZW50KCkuZXhpc3Rp
bmdBWE9iamVjdENhY2hlKCkpCi0gICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGVsZW1l
bnQoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOworICAgIGlmIChBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGVsZW1lbnQoKS5kb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpKQorICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbigmZWxlbWVudCgpLCBBWE9i
amVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgdHJ1ZSk7CiB9CiAKIGJvb2wgSW5wdXRUeXBlOjpn
ZXRBbGxvd2VkVmFsdWVTdGVwKERlY2ltYWwqIHN0ZXApIGNvbnN0CkBAIC0xMDg2LDcgKzEwODYs
NyBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGVsc2UK
ICAgICAgICAgc2lnbiA9IDA7CiAKLSAgICBTdHJpbmcgY3VycmVudFN0cmluZ1ZhbHVlID0gZWxl
bWVudCgpLT52YWx1ZSgpOworICAgIFN0cmluZyBjdXJyZW50U3RyaW5nVmFsdWUgPSBlbGVtZW50
KCkudmFsdWUoKTsKICAgICBEZWNpbWFsIGN1cnJlbnQgPSBwYXJzZVRvTnVtYmVyT3JOYU4oY3Vy
cmVudFN0cmluZ1ZhbHVlKTsKICAgICBpZiAoIWN1cnJlbnQuaXNGaW5pdGUoKSkgewogICAgICAg
ICBjdXJyZW50ID0gZGVmYXVsdFZhbHVlRm9yU3RlcFVwKCk7CkBAIC0xMTAwLDcgKzExMDAsNyBA
QCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgIGlmICgoc2ln
biA+IDAgJiYgY3VycmVudCA8IHN0ZXBSYW5nZS5taW5pbXVtKCkpIHx8IChzaWduIDwgMCAmJiBj
dXJyZW50ID4gc3RlcFJhbmdlLm1heGltdW0oKSkpCiAgICAgICAgIHNldFZhbHVlQXNEZWNpbWFs
KHNpZ24gPiAwID8gc3RlcFJhbmdlLm1pbmltdW0oKSA6IHN0ZXBSYW5nZS5tYXhpbXVtKCksIERp
c3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgZWxzZSB7
Ci0gICAgICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgeworICAgICAg
ICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQoKS52YWx1ZSgpKSkgewogICAgICAgICAgICAgQVNT
RVJUKCFzdGVwLmlzWmVybygpKTsKICAgICAgICAgICAgIGNvbnN0IERlY2ltYWwgYmFzZSA9IHN0
ZXBSYW5nZS5zdGVwQmFzZSgpOwogICAgICAgICAgICAgRGVjaW1hbCBuZXdWYWx1ZTsKQEAgLTEx
MjgsOSArMTEyOCw5IEBAIHZvaWQgSW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIoaW50IG4p
CiAKIHZvaWQgSW5wdXRUeXBlOjpvYnNlcnZlRmVhdHVyZUlmVmlzaWJsZShGZWF0dXJlT2JzZXJ2
ZXI6OkZlYXR1cmUgZmVhdHVyZSkgY29uc3QKIHsKLSAgICBpZiAoUmVuZGVyU3R5bGUqIHN0eWxl
ID0gZWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpKSB7CisgICAgaWYgKFJlbmRlclN0eWxlKiBzdHls
ZSA9IGVsZW1lbnQoKS5yZW5kZXJTdHlsZSgpKSB7CiAgICAgICAgIGlmIChzdHlsZS0+dmlzaWJp
bGl0eSgpICE9IEhJRERFTikKLSAgICAgICAgICAgIEZlYXR1cmVPYnNlcnZlcjo6b2JzZXJ2ZSgm
ZWxlbWVudCgpLT5kb2N1bWVudCgpLCBmZWF0dXJlKTsKKyAgICAgICAgICAgIEZlYXR1cmVPYnNl
cnZlcjo6b2JzZXJ2ZSgmZWxlbWVudCgpLmRvY3VtZW50KCksIGZlYXR1cmUpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggNGUyNTM3MS4uNzg0OGI1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5oCkBAIC04Miw4ICs4Miw4IEBAIGNsYXNzIElucHV0VHlwZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGVUZXh0KEhUTUxJbnB1
dEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1M
SW5wdXRFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJik7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8SW5wdXRUeXBlPiBjcmVhdGVUZXh0KEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2aXJ0dWFs
IH5JbnB1dFR5cGUoKTsKIAogICAgIHN0YXRpYyBib29sIHRoZW1lU3VwcG9ydHNEYXRhTGlzdFVJ
KElucHV0VHlwZSopOwpAQCAtMzEyLDggKzMxMiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3Bh
dGNoU2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKLSAgICBleHBsaWNpdCBJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkg
OiBtX2VsZW1lbnQoZWxlbWVudCkgeyB9Ci0gICAgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQorICAgIGV4cGxpY2l0IElucHV0VHlwZShIVE1M
SW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IG1fZWxlbWVudChlbGVtZW50KSB7IH0KKyAgICBIVE1M
SW5wdXRFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAg
Q2hyb21lKiBjaHJvbWUoKSBjb25zdDsKICAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXJPck5hTihj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIG9ic2VydmVGZWF0dXJlSWZWaXNpYmxlKEZl
YXR1cmVPYnNlcnZlcjo6RmVhdHVyZSkgY29uc3Q7CkBAIC0zMjIsOCArMzIyLDcgQEAgcHJpdmF0
ZToKICAgICAvLyBIZWxwZXIgZm9yIHN0ZXBVcCgpL3N0ZXBEb3duKCkuIEFkZHMgc3RlcCB2YWx1
ZSAqIGNvdW50IHRvIHRoZSBjdXJyZW50IHZhbHVlLgogICAgIHZvaWQgYXBwbHlTdGVwKGludCBj
b3VudCwgQW55U3RlcEhhbmRsaW5nLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25D
b2RlJik7CiAKLSAgICAvLyBSYXcgcG9pbnRlciBiZWNhdXNlIHRoZSBIVE1MSW5wdXRFbGVtZW50
IG9iamVjdCBvd25zIHRoaXMgSW5wdXRUeXBlIG9iamVjdC4KLSAgICBIVE1MSW5wdXRFbGVtZW50
KiBtX2VsZW1lbnQ7CisgICAgSFRNTElucHV0RWxlbWVudCYgbV9lbGVtZW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1i
ZXJJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuY3Bw
CmluZGV4IDIzNTFmMDYuLjBkMzAzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TnVtYmVySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0
VHlwZS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIFJlYWxOdW1iZXJSZW5kZXJTaXplIGNh
bGN1bGF0ZVJlbmRlclNpemUoY29uc3QgRGVjaW1hbCYgdmFsdWUpCiAgICAgcmV0dXJuIFJlYWxO
dW1iZXJSZW5kZXJTaXplKHNpemVPZlNpZ24gKyBzaXplT2ZaZXJvICwgbnVtYmVyT2ZaZXJvQWZ0
ZXJEZWNpbWFsUG9pbnQgKyBzaXplT2ZEaWdpdHMpOwogfQogCi1QYXNzT3duUHRyPElucHV0VHlw
ZT4gTnVtYmVySW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK1Bh
c3NPd25QdHI8SW5wdXRUeXBlPiBOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTnVtYmVySW5wdXRUeXBl
KGVsZW1lbnQpKTsKIH0KQEAgLTExMywxNCArMTEzLDE0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
TnVtYmVySW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiB2b2lkIE51bWJlcklu
cHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiBzYW5pdGl6ZWRWYWx1ZSwgYm9vbCB2YWx1
ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IgZXZlbnRCZWhhdmlvcikKIHsKLSAgICBp
ZiAoIXZhbHVlQ2hhbmdlZCAmJiBzYW5pdGl6ZWRWYWx1ZS5pc0VtcHR5KCkgJiYgIWVsZW1lbnQo
KS0+aW5uZXJUZXh0VmFsdWUoKS5pc0VtcHR5KCkpCisgICAgaWYgKCF2YWx1ZUNoYW5nZWQgJiYg
c2FuaXRpemVkVmFsdWUuaXNFbXB0eSgpICYmICFlbGVtZW50KCkuaW5uZXJUZXh0VmFsdWUoKS5p
c0VtcHR5KCkpCiAgICAgICAgIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiAgICAgVGV4dEZpZWxk
SW5wdXRUeXBlOjpzZXRWYWx1ZShzYW5pdGl6ZWRWYWx1ZSwgdmFsdWVDaGFuZ2VkLCBldmVudEJl
aGF2aW9yKTsKIH0KIAogZG91YmxlIE51bWJlcklucHV0VHlwZTo6dmFsdWVBc0RvdWJsZSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQoKS0+
dmFsdWUoKSk7CisgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGVsZW1lbnQo
KS52YWx1ZSgpKTsKIH0KIAogdm9pZCBOdW1iZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNEb3VibGUo
ZG91YmxlIG5ld1ZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgTnVtYmVySW5w
dXRUeXBlOjpzZXRWYWx1ZUFzRG91YmxlKGRvdWJsZSBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRC
ZWhhdmlvciBlCiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KG5ld1ZhbHVlKSwgZXZlbnRCZWhhdmlvcik7CisgICAgZWxlbWVudCgpLnNldFZhbHVlKHNlcmlh
bGl6ZUZvck51bWJlclR5cGUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKIH0KIAogdm9pZCBO
dW1iZXJJbnB1dFR5cGU6OnNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmIG5ld1ZhbHVl
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KSBjb25zdApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjpzZXRWYWx1
ZUFzRGVjaW1hbChjb25zdCBEZWNpbWFsJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
ZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemVGb3JOdW1iZXJUeXBlKG5ld1ZhbHVlKSwgZXZl
bnRCZWhhdmlvcik7CisgICAgZWxlbWVudCgpLnNldFZhbHVlKHNlcmlhbGl6ZUZvck51bWJlclR5
cGUobmV3VmFsdWUpLCBldmVudEJlaGF2aW9yKTsKIH0KIAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6
OnR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdApAQCAtMTYwLDE5ICsx
NjAsMTkgQEAgYm9vbCBOdW1iZXJJbnB1dFR5cGU6OnR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAogCiBib29sIE51bWJlcklucHV0VHlwZTo6dHlwZU1pc21hdGNoKCkg
Y29uc3QKIHsKLSAgICBBU1NFUlQoIXR5cGVNaXNtYXRjaEZvcihlbGVtZW50KCktPnZhbHVlKCkp
KTsKKyAgICBBU1NFUlQoIXR5cGVNaXNtYXRjaEZvcihlbGVtZW50KCkudmFsdWUoKSkpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAogU3RlcFJhbmdlIE51bWJlcklucHV0VHlwZTo6Y3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZyBhbnlTdGVwSGFuZGxpbmcpIGNvbnN0CiB7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdGVwUmFuZ2U6OlN0ZXBEZXNjcmlwdGlvbiwgc3RlcERl
c2NyaXB0aW9uLCAobnVtYmVyRGVmYXVsdFN0ZXAsIG51bWJlckRlZmF1bHRTdGVwQmFzZSwgbnVt
YmVyU3RlcFNjYWxlRmFjdG9yKSk7Ci0gICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9IHBhcnNl
VG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWluQXR0
ciksIG51bWJlckRlZmF1bHRTdGVwQmFzZSk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVwQmFzZSA9
IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZSht
aW5BdHRyKSwgbnVtYmVyRGVmYXVsdFN0ZXBCYXNlKTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IHVzZSBudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXggZm9yIG51bWJlciBpbnB1dCB0eXBlLgog
ICAgIGNvbnN0IERlY2ltYWwgZmxvYXRNYXggPSBEZWNpbWFsOjpmcm9tRG91YmxlKG51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWF4KCkpOwotICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNl
VG9OdW1iZXIoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCAtZmxvYXRNYXgp
OwotICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLT5m
YXN0R2V0QXR0cmlidXRlKG1heEF0dHIpLCBmbG9hdE1heCk7Ci0gICAgY29uc3QgRGVjaW1hbCBz
dGVwID0gU3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRp
b24sIGVsZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERl
Y2ltYWwgbWluaW11bSA9IHBhcnNlVG9OdW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUo
bWluQXR0ciksIC1mbG9hdE1heCk7CisgICAgY29uc3QgRGVjaW1hbCBtYXhpbXVtID0gcGFyc2VU
b051bWJlcihlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtYXhBdHRyKSwgZmxvYXRNYXgpOwor
ICAgIGNvbnN0IERlY2ltYWwgc3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5k
bGluZywgc3RlcERlc2NyaXB0aW9uLCBlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0
cikpOwogICAgIHJldHVybiBTdGVwUmFuZ2Uoc3RlcEJhc2UsIG1pbmltdW0sIG1heGltdW0sIHN0
ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiB9CiAKQEAgLTE4MCwxNSArMTgwLDE1IEBAIGJvb2wgTnVt
YmVySW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXpl
LCBpbnQmIHByZWZlcnJlCiB7CiAgICAgcHJlZmVycmVkU2l6ZSA9IGRlZmF1bHRTaXplOwogCi0g
ICAgY29uc3QgU3RyaW5nIHN0ZXBTdHJpbmcgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUo
c3RlcEF0dHIpOworICAgIGNvbnN0IFN0cmluZyBzdGVwU3RyaW5nID0gZWxlbWVudCgpLmZhc3RH
ZXRBdHRyaWJ1dGUoc3RlcEF0dHIpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGVwU3Ry
aW5nLCAiYW55IikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IERlY2ltYWwg
bWluaW11bSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwgbWluaW11bSA9IHBhcnNlVG9E
ZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShtaW5BdHRyKSk7
CiAgICAgaWYgKCFtaW5pbXVtLmlzRmluaXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGNvbnN0IERlY2ltYWwgbWF4aW11bSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShl
bGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0cikpOworICAgIGNvbnN0IERlY2ltYWwg
bWF4aW11bSA9IHBhcnNlVG9EZWNpbWFsRm9yTnVtYmVyVHlwZShlbGVtZW50KCkuZmFzdEdldEF0
dHJpYnV0ZShtYXhBdHRyKSk7CiAgICAgaWYgKCFtYXhpbXVtLmlzRmluaXRlKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMjA1LDcgKzIwNSw3IEBAIGJvb2wgTnVtYmVySW5wdXRUeXBl
OjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZl
cnJlCiBmbG9hdCBOdW1iZXJJbnB1dFR5cGU6OmRlY29yYXRpb25XaWR0aCgpIGNvbnN0CiB7CiAg
ICAgZmxvYXQgd2lkdGggPSAwOwotICAgIEhUTUxFbGVtZW50KiBzcGluQnV0dG9uID0gZWxlbWVu
dCgpLT5pbm5lclNwaW5CdXR0b25FbGVtZW50KCk7CisgICAgSFRNTEVsZW1lbnQqIHNwaW5CdXR0
b24gPSBlbGVtZW50KCkuaW5uZXJTcGluQnV0dG9uRWxlbWVudCgpOwogICAgIGlmIChSZW5kZXJC
b3gqIHNwaW5SZW5kZXJlciA9IHNwaW5CdXR0b24gPyBzcGluQnV0dG9uLT5yZW5kZXJCb3goKSA6
IDApIHsKICAgICAgICAgd2lkdGggKz0gc3BpblJlbmRlcmVyLT5ib3JkZXJBbmRQYWRkaW5nTG9n
aWNhbFdpZHRoKCk7CiAgICAgICAgIC8vIFNpbmNlIHRoZSB3aWR0aCBvZiBzcGluUmVuZGVyZXIg
aXMgbm90IGNhbGN1bGF0ZWQgeWV0LCBzcGluUmVuZGVyZXItPmxvZ2ljYWxXaWR0aCgpIHJldHVy
bnMgMC4KQEAgLTI1MSwxMiArMjUxLDEyIEBAIFN0cmluZyBOdW1iZXJJbnB1dFR5cGU6OmxvY2Fs
aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlKSBjb25zdAogICAgIC8vIFdlIGRv
bid0IGxvY2FsaXplIHNjaWVudGlmaWMgbm90YXRpb25zLgogICAgIGlmIChwcm9wb3NlZFZhbHVl
LmZpbmQoaXNFKSAhPSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHByb3Bvc2VkVmFsdWU7Ci0g
ICAgcmV0dXJuIGVsZW1lbnQoKS0+bG9jYWxlKCkuY29udmVydFRvTG9jYWxpemVkTnVtYmVyKHBy
b3Bvc2VkVmFsdWUpOworICAgIHJldHVybiBlbGVtZW50KCkubG9jYWxlKCkuY29udmVydFRvTG9j
YWxpemVkTnVtYmVyKHByb3Bvc2VkVmFsdWUpOwogfQogCiBTdHJpbmcgTnVtYmVySW5wdXRUeXBl
Ojp2aXNpYmxlVmFsdWUoKSBjb25zdAogewotICAgIHJldHVybiBsb2NhbGl6ZVZhbHVlKGVsZW1l
bnQoKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIGxvY2FsaXplVmFsdWUoZWxlbWVudCgpLnZhbHVl
KCkpOwogfQogCiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1
ZShjb25zdCBTdHJpbmcmIHZpc2libGVWYWx1ZSkgY29uc3QKQEAgLTI2Niw3ICsyNjYsNyBAQCBT
dHJpbmcgTnVtYmVySW5wdXRUeXBlOjpjb252ZXJ0RnJvbVZpc2libGVWYWx1ZShjb25zdCBTdHJp
bmcmIHZpc2libGVWYWx1ZSkgY29ucwogICAgIC8vIFdlIGRvbid0IGxvY2FsaXplIHNjaWVudGlm
aWMgbm90YXRpb25zLgogICAgIGlmICh2aXNpYmxlVmFsdWUuZmluZChpc0UpICE9IG5vdEZvdW5k
KQogICAgICAgICByZXR1cm4gdmlzaWJsZVZhbHVlOwotICAgIHJldHVybiBlbGVtZW50KCktPmxv
Y2FsZSgpLmNvbnZlcnRGcm9tTG9jYWxpemVkTnVtYmVyKHZpc2libGVWYWx1ZSk7CisgICAgcmV0
dXJuIGVsZW1lbnQoKS5sb2NhbGUoKS5jb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcih2aXNpYmxl
VmFsdWUpOwogfQogCiBTdHJpbmcgTnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0
IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSkgY29uc3QKQEAgLTI3OCw3ICsyNzgsNyBAQCBTdHJpbmcg
TnVtYmVySW5wdXRUeXBlOjpzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1
ZSkgY29uc3QKIAogYm9vbCBOdW1iZXJJbnB1dFR5cGU6Omhhc0JhZElucHV0KCkgY29uc3QKIHsK
LSAgICBTdHJpbmcgc3RhbmRhcmRWYWx1ZSA9IGNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKGVsZW1l
bnQoKS0+aW5uZXJUZXh0VmFsdWUoKSk7CisgICAgU3RyaW5nIHN0YW5kYXJkVmFsdWUgPSBjb252
ZXJ0RnJvbVZpc2libGVWYWx1ZShlbGVtZW50KCkuaW5uZXJUZXh0VmFsdWUoKSk7CiAgICAgcmV0
dXJuICFzdGFuZGFyZFZhbHVlLmlzRW1wdHkoKSAmJiAhc3RkOjppc2Zpbml0ZShwYXJzZVRvRG91
YmxlRm9yTnVtYmVyVHlwZShzdGFuZGFyZFZhbHVlKSk7CiB9CiAKQEAgLTMwNiwxNiArMzA2LDE2
IEBAIHZvaWQgTnVtYmVySW5wdXRUeXBlOjptaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKQogewog
ICAgIElucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAKLSAgICBpZiAoZWxl
bWVudCgpLT5yZW5kZXJlcigpKQotICAgICAgICBlbGVtZW50KCktPnJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOworICAgIGlmIChlbGVtZW50KCkucmVuZGVy
ZXIoKSkKKyAgICAgICAgZWxlbWVudCgpLnJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOwogfQogCiB2b2lkIE51bWJlcklucHV0VHlwZTo6c3RlcEF0dHJpYnV0
ZUNoYW5nZWQoKQogewogICAgIElucHV0VHlwZTo6c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKIAot
ICAgIGlmIChlbGVtZW50KCktPnJlbmRlcmVyKCkpCi0gICAgICAgIGVsZW1lbnQoKS0+cmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CisgICAgaWYgKGVsZW1l
bnQoKS5yZW5kZXJlcigpKQorICAgICAgICBlbGVtZW50KCkucmVuZGVyZXIoKS0+c2V0TmVlZHNM
YXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCmluZGV4IGI3ZmU1ZTkuLjk3NGQyOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaApAQCAtMzcsMTAgKzM3LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTnVtYmVySW5wdXRUeXBlIDogcHVibGljIFRl
eHRGaWVsZElucHV0VHlwZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRU
eXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPElu
cHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBOdW1i
ZXJJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkgOiBUZXh0RmllbGRJbnB1dFR5
cGUoZWxlbWVudCkgeyB9CisgICAgTnVtYmVySW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVs
ZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
KGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
KSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5jcHAKaW5k
ZXggYzNhMTE4My4uNjYzN2EyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNz
d29yZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0
VHlwZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
T3duUHRyPElucHV0VHlwZT4gUGFzc3dvcmRJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50KiBlbGVtZW50KQorUGFzc093blB0cjxJbnB1dFR5cGU+IFBhc3N3b3JkSW5wdXRUeXBlOjpj
cmVhdGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBhc3N3b3JkSW5wdXRUeXBlKGVsZW1lbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGFz
c3dvcmRJbnB1dFR5cGUuaAppbmRleCBjOTIzM2RhLi4zMGQ3N2YwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9QYXNzd29yZElucHV0VHlwZS5oCkBAIC0zNywxMCArMzcsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBQYXNzd29yZElucHV0VHlwZSA6IHB1YmxpYyBCYXNlVGV4dElucHV0
VHlwZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUo
SFRNTElucHV0RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3Jl
YXRlKEhUTUxJbnB1dEVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBQYXNzd29yZElucHV0VHlw
ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGVsZW1lbnQp
IHsgfQorICAgIFBhc3N3b3JkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDog
QmFzZVRleHRJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25z
dCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAKaW5kZXggN2Zk
NzBhZS4uMDA1YmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1QYXNzT3duUHRyPElucHV0VHlwZT4gUmFkaW9JbnB1dFR5cGU6OmNyZWF0ZShI
VE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQorUGFzc093blB0cjxJbnB1dFR5cGU+IFJhZGlvSW5w
dXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFJhZGlvSW5wdXRUeXBlKGVsZW1lbnQpKTsKIH0KQEAgLTUxLDcgKzUxLDcg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBSYWRpb0lucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3QKIAogYm9vbCBSYWRpb0lucHV0VHlwZTo6dmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNJblJlcXVpcmVkUmFkaW9CdXR0b25H
cm91cCgpICYmICFlbGVtZW50KCktPmNoZWNrZWRSYWRpb0J1dHRvbkZvckdyb3VwKCk7CisgICAg
cmV0dXJuIGVsZW1lbnQoKS5pc0luUmVxdWlyZWRSYWRpb0J1dHRvbkdyb3VwKCkgJiYgIWVsZW1l
bnQoKS5jaGVja2VkUmFkaW9CdXR0b25Gb3JHcm91cCgpOwogfQogCiBTdHJpbmcgUmFkaW9JbnB1
dFR5cGU6OnZhbHVlTWlzc2luZ1RleHQoKSBjb25zdApAQCAtNzgsMTMgKzc4LDEzIEBAIHZvaWQg
UmFkaW9JbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkK
ICAgICAvLyBUZXN0ZWQgaW4gV2luSUUsIGFuZCBldmVuIGZvciBSVEwsIGxlZnQgc3RpbGwgbWVh
bnMgcHJldmlvdXMgcmFkaW8gYnV0dG9uIChhbmQgc28gbW92ZXMKICAgICAvLyB0byB0aGUgcmln
aHQpLiAgU2VlbXMgc3RyYW5nZSwgYnV0IHdlJ2xsIG1hdGNoIGl0LgogICAgIC8vIEhvd2V2ZXIs
IHdoZW4gdXNpbmcgU3BhdGlhbCBOYXZpZ2F0aW9uLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gbmF2
aWdhdGUgd2l0aG91dCBjaGFuZ2luZyB0aGUgc2VsZWN0aW9uLgotICAgIGlmIChpc1NwYXRpYWxO
YXZpZ2F0aW9uRW5hYmxlZChlbGVtZW50KCktPmRvY3VtZW50KCkuZnJhbWUoKSkpCisgICAgaWYg
KGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVsZW1lbnQoKS5kb2N1bWVudCgpLmZyYW1lKCkp
KQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCBmb3J3YXJkID0gKGtleSA9PSAiRG93biIgfHwg
a2V5ID09ICJSaWdodCIpOwogCiAgICAgLy8gV2UgY2FuIG9ubHkgc3RheSB3aXRoaW4gdGhlIGZv
cm0ncyBjaGlsZHJlbiBpZiB0aGUgZm9ybSBoYXNuJ3QgYmVlbiBkZW1vdGVkIHRvIGEgbGVhZiBi
ZWNhdXNlCiAgICAgLy8gb2YgbWFsZm9ybWVkIEhUTUwuCi0gICAgTm9kZSogbm9kZSA9IGVsZW1l
bnQoKTsKKyAgICBOb2RlKiBub2RlID0gJmVsZW1lbnQoKTsKICAgICB3aGlsZSAoKG5vZGUgPSAo
Zm9yd2FyZCA/IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkgOiBOb2RlVHJhdmVyc2FsOjpwcmV2
aW91cyhub2RlKSkpKSB7CiAgICAgICAgIC8vIE9uY2Ugd2UgZW5jb3VudGVyIGEgZm9ybSBlbGVt
ZW50LCB3ZSBrbm93IHdlJ3JlIHRocm91Z2guCiAgICAgICAgIGlmIChpc0hUTUxGb3JtRWxlbWVu
dChub2RlKSkKQEAgLTkzLDEwICs5MywxMCBAQCB2b2lkIFJhZGlvSW5wdXRUeXBlOjpoYW5kbGVL
ZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgIGlmICghaXNIVE1MSW5w
dXRFbGVtZW50KG5vZGUpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFJlZlB0cjxI
VE1MSW5wdXRFbGVtZW50PiBpbnB1dEVsZW1lbnQgPSB0b0hUTUxJbnB1dEVsZW1lbnQobm9kZSk7
Ci0gICAgICAgIGlmIChpbnB1dEVsZW1lbnQtPmZvcm0oKSAhPSBlbGVtZW50KCktPmZvcm0oKSkK
KyAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+Zm9ybSgpICE9IGVsZW1lbnQoKS5mb3JtKCkpCiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGlucHV0RWxlbWVudC0+aXNSYWRpb0J1dHRv
bigpICYmIGlucHV0RWxlbWVudC0+bmFtZSgpID09IGVsZW1lbnQoKS0+bmFtZSgpICYmIGlucHV0
RWxlbWVudC0+aXNGb2N1c2FibGUoKSkgewotICAgICAgICAgICAgZWxlbWVudCgpLT5kb2N1bWVu
dCgpLnNldEZvY3VzZWRFbGVtZW50KGlucHV0RWxlbWVudCk7CisgICAgICAgIGlmIChpbnB1dEVs
ZW1lbnQtPmlzUmFkaW9CdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPm5hbWUoKSA9PSBlbGVtZW50
KCkubmFtZSgpICYmIGlucHV0RWxlbWVudC0+aXNGb2N1c2FibGUoKSkgeworICAgICAgICAgICAg
ZWxlbWVudCgpLmRvY3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1lbnQoaW5wdXRFbGVtZW50KTsKICAg
ICAgICAgICAgIGlucHV0RWxlbWVudC0+ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhldmVudCwgU2Vu
ZE5vRXZlbnRzLCBEb05vdFNob3dQcmVzc2VkTG9vayk7CiAgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMSw3ICsxMTEsNyBA
QCB2b2lkIFJhZGlvSW5wdXRUeXBlOjpoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgLy8gSWYgYW4gdW5zZWxlY3RlZCByYWRpbyBpcyB0
YWJiZWQgaW50byAoYmVjYXVzZSB0aGUgZW50aXJlIGdyb3VwIGhhcyBub3RoaW5nCiAgICAgLy8g
Y2hlY2tlZCwgb3IgYmVjYXVzZSBvZiBzb21lIGV4cGxpY2l0IC5mb2N1cygpIGNhbGwpLCB0aGVu
IGFsbG93IHNwYWNlIHRvIGNoZWNrIGl0LgotICAgIGlmIChlbGVtZW50KCktPmNoZWNrZWQoKSkK
KyAgICBpZiAoZWxlbWVudCgpLmNoZWNrZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGRpc3Bh
dGNoU2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShldmVudCk7CiB9CkBAIC0xMjIsMjcgKzEyMiwyNyBA
QCBib29sIFJhZGlvSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQq
IGV2ZW50KSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBXaGVuIHVzaW5n
IFNwYXRpYWwgTmF2aWdhdGlvbiwgZXZlcnkgcmFkaW8gYnV0dG9uIHNob3VsZCBiZSBmb2N1c2Fi
bGUuCi0gICAgaWYgKGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGVsZW1lbnQoKS0+ZG9jdW1l
bnQoKS5mcmFtZSgpKSkKKyAgICBpZiAoaXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQoZWxlbWVu
dCgpLmRvY3VtZW50KCkuZnJhbWUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8g
TmV2ZXIgYWxsb3cga2V5Ym9hcmQgdGFiYmluZyB0byBsZWF2ZSB5b3UgaW4gdGhlIHNhbWUgcmFk
aW8gZ3JvdXAuICBBbHdheXMKICAgICAvLyBza2lwIGFueSBvdGhlciBlbGVtZW50cyBpbiB0aGUg
Z3JvdXAuCi0gICAgRWxlbWVudCogY3VycmVudEZvY3VzZWROb2RlID0gZWxlbWVudCgpLT5kb2N1
bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CisgICAgRWxlbWVudCogY3VycmVudEZvY3VzZWROb2Rl
ID0gZWxlbWVudCgpLmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKICAgICBpZiAoY3VycmVu
dEZvY3VzZWROb2RlICYmIGlzSFRNTElucHV0RWxlbWVudChjdXJyZW50Rm9jdXNlZE5vZGUpKSB7
CiAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGZvY3VzZWRJbnB1dCA9IHRvSFRNTElucHV0RWxl
bWVudChjdXJyZW50Rm9jdXNlZE5vZGUpOwotICAgICAgICBpZiAoZm9jdXNlZElucHV0LT5pc1Jh
ZGlvQnV0dG9uKCkgJiYgZm9jdXNlZElucHV0LT5mb3JtKCkgPT0gZWxlbWVudCgpLT5mb3JtKCkg
JiYgZm9jdXNlZElucHV0LT5uYW1lKCkgPT0gZWxlbWVudCgpLT5uYW1lKCkpCisgICAgICAgIGlm
IChmb2N1c2VkSW5wdXQtPmlzUmFkaW9CdXR0b24oKSAmJiBmb2N1c2VkSW5wdXQtPmZvcm0oKSA9
PSBlbGVtZW50KCkuZm9ybSgpICYmIGZvY3VzZWRJbnB1dC0+bmFtZSgpID09IGVsZW1lbnQoKS5u
YW1lKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQWxsb3cg
a2V5Ym9hcmQgZm9jdXMgaWYgd2UncmUgY2hlY2tlZCBvciBpZiBub3RoaW5nIGluIHRoZSBncm91
cCBpcyBjaGVja2VkLgotICAgIHJldHVybiBlbGVtZW50KCktPmNoZWNrZWQoKSB8fCAhZWxlbWVu
dCgpLT5jaGVja2VkUmFkaW9CdXR0b25Gb3JHcm91cCgpOworICAgIHJldHVybiBlbGVtZW50KCku
Y2hlY2tlZCgpIHx8ICFlbGVtZW50KCkuY2hlY2tlZFJhZGlvQnV0dG9uRm9yR3JvdXAoKTsKIH0K
IAogYm9vbCBSYWRpb0lucHV0VHlwZTo6c2hvdWxkU2VuZENoYW5nZUV2ZW50QWZ0ZXJDaGVja2Vk
Q2hhbmdlZCgpCiB7CiAgICAgLy8gRG9uJ3Qgc2VuZCBhIGNoYW5nZSBldmVudCBmb3IgYSByYWRp
byBidXR0b24gdGhhdCdzIGdldHRpbmcgdW5jaGVja2VkLgogICAgIC8vIFRoaXMgd2FzIGRvbmUg
dG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIG90aGVyIGJyb3dzZXJzLgotICAgIHJldHVybiBlbGVt
ZW50KCktPmNoZWNrZWQoKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLmNoZWNrZWQoKTsKIH0KIAog
UGFzc093blB0cjxDbGlja0hhbmRsaW5nU3RhdGU+IFJhZGlvSW5wdXRUeXBlOjp3aWxsRGlzcGF0
Y2hDbGljaygpCkBAIC0xNTYsMTcgKzE1NiwxNyBAQCBQYXNzT3duUHRyPENsaWNrSGFuZGxpbmdT
dGF0ZT4gUmFkaW9JbnB1dFR5cGU6OndpbGxEaXNwYXRjaENsaWNrKCkKIAogICAgIE93blB0cjxD
bGlja0hhbmRsaW5nU3RhdGU+IHN0YXRlID0gYWRvcHRQdHIobmV3IENsaWNrSGFuZGxpbmdTdGF0
ZSk7CiAKLSAgICBzdGF0ZS0+Y2hlY2tlZCA9IGVsZW1lbnQoKS0+Y2hlY2tlZCgpOwotICAgIHN0
YXRlLT5jaGVja2VkUmFkaW9CdXR0b24gPSBlbGVtZW50KCktPmNoZWNrZWRSYWRpb0J1dHRvbkZv
ckdyb3VwKCk7CisgICAgc3RhdGUtPmNoZWNrZWQgPSBlbGVtZW50KCkuY2hlY2tlZCgpOworICAg
IHN0YXRlLT5jaGVja2VkUmFkaW9CdXR0b24gPSBlbGVtZW50KCkuY2hlY2tlZFJhZGlvQnV0dG9u
Rm9yR3JvdXAoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBzdGF0ZS0+aW5kZXRlcm1pbmF0
ZSA9IGVsZW1lbnQoKS0+aW5kZXRlcm1pbmF0ZSgpOworICAgIHN0YXRlLT5pbmRldGVybWluYXRl
ID0gZWxlbWVudCgpLmluZGV0ZXJtaW5hdGUoKTsKIAotICAgIGlmIChlbGVtZW50KCktPmluZGV0
ZXJtaW5hdGUoKSkKLSAgICAgICAgZWxlbWVudCgpLT5zZXRJbmRldGVybWluYXRlKGZhbHNlKTsK
KyAgICBpZiAoZWxlbWVudCgpLmluZGV0ZXJtaW5hdGUoKSkKKyAgICAgICAgZWxlbWVudCgpLnNl
dEluZGV0ZXJtaW5hdGUoZmFsc2UpOwogI2VuZGlmCiAKLSAgICBlbGVtZW50KCktPnNldENoZWNr
ZWQodHJ1ZSwgRGlzcGF0Y2hDaGFuZ2VFdmVudCk7CisgICAgZWxlbWVudCgpLnNldENoZWNrZWQo
dHJ1ZSwgRGlzcGF0Y2hDaGFuZ2VFdmVudCk7CiAKICAgICByZXR1cm4gc3RhdGUucmVsZWFzZSgp
OwogfQpAQCAtMTc5LDEzICsxNzksMTMgQEAgdm9pZCBSYWRpb0lucHV0VHlwZTo6ZGlkRGlzcGF0
Y2hDbGljayhFdmVudCogZXZlbnQsIGNvbnN0IENsaWNrSGFuZGxpbmdTdGF0ZSYgc3QKICAgICAg
ICAgSFRNTElucHV0RWxlbWVudCogY2hlY2tlZFJhZGlvQnV0dG9uID0gc3RhdGUuY2hlY2tlZFJh
ZGlvQnV0dG9uLmdldCgpOwogICAgICAgICBpZiAoY2hlY2tlZFJhZGlvQnV0dG9uCiAgICAgICAg
ICAgICAgICAgJiYgY2hlY2tlZFJhZGlvQnV0dG9uLT5pc1JhZGlvQnV0dG9uKCkKLSAgICAgICAg
ICAgICAgICAmJiBjaGVja2VkUmFkaW9CdXR0b24tPmZvcm0oKSA9PSBlbGVtZW50KCktPmZvcm0o
KQotICAgICAgICAgICAgICAgICYmIGNoZWNrZWRSYWRpb0J1dHRvbi0+bmFtZSgpID09IGVsZW1l
bnQoKS0+bmFtZSgpKSB7CisgICAgICAgICAgICAgICAgJiYgY2hlY2tlZFJhZGlvQnV0dG9uLT5m
b3JtKCkgPT0gZWxlbWVudCgpLmZvcm0oKQorICAgICAgICAgICAgICAgICYmIGNoZWNrZWRSYWRp
b0J1dHRvbi0+bmFtZSgpID09IGVsZW1lbnQoKS5uYW1lKCkpIHsKICAgICAgICAgICAgIGNoZWNr
ZWRSYWRpb0J1dHRvbi0+c2V0Q2hlY2tlZCh0cnVlKTsKICAgICAgICAgfQogCiAjaWYgUExBVEZP
Uk0oSU9TKSAgICAgICAgCi0gICAgICAgIGVsZW1lbnQoKS0+c2V0SW5kZXRlcm1pbmF0ZShzdGF0
ZS5pbmRldGVybWluYXRlKTsKKyAgICAgICAgZWxlbWVudCgpLnNldEluZGV0ZXJtaW5hdGUoc3Rh
dGUuaW5kZXRlcm1pbmF0ZSk7CiAjZW5kaWYKIAogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUmFkaW9JbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFkaW9J
bnB1dFR5cGUuaAppbmRleCBhYzQyOWY5Li5hNWZlMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRp
b0lucHV0VHlwZS5oCkBAIC0zNywxMCArMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSYWRpb0lucHV0VHlwZSA6IHB1YmxpYyBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRF
bGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElu
cHV0RWxlbWVudCYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJhZGlvSW5wdXRUeXBlKEhU
TUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZUNoZWNrYWJsZUlucHV0VHlwZShlbGVtZW50
KSB7IH0KKyAgICBleHBsaWNpdCBSYWRpb0lucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVt
ZW50KSA6IEJhc2VDaGVja2FibGVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3QgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBTdHJpbmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0IE9WRVJSSURFOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCA0ZWM0YWQ2Li4wOTFkZjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtNzgsMTIgKzc4LDEy
IEBAIHN0YXRpYyBEZWNpbWFsIGVuc3VyZU1heGltdW0oY29uc3QgRGVjaW1hbCYgcHJvcG9zZWRW
YWx1ZSwgY29uc3QgRGVjaW1hbCYgbWluaW11CiAgICAgcmV0dXJuIHByb3Bvc2VkVmFsdWUgPj0g
bWluaW11bSA/IHByb3Bvc2VkVmFsdWUgOiBzdGQ6Om1heChtaW5pbXVtLCBmYWxsYmFja1ZhbHVl
KTsKIH0KIAotUGFzc093blB0cjxJbnB1dFR5cGU+IFJhbmdlSW5wdXRUeXBlOjpjcmVhdGUoSFRN
TElucHV0RWxlbWVudCogZWxlbWVudCkKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBSYW5nZUlucHV0
VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBSYW5nZUlucHV0VHlwZShlbGVtZW50KSk7CiB9CiAKLVJhbmdlSW5wdXRUeXBl
OjpSYW5nZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQorUmFuZ2VJbnB1dFR5
cGU6OlJhbmdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgOiBJbnB1
dFR5cGUoZWxlbWVudCkKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICAsIG1fdGlj
a01hcmtWYWx1ZXNEaXJ0eSh0cnVlKQpAQCAtMTA4LDEyICsxMDgsMTIgQEAgY29uc3QgQXRvbWlj
U3RyaW5nJiBSYW5nZUlucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogZG91Ymxl
IFJhbmdlSW5wdXRUeXBlOjp2YWx1ZUFzRG91YmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFy
c2VUb0RvdWJsZUZvck51bWJlclR5cGUoZWxlbWVudCgpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4g
cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoZWxlbWVudCgpLnZhbHVlKCkpOwogfQogCiB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpzZXRWYWx1ZUFzRGVjaW1hbChjb25zdCBEZWNpbWFsJiBuZXdWYWx1
ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikg
Y29uc3QKIHsKLSAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShuZXdWYWx1ZSksIGV2
ZW50QmVoYXZpb3IpOworICAgIGVsZW1lbnQoKS5zZXRWYWx1ZShzZXJpYWxpemUobmV3VmFsdWUp
LCBldmVudEJlaGF2aW9yKTsKIH0KIAogYm9vbCBSYW5nZUlucHV0VHlwZTo6dHlwZU1pc21hdGNo
Rm9yKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CkBAIC0xMzAsMTYgKzEzMCwxNiBAQCBTdGVw
UmFuZ2UgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcgYW55
U3RlcEhhbmRsaW5nKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Rl
cFJhbmdlOjpTdGVwRGVzY3JpcHRpb24sIHN0ZXBEZXNjcmlwdGlvbiwgKHJhbmdlRGVmYXVsdFN0
ZXAsIHJhbmdlRGVmYXVsdFN0ZXBCYXNlLCByYW5nZVN0ZXBTY2FsZUZhY3RvcikpOwogCi0gICAg
Y29uc3QgRGVjaW1hbCBtaW5pbXVtID0gcGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RHZXRB
dHRyaWJ1dGUobWluQXR0ciksIHJhbmdlRGVmYXVsdE1pbmltdW0pOwotICAgIGNvbnN0IERlY2lt
YWwgbWF4aW11bSA9IGVuc3VyZU1heGltdW0ocGFyc2VUb051bWJlcihlbGVtZW50KCktPmZhc3RH
ZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1heGltdW0pLCBtaW5pbXVtLCByYW5n
ZURlZmF1bHRNYXhpbXVtKTsKKyAgICBjb25zdCBEZWNpbWFsIG1pbmltdW0gPSBwYXJzZVRvTnVt
YmVyKGVsZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKG1pbkF0dHIpLCByYW5nZURlZmF1bHRNaW5p
bXVtKTsKKyAgICBjb25zdCBEZWNpbWFsIG1heGltdW0gPSBlbnN1cmVNYXhpbXVtKHBhcnNlVG9O
dW1iZXIoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUobWF4QXR0ciksIHJhbmdlRGVmYXVsdE1h
eGltdW0pLCBtaW5pbXVtLCByYW5nZURlZmF1bHRNYXhpbXVtKTsKIAotICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJlY2lzaW9uVmFsdWUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUocHJl
Y2lzaW9uQXR0cik7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVjaXNpb25WYWx1ZSA9IGVs
ZW1lbnQoKS5mYXN0R2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIpOwogICAgIGlmICghcHJlY2lz
aW9uVmFsdWUuaXNOdWxsKCkpIHsKICAgICAgICAgY29uc3QgRGVjaW1hbCBzdGVwID0gZXF1YWxJ
Z25vcmluZ0Nhc2UocHJlY2lzaW9uVmFsdWUsICJmbG9hdCIpID8gRGVjaW1hbDo6bmFuKCkgOiAx
OwogICAgICAgICByZXR1cm4gU3RlcFJhbmdlKG1pbmltdW0sIG1pbmltdW0sIG1heGltdW0sIHN0
ZXAsIHN0ZXBEZXNjcmlwdGlvbik7CiAgICAgfQogCi0gICAgY29uc3QgRGVjaW1hbCBzdGVwID0g
U3RlcFJhbmdlOjpwYXJzZVN0ZXAoYW55U3RlcEhhbmRsaW5nLCBzdGVwRGVzY3JpcHRpb24sIGVs
ZW1lbnQoKS0+ZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOworICAgIGNvbnN0IERlY2ltYWwg
c3RlcCA9IFN0ZXBSYW5nZTo6cGFyc2VTdGVwKGFueVN0ZXBIYW5kbGluZywgc3RlcERlc2NyaXB0
aW9uLCBlbGVtZW50KCkuZmFzdEdldEF0dHJpYnV0ZShzdGVwQXR0cikpOwogICAgIHJldHVybiBT
dGVwUmFuZ2UobWluaW11bSwgbWluaW11bSwgbWF4aW11bSwgc3RlcCwgc3RlcERlc2NyaXB0aW9u
KTsKIH0KIApAQCAtMTUwLDE2ICsxNTAsMTYgQEAgYm9vbCBSYW5nZUlucHV0VHlwZTo6aXNTdGVw
cGFibGUoKSBjb25zdAogCiB2b2lkIFJhbmdlSW5wdXRUeXBlOjpoYW5kbGVNb3VzZURvd25FdmVu
dChNb3VzZUV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkT3JS
ZWFkT25seSgpKQorICAgIGlmIChlbGVtZW50KCkuaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IGV2ZW50LT50YXJnZXQoKS0+
dG9Ob2RlKCk7CiAgICAgaWYgKGV2ZW50LT5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8ICF0YXJn
ZXROb2RlKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKGVsZW1lbnQoKS0+c2hhZG93Um9v
dCgpKTsKLSAgICBpZiAodGFyZ2V0Tm9kZSAhPSBlbGVtZW50KCkgJiYgIXRhcmdldE5vZGUtPmlz
RGVzY2VuZGFudE9mKGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpKSkKKyAgICBBU1NF
UlQoZWxlbWVudCgpLnNoYWRvd1Jvb3QoKSk7CisgICAgaWYgKHRhcmdldE5vZGUgIT0gJmVsZW1l
bnQoKSAmJiAhdGFyZ2V0Tm9kZS0+aXNEZXNjZW5kYW50T2YoZWxlbWVudCgpLnVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBTbGlkZXJUaHVtYkVsZW1lbnQqIHRo
dW1iID0gc2xpZGVyVGh1bWJFbGVtZW50T2YoZWxlbWVudCgpKTsKKyAgICBTbGlkZXJUaHVtYkVs
ZW1lbnQqIHRodW1iID0gc2xpZGVyVGh1bWJFbGVtZW50T2YoJmVsZW1lbnQoKSk7CiAgICAgaWYg
KHRhcmdldE5vZGUgPT0gdGh1bWIpCiAgICAgICAgIHJldHVybjsKICAgICB0aHVtYi0+ZHJhZ0Zy
b20oZXZlbnQtPmFic29sdXRlTG9jYXRpb24oKSk7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBS
YW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAj
aWYgRU5BQkxFKFRPVUNIX1NMSURFUikKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZVRvdWNo
RXZlbnQoVG91Y2hFdmVudCogZXZlbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxl
ZE9yUmVhZE9ubHkoKSkKKyAgICBpZiAoZWxlbWVudCgpLmlzRGlzYWJsZWRPclJlYWRPbmx5KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS50b3VjaGVuZEV2ZW50KSB7CkBAIC0xOTUsMTIgKzE5NSwxMiBAQCBib29sIFJhbmdlSW5wdXRU
eXBlOjpoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0CiAKIHZvaWQgUmFuZ2VJbnB1dFR5cGU6
OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZWxl
bWVudCgpLT5pc0Rpc2FibGVkT3JSZWFkT25seSgpKQorICAgIGlmIChlbGVtZW50KCkuaXNEaXNh
YmxlZE9yUmVhZE9ubHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgU3RyaW5nJiBr
ZXkgPSBldmVudC0+a2V5SWRlbnRpZmllcigpOwogCi0gICAgY29uc3QgRGVjaW1hbCBjdXJyZW50
ID0gcGFyc2VUb051bWJlck9yTmFOKGVsZW1lbnQoKS0+dmFsdWUoKSk7CisgICAgY29uc3QgRGVj
aW1hbCBjdXJyZW50ID0gcGFyc2VUb051bWJlck9yTmFOKGVsZW1lbnQoKS52YWx1ZSgpKTsKICAg
ICBBU1NFUlQoY3VycmVudC5pc0Zpbml0ZSgpKTsKIAogICAgIFN0ZXBSYW5nZSBzdGVwUmFuZ2Uo
Y3JlYXRlU3RlcFJhbmdlKFJlamVjdEFueSkpOwpAQCAtMjA4LDEyICsyMDgsMTIgQEAgdm9pZCBS
YW5nZUlucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQog
CiAgICAgLy8gRklYTUU6IFdlIGNhbid0IHVzZSBzdGVwVXAoKSBmb3IgdGhlIHN0ZXAgdmFsdWUg
ImFueSIuIFNvLCB3ZSBpbmNyZWFzZQogICAgIC8vIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZSBieSAx
LzEwMCBvZiB0aGUgdmFsdWUgcmFuZ2UuIElzIGl0IHJlYXNvbmFibGU/Ci0gICAgY29uc3QgRGVj
aW1hbCBzdGVwID0gZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRl
KHN0ZXBBdHRyKSwgImFueSIpID8gKHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWlu
aW11bSgpKSAvIDEwMCA6IHN0ZXBSYW5nZS5zdGVwKCk7CisgICAgY29uc3QgRGVjaW1hbCBzdGVw
ID0gZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLmZhc3RHZXRBdHRyaWJ1dGUoc3RlcEF0dHIp
LCAiYW55IikgPyAoc3RlcFJhbmdlLm1heGltdW0oKSAtIHN0ZXBSYW5nZS5taW5pbXVtKCkpIC8g
MTAwIDogc3RlcFJhbmdlLnN0ZXAoKTsKICAgICBjb25zdCBEZWNpbWFsIGJpZ1N0ZXAgPSBtYXgo
KHN0ZXBSYW5nZS5tYXhpbXVtKCkgLSBzdGVwUmFuZ2UubWluaW11bSgpKSAvIDEwLCBzdGVwKTsK
IAogICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGZhbHNlOwotICAgIGlmIChlbGVtZW50KCktPnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgQ29udHJvbFBhcnQgcGFydCA9IGVsZW1lbnQoKS0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOworICAgIGlmIChlbGVtZW50KCkucmVuZGVyZXIoKSkg
eworICAgICAgICBDb250cm9sUGFydCBwYXJ0ID0gZWxlbWVudCgpLnJlbmRlcmVyKCktPnN0eWxl
KCktPmFwcGVhcmFuY2UoKTsKICAgICAgICAgaXNWZXJ0aWNhbCA9IHBhcnQgPT0gU2xpZGVyVmVy
dGljYWxQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJQYXJ0OwogICAgIH0KIApAQCAt
MjQ0LDkgKzI0NCw5IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChL
ZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVu
dEJlaGF2aW9yID0gRGlzcGF0Y2hDaGFuZ2VFdmVudDsKICAgICAgICAgc2V0VmFsdWVBc0RlY2lt
YWwobmV3VmFsdWUsIGV2ZW50QmVoYXZpb3IsIElHTk9SRV9FWENFUFRJT04pOwogCi0gICAgICAg
IGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGVs
ZW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwotICAgICAgICBl
bGVtZW50KCktPmRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOworICAgICAgICBpZiAo
QVhPYmplY3RDYWNoZSogY2FjaGUgPSBlbGVtZW50KCkuZG9jdW1lbnQoKS5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKCZlbGVtZW50
KCksIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCB0cnVlKTsKKyAgICAgICAgZWxlbWVu
dCgpLmRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOwogICAgIH0KIAogICAgIGV2ZW50
LT5zZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtMjU0LDIwICsyNTQsMjEgQEAgdm9pZCBSYW5nZUlu
cHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiB2b2lk
IFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKLSAgICBBU1NFUlQoZWxl
bWVudCgpLT5zaGFkb3dSb290KCkpOworICAgIEFTU0VSVChlbGVtZW50KCkuc2hhZG93Um9vdCgp
KTsKIAotICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKTsKKyAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCkuZG9jdW1lbnQoKTsKICAgICBSZWZQdHI8
SFRNTERpdkVsZW1lbnQ+IHRyYWNrID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7
CiAgICAgdHJhY2stPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtc2xpZGVyLXJ1bm5h
YmxlLXRyYWNrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIHRy
YWNrLT5hcHBlbmRDaGlsZChTbGlkZXJUaHVtYkVsZW1lbnQ6OmNyZWF0ZSgmZG9jdW1lbnQpLCBJ
R05PUkVfRVhDRVBUSU9OKTsKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGNvbnRhaW5lciA9IFNs
aWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZSgmZG9jdW1lbnQpOwogICAgIGNvbnRhaW5lci0+
YXBwZW5kQ2hpbGQodHJhY2sucmVsZWFzZSgpLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICBlbGVt
ZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoY29udGFpbmVyLnJlbGVh
c2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKS0+YXBwZW5kQ2hpbGQoY29udGFpbmVyLnJlbGVhc2UoKSwgSUdOT1JFX0VYQ0VQVElPTik7
CiB9CiAKIFJlbmRlck9iamVjdCogUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdAogewotICAgIHJldHVybiBuZXcgKGFy
ZW5hKSBSZW5kZXJTbGlkZXIoZWxlbWVudCgpKTsKKyAgICAvLyBGSVhNRTogUmVuZGVyU2xpZGVy
IHNob3VsZCB0YWtlIGFuIEhUTUxJbnB1dEVsZW1lbnQmCisgICAgcmV0dXJuIG5ldyAoYXJlbmEp
IFJlbmRlclNsaWRlcigmZWxlbWVudCgpKTsKIH0KIAogRGVjaW1hbCBSYW5nZUlucHV0VHlwZTo6
cGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmIHNyYywgY29uc3QgRGVjaW1hbCYgZGVmYXVsdFZh
bHVlKSBjb25zdApAQCAtMjg3LDcgKzI4OCw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmFjY2Vz
c0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykKIHsKICAgICBJbnB1dFR5cGU6OmFjY2Vz
c0tleUFjdGlvbihzZW5kTW91c2VFdmVudHMpOwogCi0gICAgZWxlbWVudCgpLT5kaXNwYXRjaFNp
bXVsYXRlZENsaWNrKDAsIHNlbmRNb3VzZUV2ZW50cyA/IFNlbmRNb3VzZVVwRG93bkV2ZW50cyA6
IFNlbmROb0V2ZW50cyk7CisgICAgZWxlbWVudCgpLmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soMCwg
c2VuZE1vdXNlRXZlbnRzID8gU2VuZE1vdXNlVXBEb3duRXZlbnRzIDogU2VuZE5vRXZlbnRzKTsK
IH0KIAogdm9pZCBSYW5nZUlucHV0VHlwZTo6bWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkKQEAg
LTI5NSwxMCArMjk2LDEwIEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6Om1pbk9yTWF4QXR0cmlidXRl
Q2hhbmdlZCgpCiAgICAgSW5wdXRUeXBlOjptaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKTsKIAog
ICAgIC8vIFNhbml0aXplIHRoZSB2YWx1ZS4KLSAgICBpZiAoZWxlbWVudCgpLT5oYXNEaXJ0eVZh
bHVlKCkpCi0gICAgICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoZWxlbWVudCgpLT52YWx1ZSgpKTsK
KyAgICBpZiAoZWxlbWVudCgpLmhhc0RpcnR5VmFsdWUoKSkKKyAgICAgICAgZWxlbWVudCgpLnNl
dFZhbHVlKGVsZW1lbnQoKS52YWx1ZSgpKTsKIAotICAgIHNsaWRlclRodW1iRWxlbWVudE9mKGVs
ZW1lbnQoKSktPnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CisgICAgc2xpZGVyVGh1bWJFbGVtZW50
T2YoJmVsZW1lbnQoKSktPnNldFBvc2l0aW9uRnJvbVZhbHVlKCk7CiB9CiAKIHZvaWQgUmFuZ2VJ
bnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2Vk
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW50QmVoYXZpb3IpCkBAIC0zMDgsNyArMzA5LDcg
QEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9v
bCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEUKICAgICBpZiAoIXZhbHVlQ2hhbmdlZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2xpZGVyVGh1bWJFbGVtZW50T2YoZWxlbWVudCgpKS0+c2V0UG9z
aXRpb25Gcm9tVmFsdWUoKTsKKyAgICBzbGlkZXJUaHVtYkVsZW1lbnRPZigmZWxlbWVudCgpKS0+
c2V0UG9zaXRpb25Gcm9tVmFsdWUoKTsKIH0KIAogU3RyaW5nIFJhbmdlSW5wdXRUeXBlOjpmYWxs
YmFja1ZhbHVlKCkgY29uc3QKQEAgLTMzMCwxMiArMzMxLDEyIEBAIGJvb2wgUmFuZ2VJbnB1dFR5
cGU6OnNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkKIAogSFRNTEVsZW1lbnQqIFJhbmdlSW5w
dXRUeXBlOjpzbGlkZXJUaHVtYkVsZW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBzbGlkZXJU
aHVtYkVsZW1lbnRPZihlbGVtZW50KCkpOworICAgIHJldHVybiBzbGlkZXJUaHVtYkVsZW1lbnRP
ZigmZWxlbWVudCgpKTsKIH0KIAogSFRNTEVsZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJU
cmFja0VsZW1lbnQoKSBjb25zdAogewotICAgIHJldHVybiBzbGlkZXJUcmFja0VsZW1lbnRPZihl
bGVtZW50KCkpOworICAgIHJldHVybiBzbGlkZXJUcmFja0VsZW1lbnRPZigmZWxlbWVudCgpKTsK
IH0KIAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQpAQCAtMzUzLDcgKzM1NCw3IEBAIHZv
aWQgUmFuZ2VJbnB1dFR5cGU6OnVwZGF0ZVRpY2tNYXJrVmFsdWVzKCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fdGlja01hcmtWYWx1ZXMuY2xlYXIoKTsKICAgICBtX3RpY2tNYXJrVmFsdWVzRGly
dHkgPSBmYWxzZTsKLSAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlzdCA9IGVsZW1lbnQo
KS0+ZGF0YUxpc3QoKTsKKyAgICBIVE1MRGF0YUxpc3RFbGVtZW50KiBkYXRhTGlzdCA9IGVsZW1l
bnQoKS5kYXRhTGlzdCgpOwogICAgIGlmICghZGF0YUxpc3QpCiAgICAgICAgIHJldHVybjsKICAg
ICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0aW9ucygpOwpA
QCAtMzYyLDcgKzM2Myw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OnVwZGF0ZVRpY2tNYXJrVmFs
dWVzKCkKICAgICAgICAgTm9kZSogbm9kZSA9IG9wdGlvbnMtPml0ZW0oaSk7CiAgICAgICAgIEhU
TUxPcHRpb25FbGVtZW50KiBvcHRpb25FbGVtZW50ID0gdG9IVE1MT3B0aW9uRWxlbWVudChub2Rl
KTsKICAgICAgICAgU3RyaW5nIG9wdGlvblZhbHVlID0gb3B0aW9uRWxlbWVudC0+dmFsdWUoKTsK
LSAgICAgICAgaWYgKCFlbGVtZW50KCktPmlzVmFsaWRWYWx1ZShvcHRpb25WYWx1ZSkpCisgICAg
ICAgIGlmICghZWxlbWVudCgpLmlzVmFsaWRWYWx1ZShvcHRpb25WYWx1ZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgbV90aWNrTWFya1ZhbHVlcy5hcHBlbmQocGFyc2VUb051bWJl
cihvcHRpb25WYWx1ZSwgRGVjaW1hbDo6bmFuKCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
bmdlSW5wdXRUeXBlLmgKaW5kZXggYTcxZDI3NS4uYzM0NjgyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
UmFuZ2VJbnB1dFR5cGUuaApAQCAtMzksMTAgKzM5LDEwIEBAIGNsYXNzIFNsaWRlclRodW1iRWxl
bWVudDsKIAogY2xhc3MgUmFuZ2VJbnB1dFR5cGUgOiBwdWJsaWMgSW5wdXRUeXBlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVt
ZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0
RWxlbWVudCYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJhbmdlSW5wdXRUeXBlKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKKyAgICBleHBsaWNpdCBSYW5nZUlucHV0VHlwZShIVE1MSW5wdXRFbGVt
ZW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAKaW5kZXggYmJjYzZjNy4uZmZkOGNjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPElucHV0VHlwZT4gUmVzZXRJbnB1dFR5cGU6
OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KQorUGFzc093blB0cjxJbnB1dFR5cGU+
IFJlc2V0SW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkKIHsKICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFJlc2V0SW5wdXRUeXBlKGVsZW1lbnQpKTsKIH0KQEAgLTU4
LDkgKzU4LDkgQEAgYm9vbCBSZXNldElucHV0VHlwZTo6c3VwcG9ydHNWYWxpZGF0aW9uKCkgY29u
c3QKIAogdm9pZCBSZXNldElucHV0VHlwZTo6aGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCog
ZXZlbnQpCiB7Ci0gICAgaWYgKGVsZW1lbnQoKS0+aXNEaXNhYmxlZEZvcm1Db250cm9sKCkgfHwg
IWVsZW1lbnQoKS0+Zm9ybSgpKQorICAgIGlmIChlbGVtZW50KCkuaXNEaXNhYmxlZEZvcm1Db250
cm9sKCkgfHwgIWVsZW1lbnQoKS5mb3JtKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBlbGVtZW50
KCktPmZvcm0oKS0+cmVzZXQoKTsKKyAgICBlbGVtZW50KCkuZm9ybSgpLT5yZXNldCgpOwogICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jlc2V0SW5w
dXRUeXBlLmgKaW5kZXggNDZiODg0Ny4uNmRmMDVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SZXNldElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJ
bnB1dFR5cGUuaApAQCAtMzcsMTAgKzM3LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUmVzZXRJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZUJ1dHRvbklucHV0VHlwZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVu
dCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJbnB1dEVs
ZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZXNldElucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkgeyB9Cisg
ICAgZXhwbGljaXQgUmVzZXRJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBC
YXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZlbnQqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvU2VhcmNoSW5wdXRUeXBlLmNwcAppbmRleCAyNzk0NTE1Li40M2E5ZTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotaW5saW5lIFNlYXJj
aElucHV0VHlwZTo6U2VhcmNoSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCitp
bmxpbmUgU2VhcmNoSW5wdXRUeXBlOjpTZWFyY2hJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYg
ZWxlbWVudCkKICAgICA6IEJhc2VUZXh0SW5wdXRUeXBlKGVsZW1lbnQpCiAgICAgLCBtX3Jlc3Vs
dHNCdXR0b24oMCkKICAgICAsIG1fY2FuY2VsQnV0dG9uKDApCkBAIC01Miw3ICs1Miw3IEBAIGlu
bGluZSBTZWFyY2hJbnB1dFR5cGU6OlNlYXJjaElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBl
bGVtZW50KQogewogfQogCi1QYXNzT3duUHRyPElucHV0VHlwZT4gU2VhcmNoSW5wdXRUeXBlOjpj
cmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK1Bhc3NPd25QdHI8SW5wdXRUeXBlPiBT
ZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KQogewogICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU2VhcmNoSW5wdXRUeXBlKGVsZW1lbnQpKTsKIH0KQEAgLTY1
LDE0ICs2NSwxMyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6YXR0YWNoKCkKIAogdm9pZCBTZWFy
Y2hJbnB1dFR5cGU6OmFkZFNlYXJjaFJlc3VsdCgpCiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBlbGVtZW50KCktPnJlbmRlcmVyKCkpCisgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBlbGVtZW50KCkucmVuZGVyZXIoKSkKICAgICAgICAgdG9SZW5kZXJTZWFyY2hG
aWVsZChyZW5kZXJlciktPmFkZFNlYXJjaFJlc3VsdCgpOwogfQogCiBSZW5kZXJPYmplY3QqIFNl
YXJjaElucHV0VHlwZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJT
dHlsZSopIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7IC8vIEZJWE1FOiBlbGVtZW50
KCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVu
ZGVyU2VhcmNoRmllbGQoKmVsZW1lbnQoKSk7CisgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRl
clNlYXJjaEZpZWxkKGVsZW1lbnQoKSk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU2VhcmNo
SW5wdXRUeXBlOjpmb3JtQ29udHJvbFR5cGUoKSBjb25zdApAQCAtMTA2LDExICsxMDUsMTEgQEAg
dm9pZCBTZWFyY2hJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIEFTU0VSVChj
b250YWluZXIpOwogICAgIEFTU0VSVCh0ZXh0V3JhcHBlcik7CiAKLSAgICBSZWZQdHI8U2VhcmNo
RmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gcmVzdWx0c0J1dHRvbiA9IFNlYXJjaEZpZWxkUmVz
dWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZSgmZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKKyAgICBS
ZWZQdHI8U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudD4gcmVzdWx0c0J1dHRvbiA9IFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZSgmZWxlbWVudCgpLmRvY3VtZW50
KCkpOwogICAgIG1fcmVzdWx0c0J1dHRvbiA9IHJlc3VsdHNCdXR0b24uZ2V0KCk7CiAgICAgY29u
dGFpbmVyLT5pbnNlcnRCZWZvcmUobV9yZXN1bHRzQnV0dG9uLCB0ZXh0V3JhcHBlciwgSUdOT1JF
X0VYQ0VQVElPTik7CiAKLSAgICBSZWZQdHI8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50
PiBjYW5jZWxCdXR0b24gPSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZSgm
ZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8U2VhcmNoRmllbGRDYW5jZWxCdXR0
b25FbGVtZW50PiBjYW5jZWxCdXR0b24gPSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6
OmNyZWF0ZSgmZWxlbWVudCgpLmRvY3VtZW50KCkpOwogICAgIG1fY2FuY2VsQnV0dG9uID0gY2Fu
Y2VsQnV0dG9uLmdldCgpOwogICAgIGNvbnRhaW5lci0+aW5zZXJ0QmVmb3JlKG1fY2FuY2VsQnV0
dG9uLCB0ZXh0V3JhcHBlci0+bmV4dFNpYmxpbmcoKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CkBA
IC0xMjcsMTQgKzEyNiwxNCBAQCBIVE1MRWxlbWVudCogU2VhcmNoSW5wdXRUeXBlOjpjYW5jZWxC
dXR0b25FbGVtZW50KCkgY29uc3QKIAogdm9pZCBTZWFyY2hJbnB1dFR5cGU6OmhhbmRsZUtleWRv
d25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZWxlbWVudCgpLT5pc0Rp
c2FibGVkT3JSZWFkT25seSgpKSB7CisgICAgaWYgKGVsZW1lbnQoKS5pc0Rpc2FibGVkT3JSZWFk
T25seSgpKSB7CiAgICAgICAgIFRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50
KGV2ZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYga2V5
ID0gZXZlbnQtPmtleUlkZW50aWZpZXIoKTsKICAgICBpZiAoa2V5ID09ICJVKzAwMUIiKSB7Ci0g
ICAgICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dCA9IGVsZW1lbnQoKTsKKyAgICAg
ICAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0KGVsZW1lbnQoKSk7CiAgICAgICAgIGlucHV0
LT5zZXRWYWx1ZUZvclVzZXIoIiIpOwogICAgICAgICBpbnB1dC0+b25TZWFyY2goKTsKICAgICAg
ICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CkBAIC0xNTIsMTIgKzE1MSwxMiBAQCB2b2lk
IFNlYXJjaElucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUoKQogCiB2b2lkIFNlYXJjaElu
cHV0VHlwZTo6c3RhcnRTZWFyY2hFdmVudFRpbWVyKCkKIHsKLSAgICBBU1NFUlQoZWxlbWVudCgp
LT5yZW5kZXJlcigpKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBlbGVtZW50KCktPmlubmVyVGV4
dFZhbHVlKCkubGVuZ3RoKCk7CisgICAgQVNTRVJUKGVsZW1lbnQoKS5yZW5kZXJlcigpKTsKKyAg
ICB1bnNpZ25lZCBsZW5ndGggPSBlbGVtZW50KCkuaW5uZXJUZXh0VmFsdWUoKS5sZW5ndGgoKTsK
IAogICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgIHN0b3BTZWFyY2hFdmVudFRpbWVyKCk7Ci0g
ICAgICAgIGVsZW1lbnQoKS0+b25TZWFyY2goKTsKKyAgICAgICAgZWxlbWVudCgpLm9uU2VhcmNo
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE3MywxOCArMTcyLDE4IEBAIHZvaWQg
U2VhcmNoSW5wdXRUeXBlOjpzdG9wU2VhcmNoRXZlbnRUaW1lcigpCiAKIHZvaWQgU2VhcmNoSW5w
dXRUeXBlOjpzZWFyY2hFdmVudFRpbWVyRmlyZWQoVGltZXI8U2VhcmNoSW5wdXRUeXBlPiopCiB7
Ci0gICAgZWxlbWVudCgpLT5vblNlYXJjaCgpOworICAgIGVsZW1lbnQoKS5vblNlYXJjaCgpOwog
fQogCiBib29sIFNlYXJjaElucHV0VHlwZTo6c2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gZWxlbWVudCgpLT5oYXNBdHRyaWJ1dGUoaW5jcmVtZW50
YWxBdHRyKTsKKyAgICByZXR1cm4gZWxlbWVudCgpLmhhc0F0dHJpYnV0ZShpbmNyZW1lbnRhbEF0
dHIpOwogfQogCiB2b2lkIFNlYXJjaElucHV0VHlwZTo6ZGlkU2V0VmFsdWVCeVVzZXJFZGl0KFZh
bHVlQ2hhbmdlU3RhdGUgc3RhdGUpCiB7CiAgICAgaWYgKG1fY2FuY2VsQnV0dG9uKQotICAgICAg
ICB0b1JlbmRlclNlYXJjaEZpZWxkKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSktPnVwZGF0ZUNhbmNl
bEJ1dHRvblZpc2liaWxpdHkoKTsKKyAgICAgICAgdG9SZW5kZXJTZWFyY2hGaWVsZChlbGVtZW50
KCkucmVuZGVyZXIoKSktPnVwZGF0ZUNhbmNlbEJ1dHRvblZpc2liaWxpdHkoKTsKIAogICAgIC8v
IElmIHRoZSBpbmNyZW1lbnRhbCBhdHRyaWJ1dGUgaXMgc2V0LCB0aGVuIGRpc3BhdGNoIHRoZSBz
ZWFyY2ggZXZlbnQKICAgICBpZiAoc2VhcmNoRXZlbnRzU2hvdWxkQmVEaXNwYXRjaGVkKCkpCkBA
IC0xOTUsNyArMTk0LDcgQEAgdm9pZCBTZWFyY2hJbnB1dFR5cGU6OmRpZFNldFZhbHVlQnlVc2Vy
RWRpdChWYWx1ZUNoYW5nZVN0YXRlIHN0YXRlKQogCiBib29sIFNlYXJjaElucHV0VHlwZTo6c2l6
ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdAog
ewotICAgIHByZWZlcnJlZFNpemUgPSBlbGVtZW50KCktPnNpemUoKTsKKyAgICBwcmVmZXJyZWRT
aXplID0gZWxlbWVudCgpLnNpemUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKaW5kZXggODEwOTA4Yi4uOGVmMzI0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5oCkBAIC00MSwxMiArNDEsMTIgQEAgY2xhc3MgU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uRWxlbWVudDsKIAogY2xhc3MgU2VhcmNoSW5wdXRUeXBlIDog
cHVibGljIEJhc2VUZXh0SW5wdXRUeXBlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxlbWVudCYpOwogCiAgICAgdm9pZCBz
dG9wU2VhcmNoRXZlbnRUaW1lcigpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNlYXJjaElu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgZXhwbGljaXQgU2VhcmNoSW5wdXRUeXBl
KEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIGFkZFNlYXJjaFJlc3VsdCgpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
KikgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1p
dElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0VHlwZS5jcHAK
aW5kZXggODcyNGZmYi4uODQyYjE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9T
dWJtaXRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRU
eXBlLmNwcApAQCAtNDIsNyArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NP
d25QdHI8SW5wdXRUeXBlPiBTdWJtaXRJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50
KiBlbGVtZW50KQorUGFzc093blB0cjxJbnB1dFR5cGU+IFN1Ym1pdElucHV0VHlwZTo6Y3JlYXRl
KEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBT
dWJtaXRJbnB1dFR5cGUoZWxlbWVudCkpOwogfQpAQCAtNTQsOSArNTQsOSBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIFN1Ym1pdElucHV0VHlwZTo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKIAogYm9v
bCBTdWJtaXRJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2Rpbmcs
IGJvb2wpIGNvbnN0CiB7Ci0gICAgaWYgKCFlbGVtZW50KCktPmlzQWN0aXZhdGVkU3VibWl0KCkp
CisgICAgaWYgKCFlbGVtZW50KCkuaXNBY3RpdmF0ZWRTdWJtaXQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGVuY29kaW5nLmFwcGVuZERhdGEoZWxlbWVudCgpLT5uYW1lKCksIGVsZW1l
bnQoKS0+dmFsdWVXaXRoRGVmYXVsdCgpKTsKKyAgICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1l
bnQoKS5uYW1lKCksIGVsZW1lbnQoKS52YWx1ZVdpdGhEZWZhdWx0KCkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC02Nyw3ICs2Nyw3IEBAIGJvb2wgU3VibWl0SW5wdXRUeXBlOjpzdXBwb3J0
c1JlcXVpcmVkKCkgY29uc3QKIAogdm9pZCBTdWJtaXRJbnB1dFR5cGU6OmhhbmRsZURPTUFjdGl2
YXRlRXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAgIFJlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBl
bGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpOworICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBlbGVt
ZW50KHRoaXMtPmVsZW1lbnQoKSk7CiAgICAgaWYgKGVsZW1lbnQtPmlzRGlzYWJsZWRGb3JtQ29u
dHJvbCgpIHx8ICFlbGVtZW50LT5mb3JtKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbGVtZW50
LT5zZXRBY3RpdmF0ZWRTdWJtaXQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1N1Ym1pdElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJbnB1dFR5
cGUuaAppbmRleCBiYmUzNzA4Li5hYzIzYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1N1Ym1pdElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5w
dXRUeXBlLmgKQEAgLTM3LDEwICszNywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFN1Ym1pdElucHV0VHlwZSA6IHB1YmxpYyBCYXNlQnV0dG9uSW5wdXRUeXBlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShIVE1MSW5wdXRFbGVtZW50
Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElucHV0RWxl
bWVudCYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFN1Ym1pdElucHV0VHlwZShIVE1MSW5w
dXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VCdXR0b25JbnB1dFR5cGUoZWxlbWVudCkgeyB9Cisg
ICAgZXhwbGljaXQgU3VibWl0SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDog
QmFzZUJ1dHRvbklucHV0VHlwZShlbGVtZW50KSB7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RlbGVwaG9uZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RlbGVwaG9uZUlucHV0VHlwZS5jcHAKaW5kZXggMGFkZjY1NC4uOTYw
YzJkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmNwcApAQCAt
MzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8SW5wdXRU
eXBlPiBUZWxlcGhvbmVJbnB1dFR5cGU6OmNyZWF0ZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50
KQorUGFzc093blB0cjxJbnB1dFR5cGU+IFRlbGVwaG9uZUlucHV0VHlwZTo6Y3JlYXRlKEhUTUxJ
bnB1dEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZWxlcGhv
bmVJbnB1dFR5cGUoZWxlbWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZWxlcGhvbmVJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGVsZXBob25lSW5w
dXRUeXBlLmgKaW5kZXggMDI3MjM2NS4uNmQ0ZGQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
bGVwaG9uZUlucHV0VHlwZS5oCkBAIC0zNywxMCArMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBUZWxlcGhvbmVJbnB1dFR5cGUgOiBwdWJsaWMgQmFzZVRleHRJbnB1dFR5cGUg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhUTUxJ
bnB1dEVsZW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0ZShI
VE1MSW5wdXRFbGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgVGVsZXBob25lSW5w
dXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoZWxl
bWVudCkgeyB9CisgICAgZXhwbGljaXQgVGVsZXBob25lSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1l
bnQmIGVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGF0dGFjaCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUmVzcGVjdFNwZWVjaEF0dHJpYnV0ZSgpIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDFkMWM5ZWYuLjgwOWU3ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UZXh0
RmllbGRJbnB1dFR5cGU6OlRleHRGaWVsZElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVt
ZW50KQorVGV4dEZpZWxkSW5wdXRUeXBlOjpUZXh0RmllbGRJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCYgZWxlbWVudCkKICAgICA6IElucHV0VHlwZShlbGVtZW50KQogewogfQpAQCAtNzAsMTIg
KzcwLDEyIEBAIFRleHRGaWVsZElucHV0VHlwZTo6flRleHRGaWVsZElucHV0VHlwZSgpCiAKIGJv
b2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQq
KSBjb25zdAogewotICAgIHJldHVybiBlbGVtZW50KCktPmlzVGV4dEZvcm1Db250cm9sRm9jdXNh
YmxlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQoKS5pc1RleHRGb3JtQ29udHJvbEZvY3VzYWJsZSgp
OwogfQogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6aXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGVsZW1lbnQoKS0+aXNUZXh0Rm9ybUNvbnRyb2xGb2N1c2FibGUoKTsK
KyAgICByZXR1cm4gZWxlbWVudCgpLmlzVGV4dEZvcm1Db250cm9sRm9jdXNhYmxlKCk7CiB9CiAK
IGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc1RleHRGaWVsZCgpIGNvbnN0CkBAIC04NSw3ICs4
NSw3IEBAIGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjppc1RleHRGaWVsZCgpIGNvbnN0CiAKIGJv
b2wgVGV4dEZpZWxkSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZWxlbWVudCgpLT5pc1JlcXVpcmVkKCkgJiYgdmFsdWUuaXNF
bXB0eSgpOworICAgIHJldHVybiBlbGVtZW50KCkuaXNSZXF1aXJlZCgpICYmIHZhbHVlLmlzRW1w
dHkoKTsKIH0KIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OmNhblNldFN1Z2dlc3RlZFZhbHVl
KCkKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnNldFZhbHVlKGNv
bnN0IFN0cmluZyYgc2FuaXRpemVkVmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2UKIHsKICAgICAvLyBH
cmFiIHRoaXMgaW5wdXQgZWxlbWVudCB0byBrZWVwIHJlZmVyZW5jZSBldmVuIGlmIEpTIGV2ZW50
IGhhbmRsZXIKICAgICAvLyBjaGFuZ2VzIGlucHV0IHR5cGUuCi0gICAgUmVmUHRyPEhUTUxJbnB1
dEVsZW1lbnQ+IGlucHV0KGVsZW1lbnQoKSk7CisgICAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IGlu
cHV0KGVsZW1lbnQoKSk7CiAKICAgICAvLyBXZSBkb24ndCBhc2sgSW5wdXRUeXBlOjpzZXRWYWx1
ZSB0byBkaXNwYXRjaCBldmVudHMgYmVjYXVzZQogICAgIC8vIFRleHRGaWVsZElucHV0VHlwZSBk
aXNwYXRjaGVzIGV2ZW50cyBkaWZmZXJlbnQgd2F5IGZyb20gSW5wdXRUeXBlLgpAQCAtMTQyLDE3
ICsxNDIsMTcgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnNldFZhbHVlKGNvbnN0IFN0cmlu
ZyYgc2FuaXRpemVkVmFsdWUsIGJvb2wgdmFsdWVDaGFuZ2UKIAogdm9pZCBUZXh0RmllbGRJbnB1
dFR5cGU6OmhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICBp
ZiAoIWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQorICAgIGlmICghZWxlbWVudCgpLmZvY3VzZWQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQo
KS5mcmFtZSgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5lZGl0b3IoKS5kb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoZWxlbWVudCgpLCBldmVudCkpCisgICAgRnJhbWUqIGZyYW1lID0g
ZWxlbWVudCgpLmRvY3VtZW50KCkuZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+
ZWRpdG9yKCkuZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KCZlbGVtZW50KCksIGV2ZW50KSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCiB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50Rm9yU3BpbkJ1dHRvbihL
ZXlib2FyZEV2ZW50KiBldmVudCkKIHsKLSAgICBpZiAoZWxlbWVudCgpLT5pc0Rpc2FibGVkT3JS
ZWFkT25seSgpKQorICAgIGlmIChlbGVtZW50KCkuaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGNvbnN0IFN0cmluZyYga2V5ID0gZXZlbnQtPmtleUlkZW50aWZp
ZXIoKTsKICAgICBpZiAoa2V5ID09ICJVcCIpCkBAIC0xNzIsOCArMTcyLDggQEAgdm9pZCBUZXh0
RmllbGRJbnB1dFR5cGU6OmZvcndhcmRFdmVudChFdmVudCogZXZlbnQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGVsZW1lbnQoKS0+cmVuZGVyZXIoKSAmJiAoZXZlbnQt
PmlzTW91c2VFdmVudCgpIHx8IGV2ZW50LT5pc0RyYWdFdmVudCgpIHx8IGV2ZW50LT5oYXNJbnRl
cmZhY2UoZXZlbnROYW1lcygpLmludGVyZmFjZUZvcldoZWVsRXZlbnQpIHx8IGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmJsdXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5mb2N1c0V2ZW50KSkgewotICAgICAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUq
IHJlbmRlclRleHRDb250cm9sID0gdG9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVu
dCgpLT5yZW5kZXJlcigpKTsKKyAgICBpZiAoZWxlbWVudCgpLnJlbmRlcmVyKCkgJiYgKGV2ZW50
LT5pc01vdXNlRXZlbnQoKSB8fCBldmVudC0+aXNEcmFnRXZlbnQoKSB8fCBldmVudC0+aGFzSW50
ZXJmYWNlKGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JXaGVlbEV2ZW50KSB8fCBldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuZm9jdXNFdmVudCkpIHsKKyAgICAgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KiByZW5kZXJUZXh0Q29udHJvbCA9IHRvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lKGVsZW1l
bnQoKS5yZW5kZXJlcigpKTsKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmJsdXJFdmVudCkgewogICAgICAgICAgICAgaWYgKFJlbmRlckJveCogaW5uZXJUZXh0UmVu
ZGVyZXIgPSBpbm5lclRleHRFbGVtZW50KCktPnJlbmRlckJveCgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKFJlbmRlckxheWVyKiBpbm5lckxheWVyID0gaW5uZXJUZXh0UmVuZGVyZXItPmxheWVy
KCkpIHsKQEAgLTE4NiwxNCArMTg2LDE0IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpmb3J3
YXJkRXZlbnQoRXZlbnQqIGV2ZW50KQogICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmZvY3VzRXZlbnQpCiAgICAgICAgICAgICByZW5kZXJUZXh0Q29udHJv
bC0+Y2Fwc0xvY2tTdGF0ZU1heUhhdmVDaGFuZ2VkKCk7CiAKLSAgICAgICAgZWxlbWVudCgpLT5m
b3J3YXJkRXZlbnQoZXZlbnQpOworICAgICAgICBlbGVtZW50KCkuZm9yd2FyZEV2ZW50KGV2ZW50
KTsKICAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpoYW5kbGVCbHVyRXZlbnQo
KQogewogICAgIElucHV0VHlwZTo6aGFuZGxlQmx1ckV2ZW50KCk7Ci0gICAgZWxlbWVudCgpLT5l
bmRFZGl0aW5nKCk7CisgICAgZWxlbWVudCgpLmVuZEVkaXRpbmcoKTsKIH0KIAogYm9vbCBUZXh0
RmllbGRJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdEltcGxpY2l0bHkoRXZlbnQqIGV2ZW50KQpAQCAt
MjAzLDE0ICsyMDMsMTMgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZFN1Ym1pdElt
cGxpY2l0bHkoRXZlbnQqIGV2ZW50KQogCiBSZW5kZXJPYmplY3QqIFRleHRGaWVsZElucHV0VHlw
ZTo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGVsZW1lbnQoKSk7IC8vIEZJWE1FOiBlbGVtZW50KCkgc2hvdWxkIHJl
dHVybiBhIHJlZmVyZW5jZS4KLSAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lKCplbGVtZW50KCkpOworICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUoZWxlbWVudCgpKTsKIH0KIAogYm9vbCBUZXh0RmllbGRJbnB1
dFR5cGU6Om5lZWRzQ29udGFpbmVyKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNI
KQotICAgIHJldHVybiBlbGVtZW50KCktPmlzU3BlZWNoRW5hYmxlZCgpOworICAgIHJldHVybiBl
bGVtZW50KCkuaXNTcGVlY2hFbmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpAQCAtMjE4LDMwICsyMTcsMzAgQEAgYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6Om5lZWRz
Q29udGFpbmVyKCkgY29uc3QKIAogYm9vbCBUZXh0RmllbGRJbnB1dFR5cGU6OnNob3VsZEhhdmVT
cGluQnV0dG9uKCkgY29uc3QKIHsKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBlbGVtZW50KCkt
PmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudCgpLmRvY3VtZW50
KCk7CiAgICAgUmVmUHRyPFJlbmRlclRoZW1lPiB0aGVtZSA9IGRvY3VtZW50LnBhZ2UoKSA/IGRv
Y3VtZW50LnBhZ2UoKS0+dGhlbWUoKSA6IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKTsKLSAg
ICByZXR1cm4gdGhlbWUtPnNob3VsZEhhdmVTcGluQnV0dG9uKGVsZW1lbnQoKSk7CisgICAgcmV0
dXJuIHRoZW1lLT5zaG91bGRIYXZlU3BpbkJ1dHRvbigmZWxlbWVudCgpKTsKIH0KIAogdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAgIEFTU0VSVChl
bGVtZW50KCktPnNoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQoKS5zaGFkb3dSb290
KCkpOwogCiAgICAgQVNTRVJUKCFtX2lubmVyVGV4dCk7CiAgICAgQVNTRVJUKCFtX2lubmVyQmxv
Y2spOwogICAgIEFTU0VSVCghbV9pbm5lclNwaW5CdXR0b24pOwogCi0gICAgRG9jdW1lbnQmIGRv
Y3VtZW50ID0gZWxlbWVudCgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9
IGVsZW1lbnQoKS5kb2N1bWVudCgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZVNwaW5CdXR0b24gPSB0
aGlzLT5zaG91bGRIYXZlU3BpbkJ1dHRvbigpOwogICAgIGJvb2wgY3JlYXRlc0NvbnRhaW5lciA9
IHNob3VsZEhhdmVTcGluQnV0dG9uIHx8IG5lZWRzQ29udGFpbmVyKCk7CiAKICAgICBtX2lubmVy
VGV4dCA9IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKCZkb2N1bWVudCk7CiAg
ICAgaWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7Ci0gICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChtX2lubmVyVGV4dCwgSUdOT1JFX0VYQ0VQVElPTik7
CisgICAgICAgIGVsZW1lbnQoKS51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKG1f
aW5uZXJUZXh0LCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jv
b3QoKTsKKyAgICBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gZWxlbWVudCgpLnVzZXJBZ2VudFNo
YWRvd1Jvb3QoKTsKICAgICBtX2NvbnRhaW5lciA9IFRleHRDb250cm9sSW5uZXJDb250YWluZXI6
OmNyZWF0ZSgmZG9jdW1lbnQpOwogICAgIG1fY29udGFpbmVyLT5zZXRQc2V1ZG8oQXRvbWljU3Ry
aW5nKCItd2Via2l0LXRleHRmaWVsZC1kZWNvcmF0aW9uLWNvbnRhaW5lciIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZCht
X2NvbnRhaW5lciwgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC0yNTIsNyArMjUxLDcgQEAgdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogCiAjaWYgRU5BQkxFKElO
UFVUX1NQRUVDSCkKICAgICBBU1NFUlQoIW1fc3BlZWNoQnV0dG9uKTsKLSAgICBpZiAoZWxlbWVu
dCgpLT5pc1NwZWVjaEVuYWJsZWQoKSkgeworICAgIGlmIChlbGVtZW50KCkuaXNTcGVlY2hFbmFi
bGVkKCkpIHsKICAgICAgICAgbV9zcGVlY2hCdXR0b24gPSBJbnB1dEZpZWxkU3BlZWNoQnV0dG9u
RWxlbWVudDo6Y3JlYXRlKCZkb2N1bWVudCk7CiAgICAgICAgIG1fY29udGFpbmVyLT5hcHBlbmRD
aGlsZChtX3NwZWVjaEJ1dHRvbiwgSUdOT1JFX0VYQ0VQVElPTik7CiAgICAgfQpAQCAtMzcxLDE5
ICszNzAsMTkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OmhhbmRsZUJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KgogICAgIC8vIFdlIHVzZSBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OnRleHQoKSBpbnN0ZWFkIG9mIElucHV0RWxlbWVudDo6dmFs
dWUoKQogICAgIC8vIGJlY2F1c2UgdGhleSBjYW4gYmUgbWlzbWF0Y2hlZCBieSBzYW5pdGl6ZVZh
bHVlKCkgaW4KICAgICAvLyBIVE1MSW5wdXRFbGVtZW50OjpzdWJ0cmVlSGFzQ2hhbmdlZCgpIGlu
IHNvbWUgY2FzZXMuCi0gICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gbnVtR3JhcGhlbWVDbHVzdGVy
cyhlbGVtZW50KCktPmlubmVyVGV4dFZhbHVlKCkpOworICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9
IG51bUdyYXBoZW1lQ2x1c3RlcnMoZWxlbWVudCgpLmlubmVyVGV4dFZhbHVlKCkpOwogCiAgICAg
Ly8gc2VsZWN0aW9uTGVuZ3RoIHJlcHJlc2VudHMgdGhlIHNlbGVjdGlvbiBsZW5ndGggb2YgdGhp
cyB0ZXh0IGZpZWxkIHRvIGJlCiAgICAgLy8gcmVtb3ZlZCBieSB0aGlzIGluc2VydGlvbi4KICAg
ICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgbm8gZm9jdXMsIHdlIGRvbid0IG5lZWQgdG8gdGFr
ZSBhY2NvdW50IG9mIHRoZQogICAgIC8vIHNlbGVjdGlvbiBsZW5ndGguIFRoZSBzZWxlY3Rpb24g
aXMgdGhlIHNvdXJjZSBvZiB0ZXh0IGRyYWctYW5kLWRyb3AgaW4KICAgICAvLyB0aGF0IGNhc2Us
IGFuZCBub3RoaW5nIGluIHRoZSB0ZXh0IGZpZWxkIHdpbGwgYmUgcmVtb3ZlZC4KLSAgICB1bnNp
Z25lZCBzZWxlY3Rpb25MZW5ndGggPSBlbGVtZW50KCktPmZvY3VzZWQoKSA/IG51bUdyYXBoZW1l
Q2x1c3RlcnMocGxhaW5UZXh0KGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKSkgOiAwOworICAgIHVu
c2lnbmVkIHNlbGVjdGlvbkxlbmd0aCA9IGVsZW1lbnQoKS5mb2N1c2VkKCkgPyBudW1HcmFwaGVt
ZUNsdXN0ZXJzKHBsYWluVGV4dChlbGVtZW50KCkuZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKSkgOiAwOwogICAgIEFT
U0VSVChvbGRMZW5ndGggPj0gc2VsZWN0aW9uTGVuZ3RoKTsKIAogICAgIC8vIFNlbGVjdGVkIGNo
YXJhY3RlcnMgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBuZXh0IHRleHQgZXZlbnQuCiAgICAgdW5z
aWduZWQgYmFzZUxlbmd0aCA9IG9sZExlbmd0aCAtIHNlbGVjdGlvbkxlbmd0aDsKLSAgICB1bnNp
Z25lZCBtYXhMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaXNUZXh0VHlwZSgpID8gZWxl
bWVudCgpLT5tYXhMZW5ndGgoKSA6IEhUTUxJbnB1dEVsZW1lbnQ6Om1heGltdW1MZW5ndGgpOyAv
LyBtYXhMZW5ndGggY2FuIG5ldmVyIGJlIG5lZ2F0aXZlLgorICAgIHVuc2lnbmVkIG1heExlbmd0
aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpc1RleHRUeXBlKCkgPyBlbGVtZW50KCkubWF4TGVu
Z3RoKCkgOiBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtTGVuZ3RoKTsgLy8gbWF4TGVuZ3RoIGNh
biBuZXZlciBiZSBuZWdhdGl2ZS4KICAgICB1bnNpZ25lZCBhcHBlbmRhYmxlTGVuZ3RoID0gbWF4
TGVuZ3RoID4gYmFzZUxlbmd0aCA/IG1heExlbmd0aCAtIGJhc2VMZW5ndGggOiAwOwogCiAgICAg
Ly8gVHJ1bmNhdGUgdGhlIGluc2VydGVkIHRleHQgdG8gYXZvaWQgdmlvbGF0aW5nIHRoZSBtYXhM
ZW5ndGggYW5kIG90aGVyIGNvbnN0cmFpbnRzLgpAQCAtNDA4LDcgKzQwNyw3IEBAIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogewogICAgIGlmICghc3Vw
cG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIHBsYWNlaG9s
ZGVyVGV4dCA9IGVsZW1lbnQoKS0+c3RyaXBwZWRQbGFjZWhvbGRlcigpOworICAgIFN0cmluZyBw
bGFjZWhvbGRlclRleHQgPSBlbGVtZW50KCkuc3RyaXBwZWRQbGFjZWhvbGRlcigpOwogICAgIGlm
IChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNlaG9sZGVy
KSB7CiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxk
KG1fcGxhY2Vob2xkZXIuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwpAQCAtNDE3LDkgKzQx
Niw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghbV9wbGFjZWhvbGRlcikgewotICAgICAg
ICBtX3BsYWNlaG9sZGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3Vt
ZW50KCkpOworICAgICAgICBtX3BsYWNlaG9sZGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShl
bGVtZW50KCkuZG9jdW1lbnQoKSk7CiAgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFBzZXVkbyhB
dG9taWNTdHJpbmcoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRh
aW5lci5nZXQoKSA6IGlubmVyVGV4dEVsZW1lbnQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgICAgIGVsZW1lbnQoKS51c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3Bs
YWNlaG9sZGVyLCBtX2NvbnRhaW5lciA/IG1fY29udGFpbmVyLmdldCgpIDogaW5uZXJUZXh0RWxl
bWVudCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiAgICAgbV9wbGFjZWhvbGRlci0+
c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CkBA
IC00MjcsOSArNDI2LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9s
ZGVyVGV4dCgpCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURh
dGFMaXN0JiBsaXN0LCBib29sIG11bHRpcGFydCkgY29uc3QKIHsKICAgICBJbnB1dFR5cGU6OmFw
cGVuZEZvcm1EYXRhKGxpc3QsIG11bHRpcGFydCk7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBk
aXJuYW1lQXR0clZhbHVlID0gZWxlbWVudCgpLT5mYXN0R2V0QXR0cmlidXRlKGRpcm5hbWVBdHRy
KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRpcm5hbWVBdHRyVmFsdWUgPSBlbGVtZW50KCku
ZmFzdEdldEF0dHJpYnV0ZShkaXJuYW1lQXR0cik7CiAgICAgaWYgKCFkaXJuYW1lQXR0clZhbHVl
LmlzTnVsbCgpKQotICAgICAgICBsaXN0LmFwcGVuZERhdGEoZGlybmFtZUF0dHJWYWx1ZSwgZWxl
bWVudCgpLT5kaXJlY3Rpb25Gb3JGb3JtRGF0YSgpKTsKKyAgICAgICAgbGlzdC5hcHBlbmREYXRh
KGRpcm5hbWVBdHRyVmFsdWUsIGVsZW1lbnQoKS5kaXJlY3Rpb25Gb3JGb3JtRGF0YSgpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDQwLDMxICs0MzksMzEgQEAgU3RyaW5nIFRleHRGaWVs
ZElucHV0VHlwZTo6Y29udmVydEZyb21WaXNpYmxlVmFsdWUoY29uc3QgU3RyaW5nJiB2aXNpYmxl
VmFsdWUpIGMKIAogdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkK
IHsKLSAgICBBU1NFUlQoZWxlbWVudCgpLT5yZW5kZXJlcigpKTsKKyAgICBBU1NFUlQoZWxlbWVu
dCgpLnJlbmRlcmVyKCkpOwogCi0gICAgYm9vbCB3YXNDaGFuZ2VkID0gZWxlbWVudCgpLT53YXND
aGFuZ2VkU2luY2VMYXN0Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOwotICAgIGVsZW1lbnQoKS0+
c2V0Q2hhbmdlZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQodHJ1ZSk7CisgICAgYm9v
bCB3YXNDaGFuZ2VkID0gZWxlbWVudCgpLndhc0NoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENo
YW5nZUV2ZW50KCk7CisgICAgZWxlbWVudCgpLnNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJv
bENoYW5nZUV2ZW50KHRydWUpOwogCiAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjYWxsIHNhbml0
aXplVXNlcklucHV0VmFsdWUoKSBmdW5jdGlvbiBoZXJlIGJlY2F1c2UKICAgICAvLyBIVE1MSW5w
dXRFbGVtZW50OjpoYW5kbGVCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGhhcyBhbHJlYWR5IGNh
bGxlZAogICAgIC8vIHNhbml0aXplVXNlcklucHV0VmFsdWUoKS4KICAgICAvLyBzYW5pdGl6ZVZh
bHVlKCkgaXMgbmVlZGVkIGJlY2F1c2UgSU1FIGlucHV0IGRvZXNuJ3QgZGlzcGF0Y2ggQmVmb3Jl
VGV4dEluc2VydGVkRXZlbnQuCi0gICAgZWxlbWVudCgpLT5zZXRWYWx1ZUZyb21SZW5kZXJlcihz
YW5pdGl6ZVZhbHVlKGNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKGVsZW1lbnQoKS0+aW5uZXJUZXh0
VmFsdWUoKSkpKTsKLSAgICBlbGVtZW50KCktPnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShm
YWxzZSk7CisgICAgZWxlbWVudCgpLnNldFZhbHVlRnJvbVJlbmRlcmVyKHNhbml0aXplVmFsdWUo
Y29udmVydEZyb21WaXNpYmxlVmFsdWUoZWxlbWVudCgpLmlubmVyVGV4dFZhbHVlKCkpKSk7Cisg
ICAgZWxlbWVudCgpLnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgLy8g
UmVjYWxjIGZvciA6aW52YWxpZCBjaGFuZ2UuCi0gICAgZWxlbWVudCgpLT5zZXROZWVkc1N0eWxl
UmVjYWxjKCk7CisgICAgZWxlbWVudCgpLnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIAogICAgIGRp
ZFNldFZhbHVlQnlVc2VyRWRpdCh3YXNDaGFuZ2VkID8gVmFsdWVDaGFuZ2VTdGF0ZUNoYW5nZWQg
OiBWYWx1ZUNoYW5nZVN0YXRlTm9uZSk7CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpk
aWRTZXRWYWx1ZUJ5VXNlckVkaXQoVmFsdWVDaGFuZ2VTdGF0ZSBzdGF0ZSkKIHsKLSAgICBpZiAo
IWVsZW1lbnQoKS0+Zm9jdXNlZCgpKQorICAgIGlmICghZWxlbWVudCgpLmZvY3VzZWQoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSBlbGVtZW50KCktPmRvY3VtZW50
KCkuZnJhbWUoKSkgeworICAgIGlmIChGcmFtZSogZnJhbWUgPSBlbGVtZW50KCkuZG9jdW1lbnQo
KS5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBWYWx1ZUNoYW5nZVN0YXRlTm9uZSkK
LSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoZWxl
bWVudCgpKTsKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHREaWRDaGFuZ2VJblRleHRGaWVs
ZChlbGVtZW50KCkpOworICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHRGaWVsZERpZEJl
Z2luRWRpdGluZygmZWxlbWVudCgpKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnRleHREaWRD
aGFuZ2VJblRleHRGaWVsZCgmZWxlbWVudCgpKTsKICAgICB9CiB9CiAKQEAgLTQ4MCwzMiArNDc5
LDMyIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpzcGluQnV0dG9uU3RlcFVwKCkKIAogdm9p
ZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZUlubmVyVGV4dFZhbHVlKCkKIHsKLSAgICBpZiAo
IWVsZW1lbnQoKS0+c3VnZ2VzdGVkVmFsdWUoKS5pc051bGwoKSkgewotICAgICAgICBlbGVtZW50
KCktPnNldElubmVyVGV4dFZhbHVlKGVsZW1lbnQoKS0+c3VnZ2VzdGVkVmFsdWUoKSk7Ci0gICAg
ICAgIGVsZW1lbnQoKS0+dXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGZhbHNlKTsKLSAgICB9
IGVsc2UgaWYgKCFlbGVtZW50KCktPmZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSkg
eworICAgIGlmICghZWxlbWVudCgpLnN1Z2dlc3RlZFZhbHVlKCkuaXNOdWxsKCkpIHsKKyAgICAg
ICAgZWxlbWVudCgpLnNldElubmVyVGV4dFZhbHVlKGVsZW1lbnQoKS5zdWdnZXN0ZWRWYWx1ZSgp
KTsKKyAgICAgICAgZWxlbWVudCgpLnVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7
CisgICAgfSBlbHNlIGlmICghZWxlbWVudCgpLmZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVy
ZXIoKSkgewogICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbmRlcmVyIHZhbHVlIGlmIHRoZSBmb3Jt
Q29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkgZmxhZyBpcyBmYWxzZS4KICAgICAgICAgLy8g
SXQgcHJvdGVjdHMgYW4gdW5hY2NlcHRhYmxlIHJlbmRlcmVyIHZhbHVlIGZyb20gYmVpbmcgb3Zl
cndyaXR0ZW4gd2l0aCB0aGUgRE9NIHZhbHVlLgotICAgICAgICBlbGVtZW50KCktPnNldElubmVy
VGV4dFZhbHVlKHZpc2libGVWYWx1ZSgpKTsKLSAgICAgICAgZWxlbWVudCgpLT51cGRhdGVQbGFj
ZWhvbGRlclZpc2liaWxpdHkoZmFsc2UpOworICAgICAgICBlbGVtZW50KCkuc2V0SW5uZXJUZXh0
VmFsdWUodmlzaWJsZVZhbHVlKCkpOworICAgICAgICBlbGVtZW50KCkudXBkYXRlUGxhY2Vob2xk
ZXJWaXNpYmlsaXR5KGZhbHNlKTsKICAgICB9CiB9CiAKIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBl
Ojpmb2N1c0FuZFNlbGVjdFNwaW5CdXR0b25Pd25lcigpCiB7Ci0gICAgUmVmUHRyPEhUTUxJbnB1
dEVsZW1lbnQ+IGlucHV0KGVsZW1lbnQoKSk7CisgICAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IGlu
cHV0KGVsZW1lbnQoKSk7CiAgICAgaW5wdXQtPmZvY3VzKCk7CiAgICAgaW5wdXQtPnNlbGVjdCgp
OwogfQogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3BpbkJ1dHRvblJlc3BvbmRU
b01vdXNlRXZlbnRzKCkKIHsKLSAgICByZXR1cm4gIWVsZW1lbnQoKS0+aXNEaXNhYmxlZE9yUmVh
ZE9ubHkoKTsKKyAgICByZXR1cm4gIWVsZW1lbnQoKS5pc0Rpc2FibGVkT3JSZWFkT25seSgpOwog
fQogCiBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3BpbkJ1dHRvblJlc3BvbmRUb1do
ZWVsRXZlbnRzKCkKIHsKLSAgICByZXR1cm4gc2hvdWxkU3BpbkJ1dHRvblJlc3BvbmRUb01vdXNl
RXZlbnRzKCkgJiYgZWxlbWVudCgpLT5mb2N1c2VkKCk7CisgICAgcmV0dXJuIHNob3VsZFNwaW5C
dXR0b25SZXNwb25kVG9Nb3VzZUV2ZW50cygpICYmIGVsZW1lbnQoKS5mb2N1c2VkKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5oCmluZGV4IGYzZTY4ZTEuLjU4M2E3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RmllbGRJbnB1dFR5cGUuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBGb3JtRGF0YUxpc3Q7CiAv
LyBJdCBzdXBwb3J0cyBub3Qgb25seSB0aGUgdHlwZXMgZm9yIEJhc2VUZXh0SW5wdXRUeXBlIGJ1
dCBhbHNvIHR5cGU9bnVtYmVyLgogY2xhc3MgVGV4dEZpZWxkSW5wdXRUeXBlIDogcHVibGljIElu
cHV0VHlwZSwgcHJvdGVjdGVkIFNwaW5CdXR0b25FbGVtZW50OjpTcGluQnV0dG9uT3duZXIgewog
cHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFRleHRGaWVsZElucHV0VHlwZShIVE1MSW5wdXRFbGVt
ZW50Kik7CisgICAgZXhwbGljaXQgVGV4dEZpZWxkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQm
KTsKICAgICB2aXJ0dWFsIH5UZXh0RmllbGRJbnB1dFR5cGUoKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuU2V0U3VnZ2VzdGVkVmFsdWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
S2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRJbnB1dFR5cGUuY3BwCmluZGV4IGY3YTliNTguLjI0NjE0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0SW5wdXRUeXBlLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLVBhc3NPd25QdHI8SW5wdXRUeXBlPiBU
ZXh0SW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKK1Bhc3NPd25Q
dHI8SW5wdXRUeXBlPiBUZXh0SW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0RWxlbWVudCYgZWxl
bWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHRJbnB1dFR5cGUoZWxlbWVudCkp
OwogfQpAQCAtNDcsNyArNDcsNyBAQCBQYXNzT3duUHRyPElucHV0VHlwZT4gVGV4dElucHV0VHlw
ZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiB2b2lkIFRleHRJbnB1dFR5cGU6
OmF0dGFjaCgpCiB7CiAgICAgVGV4dEZpZWxkSW5wdXRUeXBlOjphdHRhY2goKTsKLSAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUgPSBlbGVtZW50KCktPmZhc3RHZXRBdHRyaWJ1dGUodHlwZUF0
dHIpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSA9IGVsZW1lbnQoKS5mYXN0R2V0QXR0
cmlidXRlKHR5cGVBdHRyKTsKICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodHlwZSwgSW5wdXRU
eXBlTmFtZXM6OmRhdGV0aW1lKCkpKQogICAgICAgICBvYnNlcnZlRmVhdHVyZUlmVmlzaWJsZShG
ZWF0dXJlT2JzZXJ2ZXI6OklucHV0VHlwZURhdGVUaW1lRmFsbGJhY2spOwogICAgIGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKHR5cGUsIElucHV0VHlwZU5hbWVzOjp3ZWVrKCkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRJbnB1dFR5cGUuaAppbmRleCBlZjMyMmJhLi4xZjBkN2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRJbnB1dFR5cGUuaApAQCAtMzcsMTAgKzM3LDEwIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgVGV4dElucHV0VHlwZSA6IHB1YmxpYyBCYXNlVGV4dElucHV0VHlwZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElu
cHV0RWxlbWVudCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPElucHV0VHlwZT4gY3JlYXRlKEhU
TUxJbnB1dEVsZW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBUZXh0SW5wdXRUeXBl
KEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoZWxlbWVudCkg
eyB9CisgICAgZXhwbGljaXQgVGV4dElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRy
b2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNob3VsZFJlc3BlY3RT
cGVlY2hBdHRyaWJ1dGUoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVVJMSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmNw
cAppbmRleCA5OWRkMDg5Li41MDdlMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1VSTElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUu
Y3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0
cjxJbnB1dFR5cGU+IFVSTElucHV0VHlwZTo6Y3JlYXRlKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1l
bnQpCitQYXNzT3duUHRyPElucHV0VHlwZT4gVVJMSW5wdXRUeXBlOjpjcmVhdGUoSFRNTElucHV0
RWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVSTElucHV0VHlw
ZShlbGVtZW50KSk7CiB9CkBAIC02Miw3ICs2Miw3IEBAIGJvb2wgVVJMSW5wdXRUeXBlOjp0eXBl
TWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIAogYm9vbCBVUkxJbnB1dFR5
cGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5cGVNaXNtYXRjaEZvcihl
bGVtZW50KCktPnZhbHVlKCkpOworICAgIHJldHVybiB0eXBlTWlzbWF0Y2hGb3IoZWxlbWVudCgp
LnZhbHVlKCkpOwogfQogCiBTdHJpbmcgVVJMSW5wdXRUeXBlOjp0eXBlTWlzbWF0Y2hUZXh0KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5oCmluZGV4IDQ2N2RlMGUuLmUzZWY2Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMSW5wdXRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5cGUuaApAQCAtMzcsMTAgKzM3LDEwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVVJMSW5wdXRUeXBlIDogcHVibGljIEJhc2VUZXh0SW5w
dXRUeXBlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnB1dFR5cGU+IGNyZWF0
ZShIVE1MSW5wdXRFbGVtZW50Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBj
cmVhdGUoSFRNTElucHV0RWxlbWVudCYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFVSTElu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGVs
ZW1lbnQpIHsgfQorICAgIGV4cGxpY2l0IFVSTElucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBl
bGVtZW50KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9y
bUNvbnRyb2xUeXBlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNt
YXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBPVkVSUklERTsK
</data>
<flag name="review"
          id="233841"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="233845"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>