<?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>102608</bug_id>
          
          <creation_ts>2012-11-17 22:35:43 -0800</creation_ts>
          <short_desc>Element::parseAttribute() should take name &amp; value as separate arguments.</short_desc>
          <delta_ts>2012-11-18 08:55:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>102598</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbarton</cc>
    
    <cc>dglazkov</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770081</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-17 22:35:43 -0800</bug_when>
    <thetext>parseAttribute() currently takes a const Attribute&amp;, so we&apos;re forced to create a temporary Attribute at the call site in Element::attributeChanged().
This causes measurable refcount churn on the DOM/CreateNodes performance test (~1% of samples.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770083</commentid>
    <comment_count>1</comment_count>
      <attachid>174841</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-17 22:38:36 -0800</bug_when>
    <thetext>Created attachment 174841
Patch

Let&apos;s see how EWS likes this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770084</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 22:41:23 -0800</bug_when>
    <thetext>Attachment 174841 did not pass style-queue:

Source/WebCore/svg/SVGLineElement.cpp:99:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGLineElement.cpp:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGMarkerElement.cpp:155:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGMarkerElement.cpp:156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGCursorElement.cpp:92:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGCursorElement.cpp:93:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGMaskElement.cpp:122:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGMaskElement.cpp:123:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGPatternElement.cpp:144:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGPatternElement.cpp:145:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGPatternElement.cpp:146:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGPatternElement.cpp:147:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGImageElement.cpp:130:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGImageElement.cpp:131:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGImageElement.cpp:132:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGSVGElement.cpp:272:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGSVGElement.cpp:273:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGSVGElement.cpp:274:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGSVGElement.cpp:275:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGUseElement.cpp:171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGUseElement.cpp:172:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGUseElement.cpp:173:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/html/HTMLElement.cpp:239:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Source/WebCore/svg/SVGEllipseElement.cpp:100:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGEllipseElement.cpp:101:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGCircleElement.cpp:96:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGCircleElement.cpp:97:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGFilterElement.cpp:153:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGFilterElement.cpp:154:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGRecFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
tElement.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGRectElement.cpp:114:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGTextContentElement.cpp:266:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGForeignObjectElement.cpp:103:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGForeignObjectElement.cpp:104:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 34 in 229 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>770095</commentid>
    <comment_count>3</comment_count>
      <attachid>174841</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-17 23:56:59 -0800</bug_when>
    <thetext>Comment on attachment 174841
Patch

Attachment 174841 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14861797

New failing tests:
inspector-protocol/debugger-terminate-dedicated-worker-while-paused.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770123</commentid>
    <comment_count>4</comment_count>
      <attachid>174841</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-18 08:26:52 -0800</bug_when>
    <thetext>Comment on attachment 174841
Patch

Pretty sure that test failure is a flake, so marking r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770125</commentid>
    <comment_count>5</comment_count>
      <attachid>174841</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-18 08:28:33 -0800</bug_when>
    <thetext>Comment on attachment 174841
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770133</commentid>
    <comment_count>6</comment_count>
      <attachid>174841</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 08:55:48 -0800</bug_when>
    <thetext>Comment on attachment 174841
Patch

Clearing flags on attachment: 174841

Committed r135069: &lt;http://trac.webkit.org/changeset/135069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770134</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 08:55:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174841</attachid>
            <date>2012-11-17 22:38:36 -0800</date>
            <delta_ts>2012-11-18 08:55:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>ews-102608.diff</filename>
            <type>text/plain</type>
            <size>354905</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMzhlODIxLi4yMjlmNGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDcy
IEBACiAyMDEyLTExLTE3ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAorICAg
ICAgICBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSgpIHNob3VsZCB0YWtlIG5hbWUgJiB2YWx1ZSBh
cyBzZXBhcmF0ZSBhcmd1bWVudHMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEwMjYw
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgdGhlIHNpZ25hdHVyZSBvZiBwYXJzZUF0dHJpYnV0ZSgpIHRvIHRha2UgYSBRdWFsaWZpZWRO
YW1lL0F0b21pY1N0cmluZyBjb21ibyBpbnN0ZWFkCisgICAgICAgIG9mIGFuIEF0dHJpYnV0ZS4g
VGhpcyBsZXRzIHVzIHBhc3MgYXZvaWQgcmVmY291bnQgY2h1cm4gaW4gRWxlbWVudDo6YXR0cmli
dXRlQ2hhbmdlZCgpIHNpbmNlCisgICAgICAgIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IEF0dHJpYnV0
ZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgIFRoaXMgd2FzIHN1cnByaXNpbmds
eSBob3QgKH4xJSkgb24gdGhlIERPTS9DcmVhdGVOb2RlcyBwZXJmb3JtYW5jZSB0ZXN0LgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdEV2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKyAgICAgICAgKiBkb20vU3R5bGVk
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKFN0eWxlZEVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxBbmNob3JFbGVtZW50Lmg6CisgICAgICAgIChIVE1MQW5jaG9yRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQXBwbGV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEFw
cGxldEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxBcHBsZXRFbGVtZW50KToKKyAgICAgICAgKiBo
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5oOgor
ICAgICAgICAoSFRNTEFyZWFFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxCYXNlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQmFzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxCYXNlRWxlbWVudC5oOgorICAgICAgICAoSFRNTEJhc2VF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxCb2R5RWxlbWVudC5oOgorICAgICAgICAoSFRNTEJvZHlFbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0
b25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MQnV0dG9uRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6CisgICAgICAgIChIVE1MQ2FudmFzRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTERldGFpbHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1M
RGV0YWlsc0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxEZXRhaWxzRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmRpckF0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKEhU
TUxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEVtYmVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAq
IGh0bWwvSFRNTEVtYmVkRWxlbWVudC5oOgorICAgICAgICAoSFRNTEVtYmVkRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBo
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
SFRNTEZvcm1FbGVtZW50Lmg6CisgICAgICAgIChIVE1MRm9ybUVsZW1lbnQpOgorICAgICAgICAq
IGh0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50
Lmg6CisgICAgICAgIChIVE1MRnJhbWVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNl
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5o
OgorICAgICAgICAoSFRNTEZyYW1lRWxlbWVudEJhc2UpOgorICAgICAgICAqIGh0bWwvSFRNTEZy
YW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50Lmg6
CisgICAgICAgIChIVE1MRnJhbWVTZXRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJRnJh
bWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAg
ICAoSFRNTElGcmFtZUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChIVE1MSW1hZ2VF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6
CisgICAgICAgICogaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MS2V5Z2VuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TEtleWdlbkVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxLZXlnZW5FbGVtZW50KToKKyAgICAgICAg
KiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExJRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTExJRWxlbWVudC5oOgorICAg
ICAgICAoSFRNTExJRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MTGlua0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxMaW5rRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxNYXBFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTE1ldGFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZXRhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGFFbGVt
ZW50Lmg6CisgICAgICAgIChIVE1MTWV0YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
dGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50Lmg6CisgICAgICAg
IChIVE1MTWV0ZXJFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxPTGlzdEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9MaXN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTE9MaXN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTE9MaXN0RWxl
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0
bWwvSFRNTE9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxPYmplY3RFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE9wdEdyb3VwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRN
TE9wdEdyb3VwRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25FbGVtZW50Lmg6CisgICAgICAgIChIVE1MT3B0aW9u
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MT3V0cHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAq
IGh0bWwvSFRNTE91dHB1dEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxPdXRwdXRFbGVtZW50KToK
KyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
SFRNTFByb2dyZXNzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNjcmlwdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50Lmg6CisgICAgICAgIChIVE1MU2Ny
aXB0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNlTXVsdGlwbGVBdHRyaWJ1dGUpOgor
ICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxT
dHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5oOgorICAgICAg
ICAoSFRNTFN0eWxlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVDZWxsRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaDoKKyAgICAgICAg
KEhUTUxUYWJsZUNlbGxFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oOgorICAgICAgICAo
SFRNTFRhYmxlQ29sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUYWJsZUVs
ZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgIChIVE1MVGV4dEFyZWFFbGVt
ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAg
ICAoSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MVHJhY2tFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAoSFRNTFZpZGVvRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oOgorICAgICAgICAoSFRNTENvbnRl
bnRFbGVtZW50KToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogbWF0
aG1sL01hdGhNTEVsZW1lbnQuaDoKKyAgICAgICAgKE1hdGhNTEVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdBRWxlbWVudC5oOgorICAgICAgICAoU1ZH
QUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oOgorICAgICAgICAoU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3Jt
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudC5oOgorICAgICAgICAoU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5oOgorICAgICAgICAoU1ZHQW5pbWF0aW9uRWxlbWVudCk6CisgICAgICAgICogc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50Lmg6Cisg
ICAgICAgIChTVkdDaXJjbGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFNW
R0NsaXBQYXRoRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Lmg6CisgICAgICAgIChTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgIChTVkdDdXJzb3JFbGVt
ZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50OjpyZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50
Lmg6CisgICAgICAgIChTVkdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0Vs
bGlwc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQuaDoKKyAgICAgICAgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5k
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5oOgorICAgICAgICAoU1ZHRkVCbGVuZEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5oOgorICAgICAgICAoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAoU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oOgorICAg
ICAgICAoU1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJp
eEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKFNWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50Lmg6CisgICAgICAgIChTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAgICAgIChTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAoU1ZHRkVJbWFnZUVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5oOgorICAgICAgICAoU1ZHRkVMaWdodEVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5oOgorICAgICAgICAoU1ZHRkVNZXJnZU5vZGVFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAoU1ZHRkVPZmZzZXRFbGVtZW50KToK
KyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAg
KFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAoU1ZH
RkVUaWxlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6CisgICAgICAgIChT
VkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0ZpbHRlckVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZHRml0VG9WaWV3Qm94Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRGYWNl
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUVsZW1l
bnQuaDoKKyAgICAgICAgKFNWR0ZvbnRGYWNlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0Zv
bnRGYWNlVXJpRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RmFjZVVyaUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9udEZhY2VVcmlFbGVt
ZW50Lmg6CisgICAgICAgIChTVkdGb250RmFjZVVyaUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWdu
T2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5oOgorICAgICAgICAoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpOgorICAg
ICAgICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHRWxlbWVudC5oOgorICAgICAg
ICAoU1ZHR0VsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdHbHlwaEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHR2x5cGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0dseXBoRWxlbWVudC5oOgorICAgICAgICAoU1ZHR2x5cGhFbGVtZW50KToKKyAg
ICAgICAgKiBzdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dseXBoUmVmRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdHbHlw
aFJlZkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR0lt
YWdlRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0xhbmdTcGFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
TGFuZ1NwYWNlLmg6CisgICAgICAgIChTVkdMYW5nU3BhY2UpOgorICAgICAgICAqIHN2Zy9TVkdM
aW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAoU1ZH
TGluZUVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oOgorICAgICAg
ICAoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTVBhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01QYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdNUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR01QYXRo
RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgIChTVkdNYXJrZXJFbGVtZW50KToKKyAgICAg
ICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuaDoK
KyAgICAgICAgKFNWR01hc2tFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1BhdGhFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0dGVybkVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1BhdHRlcm5FbGVtZW50KToKKyAgICAgICAg
KiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAg
ICAgICAgKFNWR1BvbHlFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aDoKKyAgICAgICAgKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NW
R1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgIChT
VkdSZWN0RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgIChTVkdTVkdFbGVtZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHU2NyaXB0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTY3JpcHRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaDoK
KyAgICAgICAgKFNWR1NjcmlwdEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUp
OgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5oOgorICAgICAgICAoU1ZHU3RvcEVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1N0
eWxlRWxlbWVudC5oOgorICAgICAgICAoU1ZHU3R5bGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAg
ICAgICAgKFNWR1N0eWxlZEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5oOgorICAgICAgICAoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQpOgorICAgICAgICAqIHN2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1N5bWJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
U3ltYm9sRWxlbWVudC5oOgorICAgICAgICAoU1ZHU3ltYm9sRWxlbWVudCk6CisgICAgICAgICog
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50Lmg6CisgICAg
ICAgIChTVkdUUmVmRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NW
R1Rlc3RzLmg6CisgICAgICAgIChTVkdUZXN0cyk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6
CisgICAgICAgIChTVkdUZXh0Q29udGVudEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5oOgorICAgICAgICAoU1ZHVGV4
dEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5oOgorICAgICAgICAoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCk6CisgICAgICAg
ICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVUklSZWZl
cmVuY2U6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmg6
CisgICAgICAgIChTVkdVUklSZWZlcmVuY2UpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAoU1ZHVXNlRWxlbWVudCk6
CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdFbGVt
ZW50Lmg6CisgICAgICAgIChTVkdWaWV3RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1pvb21B
bmRQYW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3Zn
L2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oOgorICAgICAgICAoU1ZHU01JTEVsZW1lbnQpOgor
CisyMDEyLTExLTE3ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KKwogICAgICAg
ICBBdm9pZCBmdWxsIHN0eWxlIHJlY2FsYyB3aGVuICdzdHlsZScgYXR0cmlidXRlIGNoYW5nZXMu
CiAgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc4NzE4PgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDhmNDU3N2Iu
LjFhY2U0N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2
ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2
ZW50TGlzdGVuZXIuY3BwCkBAIC01MiwxMCArNTIsMTAgQEAgc3RhdGljIGNvbnN0IFN0cmluZyYg
ZXZlbnRQYXJhbWV0ZXJOYW1lKGJvb2wgaXNTVkdFdmVudCkKICAgICByZXR1cm4gaXNTVkdFdmVu
dCA/IGV2dFN0cmluZyA6IGV2ZW50U3RyaW5nOwogfQogCi1QYXNzUmVmUHRyPEpTTGF6eUV2ZW50
TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogbm9kZSwgY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpCitQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogbm9kZSwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobm9kZSk7
Ci0gICAgaWYgKGF0dHJpYnV0ZS5pc051bGwoKSkKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gVGV4dFBvc2l0
aW9uOjptaW5pbXVtUG9zaXRpb24oKTsKQEAgLTcxLDE1ICs3MSwxNSBAQCBQYXNzUmVmUHRyPEpT
TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogbm9k
ZSwgY29uc3QgQQogICAgICAgICBzb3VyY2VVUkwgPSBub2RlLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZXZlbnRQYXJhbWV0ZXJOYW1lKG5vZGUt
PmlzU1ZHRWxlbWVudCgpKSwgYXR0cmlidXRlLnZhbHVlKCksIG5vZGUsIHNvdXJjZVVSTCwgcG9z
aXRpb24sIDAsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICByZXR1cm4gSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKG5hbWUubG9jYWxOYW1lKCkuc3RyaW5nKCksIGV2ZW50UGFyYW1l
dGVyTmFtZShub2RlLT5pc1NWR0VsZW1lbnQoKSksIHZhbHVlLCBub2RlLCBzb3VyY2VVUkwsIHBv
c2l0aW9uLCAwLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8SlNM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJh
bWUsIGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQorUGFzc1JlZlB0cjxKU0xhenlFdmVudExp
c3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChhdHRyaWJ1dGUuaXNOdWxs
KCkpCisgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFNj
cmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CkBAIC04
OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUsIGNvbnN0CiAgICAgVGV4dFBvc2l0aW9uIHBv
c2l0aW9uID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyUG9zaXRpb24oKTsKICAgICBT
dHJpbmcgc291cmNlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAg
IEpTT2JqZWN0KiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvdyhmcmFtZSwgbWFpblRocmVhZE5vcm1h
bFdvcmxkKCkpOwotICAgIHJldHVybiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0cmli
dXRlLmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5hbWUoZnJhbWUtPmRvY3Vt
ZW50KCktPmlzU1ZHRG9jdW1lbnQoKSksIGF0dHJpYnV0ZS52YWx1ZSgpLCAwLCBzb3VyY2VVUkws
IHBvc2l0aW9uLCB3cmFwcGVyLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJu
IEpTTGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShuYW1lLmxvY2FsTmFtZSgpLnN0cmluZygpLCBl
dmVudFBhcmFtZXRlck5hbWUoZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSksIHZh
bHVlLCAwLCBzb3VyY2VVUkwsIHBvc2l0aW9uLCB3cmFwcGVyLCBtYWluVGhyZWFkTm9ybWFsV29y
bGQoKSk7CiB9CiAKIFN0cmluZyBldmVudExpc3RlbmVySGFuZGxlckJvZHkoRG9jdW1lbnQqIGRv
Y3VtZW50LCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5oCmluZGV4IDhjMGI0NTMuLjAxOWUz
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlz
dGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3Rl
bmVyLmgKQEAgLTQzLDggKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZy
YW1lOwogICAgIGNsYXNzIE5vZGU7CiAKLSAgICBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVu
ZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSosIGNvbnN0IEF0dHJpYnV0ZSYp
OwotICAgIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihGcmFtZSosIGNvbnN0IEF0dHJpYnV0ZSYpOworICAgIFBhc3NSZWZQdHI8SlNM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOworICAgIFBhc3NS
ZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihG
cmFtZSosIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsK
ICAgICBTdHJpbmcgZXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KERvY3VtZW50KiwgRXZlbnRMaXN0
ZW5lciopOwogICAgIGJvb2wgZXZlbnRMaXN0ZW5lckhhbmRsZXJMb2NhdGlvbihEb2N1bWVudCos
IEV2ZW50TGlzdGVuZXIqLCBTdHJpbmcmIHNvdXJjZU5hbWUsIFN0cmluZyYgc2NyaXB0SWQsIGlu
dCYgbGluZU51bWJlcik7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGVjODk4ZDIu
LmM3NjlhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2
ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2
ZW50TGlzdGVuZXIuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogCi0jaW5jbHVkZSAiQXR0cmlidXRlLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKQEAgLTQ5LDEwICs0OCwxMCBAQCBzdGF0aWMgY29uc3QgU3RyaW5nJiBl
dmVudFBhcmFtZXRlck5hbWUoYm9vbCBpc1NWR0V2ZW50KQogICAgIHJldHVybiBpc1NWR0V2ZW50
ID8gZXZ0U3RyaW5nIDogZXZlbnRTdHJpbmc7CiB9CiAKLVBhc3NSZWZQdHI8VjhMYXp5RXZlbnRM
aXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK1Bhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiBub2RlLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIEFTU0VSVChub2RlKTsK
LSAgICBpZiAoYXR0cmlidXRlLmlzTnVsbCgpKQorICAgIGlmICh2YWx1ZS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBGSVhNRTogVmVyeSBzdHJhbmdlOiB3ZSBpbml0aWFs
aXplIHplcm8tYmFzZWQgbnVtYmVyIHdpdGggJzEnLgpAQCAtNjcsMTUgKzY2LDE1IEBAIFBhc3NS
ZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihO
b2RlKiBub2RlLCBjb25zdCBBCiAgICAgICAgIHNvdXJjZVVSTCA9IG5vZGUtPmRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpOwogICAgIH0KIAotICAgIHJldHVybiBWOExhenlFdmVudExpc3RlbmVy
OjpjcmVhdGUoYXR0cmlidXRlLmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5h
bWUobm9kZS0+aXNTVkdFbGVtZW50KCkpLCBhdHRyaWJ1dGUudmFsdWUoKSwgc291cmNlVVJMLCBw
b3NpdGlvbiwgbm9kZSwgV29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOworICAgIHJl
dHVybiBWOExhenlFdmVudExpc3RlbmVyOjpjcmVhdGUobmFtZS5sb2NhbE5hbWUoKS5zdHJpbmco
KSwgZXZlbnRQYXJhbWV0ZXJOYW1lKG5vZGUtPmlzU1ZHRWxlbWVudCgpKSwgdmFsdWUsIHNvdXJj
ZVVSTCwgcG9zaXRpb24sIG5vZGUsIFdvcmxkQ29udGV4dEhhbmRsZShVc2VNYWluV29ybGQpKTsK
IH0KIAotUGFzc1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKEZyYW1lKiBmcmFtZSwgY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCitQYXNz
UmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
RnJhbWUqIGZyYW1lLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQogewogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
aWYgKGF0dHJpYnV0ZS5pc051bGwoKSkKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZy
YW1lLT5zY3JpcHQoKTsKQEAgLTg1LDcgKzg0LDcgQEAgUGFzc1JlZlB0cjxWOExhenlFdmVudExp
c3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwgY29uc3QK
ICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRs
ZXJQb3NpdGlvbigpOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCk7CiAKLSAgICByZXR1cm4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGF0dHJpYnV0ZS5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1l
LT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkpLCBhdHRyaWJ1dGUudmFsdWUoKSwgc291cmNl
VVJMLCBwb3NpdGlvbiwgMCwgV29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOworICAg
IHJldHVybiBWOExhenlFdmVudExpc3RlbmVyOjpjcmVhdGUobmFtZS5sb2NhbE5hbWUoKS5zdHJp
bmcoKSwgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50
KCkpLCB2YWx1ZSwgc291cmNlVVJMLCBwb3NpdGlvbiwgMCwgV29ybGRDb250ZXh0SGFuZGxlKFVz
ZU1haW5Xb3JsZCkpOwogfQogCiBTdHJpbmcgZXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KERvY3Vt
ZW50KiBkb2N1bWVudCwgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmgKaW5kZXggYjJlNjYzMS4uOTEw
ODkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRM
aXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50TGlz
dGVuZXIuaApAQCAtMzcsMTQgKzM3LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAg
IGNsYXNzIEF0dHJpYnV0ZTsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBFdmVudExp
c3RlbmVyOwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIE5vZGU7CisgICAgY2xhc3MgUXVh
bGlmaWVkTmFtZTsKIAotICAgIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihOb2RlKiwgY29uc3QgQXR0cmlidXRlJik7Ci0gICAgUGFz
c1JlZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KEZyYW1lKiwgY29uc3QgQXR0cmlidXRlJik7CisgICAgUGFzc1JlZlB0cjxWOExhenlFdmVudExp
c3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSk7CisgICAgUGFzc1JlZlB0cjxWOExh
enlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiwgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwogICAgIFN0cmlu
ZyBldmVudExpc3RlbmVySGFuZGxlckJvZHkoRG9jdW1lbnQqLCBFdmVudExpc3RlbmVyKik7CiAg
ICAgYm9vbCBldmVudExpc3RlbmVySGFuZGxlckxvY2F0aW9uKERvY3VtZW50KiwgRXZlbnRMaXN0
ZW5lciosIFN0cmluZyYgc291cmNlTmFtZSwgU3RyaW5nJiBzY3JpcHRJZCwgaW50JiBsaW5lTnVt
YmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDg2MGMxY2IuLjE4ZTEzZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTc1OCw3ICs3NTgsNyBAQCBzdGF0aWMgYm9vbCBjaGVja05l
ZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZElk
LCBjbwogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKLSAgICBwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpKTsKKyAgICBwYXJzZUF0dHJpYnV0ZShuYW1l
LCBuZXdWYWx1ZSk7CiAKICAgICBkb2N1bWVudCgpLT5pbmNET01UcmVlVmVyc2lvbigpOwogCkBA
IC03ODksMTAgKzc4OSwxMCBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZQogICAgICAgICBkb2N1
bWVudCgpLT5heE9iamVjdENhY2hlKCktPmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgdGhp
cyk7CiB9CiAKLXZvaWQgRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUpCit2b2lkIEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gY2xhc3NBdHRyKQotICAgICAgICBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoYXR0
cmlidXRlLnZhbHVlKCkpOworICAgIGlmIChuYW1lID09IGNsYXNzQXR0cikKKyAgICAgICAgY2xh
c3NBdHRyaWJ1dGVDaGFuZ2VkKHZhbHVlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBmMGZmMDJjLi5kOGJkN2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTI0Niw3ICsyNDYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGlzIG1l
dGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYW4gYXR0cmlidXRlIGlzIGFkZGVkLCBjaGFuZ2VkIG9y
IHJlbW92ZWQuCiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgLy8g
T25seSBjYWxsZWQgYnkgdGhlIHBhcnNlciBpbW1lZGlhdGVseSBhZnRlciBlbGVtZW50IGNvbnN0
cnVjdGlvbi4KICAgICB2b2lkIHBhcnNlclNldEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJp
YnV0ZT4mLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwCmluZGV4IDcyMDc5NjQuLmI4ZjBiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5jcHAKQEAgLTIyMCwxMiArMjIwLDEyIEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6
c3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcp
CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKGRv
Y3VtZW50KCksIHRoaXMpOwogfQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTdHlsZWRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHN0eWxlQXR0cikKLSAgICAgICAg
c3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICBpZiAobmFtZSA9
PSBzdHlsZUF0dHIpCisgICAgICAgIHN0eWxlQXR0cmlidXRlQ2hhbmdlZCh2YWx1ZSk7CiAgICAg
ZWxzZQotICAgICAgICBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAg
ICBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU3R5bGVk
RWxlbWVudDo6aW5saW5lU3R5bGVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5o
CmluZGV4IDhmMmRiMzIuLjJmYjZjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApA
QCAtNjAsNyArNjAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU3R5bGVkRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNo
b3JFbGVtZW50LmNwcAppbmRleCBmYmVkNjMyLi5kNjBlMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtMjE0LDI5ICsyMTQsMjkgQEAgdm9pZCBIVE1M
QW5jaG9yRWxlbWVudDo6c2V0QWN0aXZlKGJvb2wgZG93biwgYm9vbCBwYXVzZSkKICAgICBDb250
YWluZXJOb2RlOjpzZXRBY3RpdmUoZG93biwgcGF1c2UpOwogfQogCi12b2lkIEhUTUxBbmNob3JF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQg
SFRNTEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1l
KCkgPT0gaHJlZkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBocmVmQXR0cikgewogICAgICAgICBi
b29sIHdhc0xpbmsgPSBpc0xpbmsoKTsKLSAgICAgICAgc2V0SXNMaW5rKCFhdHRyaWJ1dGUuaXNO
dWxsKCkpOworICAgICAgICBzZXRJc0xpbmsoIXZhbHVlLmlzTnVsbCgpKTsKICAgICAgICAgaWYg
KHdhc0xpbmsgIT0gaXNMaW5rKCkpIHsKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJlbnREaXN0cmlidXRpb25JZk5lY2Vzc2FyeSh0
aGlzLCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6UnVsZUZlYXR1cmVMaW5rIHwgU2VsZWN0UnVsZUZl
YXR1cmVTZXQ6OlJ1bGVGZWF0dXJlVmlzaXRlZCB8IFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpSdWxl
RmVhdHVyZUVuYWJsZWQpOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc0xpbmsoKSkgewotICAg
ICAgICAgICAgU3RyaW5nIHBhcnNlZFVSTCA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgICAgICBTdHJpbmcgcGFyc2VkVVJMID0g
c3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlKTsKICAgICAgICAgICAgIGlm
IChkb2N1bWVudCgpLT5pc0ROU1ByZWZldGNoRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKHByb3RvY29sSXMocGFyc2VkVVJMLCAiaHR0cCIpIHx8IHByb3RvY29sSXMocGFyc2VkVVJM
LCAiaHR0cHMiKSB8fCBwYXJzZWRVUkwuc3RhcnRzV2l0aCgiLy8iKSkKICAgICAgICAgICAgICAg
ICAgICAgcHJlZmV0Y2hETlMoZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwocGFyc2VkVVJMKS5ob3N0
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRW
aXNpdGVkTGlua0hhc2goKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gbmFt
ZUF0dHIgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSB0aXRsZUF0dHIpIHsKKyAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gbmFtZUF0dHIgfHwgbmFtZSA9PSB0aXRsZUF0dHIpIHsKICAgICAgICAgLy8gRG8g
bm90aGluZy4KLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gcmVsQXR0cikKLSAg
ICAgICAgc2V0UmVsKGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0g
cmVsQXR0cikKKyAgICAgICAgc2V0UmVsKHZhbHVlKTsKICAgICBlbHNlCi0gICAgICAgIEhUTUxF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBIVE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEhUTUxBbmNob3JFbGVtZW50
OjphY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbmNob3JFbGVtZW50LmgKaW5kZXggNmFmZTVhNS4uMDMzZTljMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaApAQCAtMTA1LDcgKzEwNSw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBIVE1MQW5jaG9yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCmluZGV4IGFmYzcyNjguLjdlMGJiYTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuY3BwCkBAIC01MSwxOSArNTEsMTkg
QEAgUGFzc1JlZlB0cjxIVE1MQXBwbGV0RWxlbWVudD4gSFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWcKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxB
cHBsZXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVkQnlQYXJzZXIpKTsKIH0KIAot
dm9pZCBIVE1MQXBwbGV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUpCit2b2lkIEhUTUxBcHBsZXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IGFsdEF0dHIKLSAgICAgICAgfHwgYXR0cmlidXRlLm5hbWUo
KSA9PSBhcmNoaXZlQXR0cgotICAgICAgICB8fCBhdHRyaWJ1dGUubmFtZSgpID09IGNvZGVBdHRy
Ci0gICAgICAgIHx8IGF0dHJpYnV0ZS5uYW1lKCkgPT0gY29kZWJhc2VBdHRyCi0gICAgICAgIHx8
IGF0dHJpYnV0ZS5uYW1lKCkgPT0gbWF5c2NyaXB0QXR0cgotICAgICAgICB8fCBhdHRyaWJ1dGUu
bmFtZSgpID09IG9iamVjdEF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBhbHRBdHRyCisgICAgICAg
IHx8IG5hbWUgPT0gYXJjaGl2ZUF0dHIKKyAgICAgICAgfHwgbmFtZSA9PSBjb2RlQXR0cgorICAg
ICAgICB8fCBuYW1lID09IGNvZGViYXNlQXR0cgorICAgICAgICB8fCBuYW1lID09IG1heXNjcmlw
dEF0dHIKKyAgICAgICAgfHwgbmFtZSA9PSBvYmplY3RBdHRyKSB7CiAgICAgICAgIC8vIERvIG5v
dGhpbmcuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MQXBwbGV0RWxl
bWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQuaAppbmRleCA0YzcyNzVjLi5h
Yzg4YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5oCkBAIC0zNCw3
ICszNCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEFwcGxldEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopIE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJl
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCmlu
ZGV4IDZlN2Y5OWQuLjMyNjFiOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVu
dC5jcHAKQEAgLTUzLDI1ICs1MywyNSBAQCBQYXNzUmVmUHRyPEhUTUxBcmVhRWxlbWVudD4gSFRN
TEFyZWFFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZQogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEFyZWFFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9
CiAKLXZvaWQgSFRNTEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTEFyZWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IHNoYXBlQXR0cikgewotICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJkZWZhdWx0IikpCisgICAgaWYgKG5hbWUgPT0g
c2hhcGVBdHRyKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImRlZmF1
bHQiKSkKICAgICAgICAgICAgIG1fc2hhcGUgPSBEZWZhdWx0OwotICAgICAgICBlbHNlIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGUudmFsdWUoKSwgImNpcmNsZSIpKQorICAgICAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgImNpcmNsZSIpKQogICAgICAgICAgICAg
bV9zaGFwZSA9IENpcmNsZTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0
cmlidXRlLnZhbHVlKCksICJwb2x5IikpCisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAicG9seSIpKQogICAgICAgICAgICAgbV9zaGFwZSA9IFBvbHk7Ci0gICAgICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZS52YWx1ZSgpLCAicmVjdCIpKQor
ICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgInJlY3QiKSkKICAgICAg
ICAgICAgIG1fc2hhcGUgPSBSZWN0OwogICAgICAgICBpbnZhbGlkYXRlQ2FjaGVkUmVnaW9uKCk7
Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGNvb3Jkc0F0dHIpIHsKLSAgICAg
ICAgbV9jb29yZHMgPSBuZXdDb29yZHNBcnJheShhdHRyaWJ1dGUudmFsdWUoKS5zdHJpbmcoKSwg
bV9jb29yZHNMZW4pOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb29yZHNBdHRyKSB7CisgICAg
ICAgIG1fY29vcmRzID0gbmV3Q29vcmRzQXJyYXkodmFsdWUuc3RyaW5nKCksIG1fY29vcmRzTGVu
KTsKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFJlZ2lvbigpOwotICAgIH0gZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBhbHRBdHRyIHx8IGF0dHJpYnV0ZS5uYW1lKCkgPT0gYWNjZXNza2V5
QXR0cikgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhbHRBdHRyIHx8IG5hbWUgPT0gYWNjZXNz
a2V5QXR0cikgewogICAgICAgICAvLyBEbyBub3RoaW5nLgogICAgIH0gZWxzZQotICAgICAgICBI
VE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgSFRN
TEFuY2hvckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBI
VE1MQXJlYUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRSZWdpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmgKaW5kZXggMGNhZjM1NC4uODY1Yjg2NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSFRNTEFyZWFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzRm9jdXMoKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5jcHAKaW5kZXggYjU4MDM1ZS4uYmI1
YmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIFBhc3NSZWZQdHI8SFRNTEJhc2VFbGVtZW50PiBIVE1MQmFzZUVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIVE1MQmFzZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBIVE1MQmFz
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9p
ZCBIVE1MQmFzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1l
KCkgPT0gaHJlZkF0dHIgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSB0YXJnZXRBdHRyKQorICAgIGlm
IChuYW1lID09IGhyZWZBdHRyIHx8IG5hbWUgPT0gdGFyZ2V0QXR0cikKICAgICAgICAgZG9jdW1l
bnQoKS0+cHJvY2Vzc0Jhc2VFbGVtZW50KCk7CiAgICAgZWxzZQotICAgICAgICBIVE1MRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBIVE1MQmFzZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiBpbnNl
cnRpb25Qb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCYXNlRWxlbWVudC5oCmluZGV4IGU2YjBh
NDEuLjQzNDc3NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaApAQCAtMzks
NyArMzksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Q7
CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSop
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikg
T1ZFUlJJREU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCmluZGV4
IDZiMjU0NTguLmQ0NWRmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5j
cHAKQEAgLTkxLDIyICs5MSwyMiBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6Y29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cgogICAgICAgICBI
VE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHJpYnV0
ZSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSB2bGlua0F0dHIgfHwgYXR0cmlidXRl
Lm5hbWUoKSA9PSBhbGlua0F0dHIgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBsaW5rQXR0cikgewot
ICAgICAgICBpZiAoYXR0cmlidXRlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBsaW5rQXR0cikKKyAgICBpZiAobmFtZSA9PSB2bGlua0F0dHIgfHwgbmFt
ZSA9PSBhbGlua0F0dHIgfHwgbmFtZSA9PSBsaW5rQXR0cikgeworICAgICAgICBpZiAodmFsdWUu
aXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGlmIChuYW1lID09IGxpbmtBdHRyKQogICAgICAgICAg
ICAgICAgIGRvY3VtZW50KCktPnJlc2V0TGlua0NvbG9yKCk7Ci0gICAgICAgICAgICBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IHZsaW5rQXR0cikKKyAgICAgICAgICAgIGVsc2UgaWYgKG5h
bWUgPT0gdmxpbmtBdHRyKQogICAgICAgICAgICAgICAgIGRvY3VtZW50KCktPnJlc2V0VmlzaXRl
ZExpbmtDb2xvcigpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRvY3VtZW50
KCktPnJlc2V0QWN0aXZlTGlua0NvbG9yKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBSR0JBMzIgY29sb3I7Ci0gICAgICAgICAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNv
bG9yLCBhdHRyaWJ1dGUudmFsdWUoKSwgIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSkgewot
ICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGxpbmtBdHRyKQorICAgICAg
ICAgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VDb2xvcihjb2xvciwgdmFsdWUsICFkb2N1bWVudCgp
LT5pblF1aXJrc01vZGUoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSBsaW5rQXR0
cikKICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0TGlua0NvbG9yKGNvbG9yKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHZsaW5rQXR0cikK
KyAgICAgICAgICAgICAgICBlbHNlIGlmIChuYW1lID09IHZsaW5rQXR0cikKICAgICAgICAgICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+c2V0VmlzaXRlZExpbmtDb2xvcihjb2xvcik7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRBY3RpdmVM
aW5rQ29sb3IoY29sb3IpOwpAQCAtMTE0LDQyICsxMTQsNDIgQEAgdm9pZCBIVE1MQm9keUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICB9
CiAKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotICAgIH0gZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBvbmxvYWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmJlZm9yZXVubG9hZEF0dHIpCi0gICAgICAg
IGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmJlZm9yZXVubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50
KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gb251bmxvYWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IG9ucGFnZWhpZGVBdHRyKQotICAgICAgICBkb2N1bWVudCgp
LT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2
ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0
dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25wYWdlc2hvd0F0
dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLnBhZ2VzaG93RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBvbnBvcHN0YXRlQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucG9wc3RhdGVFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUpKTsK
LSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYmx1ckF0dHIpCi0gICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJs
dXJFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgp
LCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uZm9jdXNB
dHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRv
Y3VtZW50KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBv
bmxvYWRBdHRyKQorICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1l
ID09IG9uYmVmb3JldW5sb2FkQXR0cikKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUp
KTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9udW5sb2FkQXR0cikKKyAgICAgICAgZG9jdW1lbnQo
KS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudW5sb2FkRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFt
ZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ucGFnZWhpZGVBdHRyKQorICAgICAg
ICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5wYWdlaGlkZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCkt
PmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnBhZ2VzaG93
QXR0cikKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkucGFnZXNob3dFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihkb2N1bWVudCgpLT5mcmFtZSgpLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gb25wb3BzdGF0ZUF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUpKTsKKyAgICBl
bHNlIGlmIChuYW1lID09IG9uYmx1ckF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBuYW1lLCB2YWx1ZSkpOwor
ICAgIGVsc2UgaWYgKG5hbWUgPT0gb25mb2N1c0F0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNl
dFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFs
dWUpKTsKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQotICAgIGVsc2UgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gb25vcmllbnRhdGlvbmNoYW5nZUF0dHIpCi0gICAgICAgIGRvY3VtZW50
KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9yaWVudGF0
aW9uY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+
ZnJhbWUoKSwgYXR0cmlidXRlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbm9yaWVudGF0aW9u
Y2hhbmdlQXR0cikKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBuYW1lLCB2YWx1ZSkpOwogI2Vu
ZGlmCi0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmhhc2hjaGFuZ2VBdHRyKQot
ICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5oYXNoY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9j
dW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBvbnJlc2l6ZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOwotICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25zY3JvbGxBdHRyKQotICAgICAgICBkb2N1bWVu
dCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zY3JvbGxF
dmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBh
dHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uc2VsZWN0aW9u
Y2hhbmdlQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuc2VsZWN0aW9uY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBvbnN0b3JhZ2VBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5z
ZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmli
dXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbm9ubGluZUF0dHIpCi0g
ICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLm9ubGluZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50
KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gb25vZmZsaW5lQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOworICAgIGVsc2Ug
aWYgKG5hbWUgPT0gb25oYXNoY2hhbmdlQXR0cikKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIG5hbWUsIHZh
bHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnJlc2l6ZUF0dHIpCisgICAgICAgIGRvY3Vt
ZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2l6
ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCks
IG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnNjcm9sbEF0dHIpCisgICAg
ICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnNjcm9sbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCkt
PmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnNlbGVjdGlv
bmNoYW5nZUF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnNlbGVjdGlvbmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBp
ZiAobmFtZSA9PSBvbnN0b3JhZ2VBdHRyKQorICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUpKTsK
KyAgICBlbHNlIGlmIChuYW1lID09IG9ub25saW5lQXR0cikKKyAgICAgICAgZG9jdW1lbnQoKS0+
c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkub25saW5lRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwg
dmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ub2ZmbGluZUF0dHIpCisgICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9m
ZmxpbmVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFt
ZSgpLCBuYW1lLCB2YWx1ZSkpOwogICAgIGVsc2UKLSAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
SFRNTEJvZHlFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaAppbmRleCAxMzk1ZDhiLi4xZWNl
NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MQm9keUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQcm9wZXJ0eVNldCopIE9W
RVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4
IDIwNWU5NjIuLjFjOWQ1M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1
dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1l
bnQuY3BwCkBAIC05OSwxOCArOTksMTggQEAgYm9vbCBIVE1MQnV0dG9uRWxlbWVudDo6aXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICBy
ZXR1cm4gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFt
ZSk7CiB9CiAKLXZvaWQgSFRNTEJ1dHRvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSB0eXBlQXR0cikgewotICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJyZXNldCIpKQorICAgIGlmIChu
YW1lID09IHR5cGVBdHRyKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwg
InJlc2V0IikpCiAgICAgICAgICAgICBtX3R5cGUgPSBSRVNFVDsKLSAgICAgICAgZWxzZSBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJidXR0b24iKSkKKyAgICAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJidXR0b24iKSkKICAgICAgICAgICAg
IG1fdHlwZSA9IEJVVFRPTjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV90eXBlID0gU1VC
TUlUOwogICAgICAgICBzZXROZWVkc1dpbGxWYWxpZGF0ZUNoZWNrKCk7CiAgICAgfSBlbHNlCi0g
ICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7
CisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKTsKIH0KIAogdm9pZCBIVE1MQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCogZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKaW5kZXgg
NzRhNTczNS4uNDQ3MzFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0
dG9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQu
aApAQCAtNDksNyArNDksNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxBZGRB
dXRob3JTaGFkb3dSb290KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZl
bnRIYW5kbGVyKEV2ZW50Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKaW5kZXggMGJjMzY2ZS4uMDA2ZjlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKQEAgLTExMSwxMSArMTExLDExIEBAIEhUTUxDYW52YXNFbGVtZW50
Ojp+SFRNTENhbnZhc0VsZW1lbnQoKQogICAgIG1fY29udGV4dC5jbGVhcigpOyAvLyBFbnN1cmUg
dGhpcyBnb2VzIGF3YXkgYmVmb3JlIHRoZSBJbWFnZUJ1ZmZlci4KIH0KIAotdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2
b2lkIEhUTUxDYW52YXNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUu
bmFtZSgpID09IHdpZHRoQXR0ciB8fCBhdHRyaWJ1dGUubmFtZSgpID09IGhlaWdodEF0dHIpCisg
ICAgaWYgKG5hbWUgPT0gd2lkdGhBdHRyIHx8IG5hbWUgPT0gaGVpZ2h0QXR0cikKICAgICAgICAg
cmVzZXQoKTsKLSAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAg
ICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBSZW5kZXJP
YmplY3QqIEhUTUxDYW52YXNFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1l
bnQuaAppbmRleCA0ODZhZTY2Li4yZmQ1ZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5oCkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBI
VE1MQ2FudmFzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBj
cmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCB2
b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgYm9vbCBhcmVBdXRob3JTaGFkb3dzQWxsb3dlZCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxEZXRhaWxzRWxlbWVudC5jcHAKaW5kZXggY2U1M2NlMS4uNDY0NzMzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtMTI2LDE1ICsxMjYsMTUgQEAg
RWxlbWVudCogSFRNTERldGFpbHNFbGVtZW50OjpmaW5kTWFpblN1bW1hcnkoKSBjb25zdAogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEZXRhaWxzU3VtbWFyeUVsZW1lbnQqPih1c2VyQWdlbnRTaGFk
b3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxiYWNrU3VtbWFyeSgpOwogfQogCi12b2lkIEhU
TUxEZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1
dGUpCit2b2lkIEhUTUxEZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBvcGVuQXR0cikgeworICAgIGlmIChuYW1lID09IG9wZW5BdHRyKSB7
CiAgICAgICAgIGJvb2wgb2xkVmFsdWUgPSBtX2lzT3BlbjsKLSAgICAgICAgbV9pc09wZW4gPSAg
IWF0dHJpYnV0ZS5pc051bGwoKTsKKyAgICAgICAgbV9pc09wZW4gPSAhdmFsdWUuaXNOdWxsKCk7
CiAgICAgICAgIGlmIChvbGRWYWx1ZSAhPSBtX2lzT3BlbikKICAgICAgICAgICAgIHJlYXR0YWNo
SWZBdHRhY2hlZCgpOwogICAgIH0gZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNoaWxkQ29udGV4dCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCmluZGV4IGNhNjM5N2Mu
LjlkYTk2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaApAQCAt
MzcsNyArMzcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0
ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCiAgICAgdm9p
ZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
aW5kZXggOWM2NjRhYi4uNTcxNjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAK
QEAgLTIxMSwxMjIgKzIxMSwxMjIgQEAgdm9pZCBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXQKICAgICAgICAg
U3R5bGVkRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHJp
YnV0ZSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7
Ci0gICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS5uYW1lKCkpIHx8IGF0dHJpYnV0
ZS5uYW1lKCkgPT0gY2xhc3NBdHRyIHx8IGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3R5bGVBdHRyKQot
ICAgICAgICByZXR1cm4gU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsK
KyAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUobmFtZSkgfHwgbmFtZSA9PSBjbGFzc0F0dHIgfHwg
bmFtZSA9PSBzdHlsZUF0dHIpCisgICAgICAgIHJldHVybiBTdHlsZWRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBkaXJB
dHRyKQotICAgICAgICBkaXJBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZSk7Ci0gICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSB0YWJpbmRleEF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBk
aXJBdHRyKQorICAgICAgICBkaXJBdHRyaWJ1dGVDaGFuZ2VkKHZhbHVlKTsKKyAgICBlbHNlIGlm
IChuYW1lID09IHRhYmluZGV4QXR0cikgewogICAgICAgICBpbnQgdGFiaW5kZXggPSAwOwotICAg
ICAgICBpZiAoYXR0cmlidXRlLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHko
KSkKICAgICAgICAgICAgIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5KCk7Ci0gICAgICAgIGVsc2Ug
aWYgKHBhcnNlSFRNTEludGVnZXIoYXR0cmlidXRlLnZhbHVlKCksIHRhYmluZGV4KSkgeworICAg
ICAgICBlbHNlIGlmIChwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlLCB0YWJpbmRleCkpIHsKICAgICAg
ICAgICAgIC8vIENsYW1wIHRhYmluZGV4IHRvIHRoZSByYW5nZSBvZiAnc2hvcnQnIHRvIG1hdGNo
IEZpcmVmb3gncyBiZWhhdmlvci4KICAgICAgICAgICAgIHNldFRhYkluZGV4RXhwbGljaXRseSht
YXgoc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om51bWVyaWNfbGltaXRzPHNob3J0Pjo6bWluKCkpLCBt
aW4odGFiaW5kZXgsIHN0YXRpY19jYXN0PGludD4oc3RkOjpudW1lcmljX2xpbWl0czxzaG9ydD46
Om1heCgpKSkpKTsKICAgICAgICAgfQogI2lmIEVOQUJMRShNSUNST0RBVEEpCi0gICAgfSBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGl0ZW1wcm9wQXR0cikgewotICAgICAgICBzZXRJdGVt
UHJvcChhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgp
ID09IGl0ZW1yZWZBdHRyKSB7Ci0gICAgICAgIHNldEl0ZW1SZWYoYXR0cmlidXRlLnZhbHVlKCkp
OwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBpdGVtdHlwZUF0dHIpIHsKLSAg
ICAgICAgc2V0SXRlbVR5cGUoYXR0cmlidXRlLnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAobmFt
ZSA9PSBpdGVtcHJvcEF0dHIpIHsKKyAgICAgICAgc2V0SXRlbVByb3AodmFsdWUpOworICAgIH0g
ZWxzZSBpZiAobmFtZSA9PSBpdGVtcmVmQXR0cikgeworICAgICAgICBzZXRJdGVtUmVmKHZhbHVl
KTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gaXRlbXR5cGVBdHRyKSB7CisgICAgICAgIHNldEl0
ZW1UeXBlKHZhbHVlKTsKICNlbmRpZgogICAgIH0KIC8vIHN0YW5kYXJkIGV2ZW50cwotICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25jbGlja0F0dHIpIHsKLSAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gb25jb250ZXh0bWVudUF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gb25kYmxjbGlja0F0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gb25tb3VzZWRvd25BdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBvbm1vdXNlbW92ZUF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IG9ubW91c2VvdXRBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLm1vdXNlb3V0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhp
cywgYXR0cmlidXRlKSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ubW91
c2VvdmVyQXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5tb3VzZW92ZXJFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBh
dHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25tb3VzZXVw
QXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5t
b3VzZXVwRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRl
KSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ubW91c2V3aGVlbEF0dHIp
IHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2V3
aGVlbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkp
OwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmZvY3VzQXR0cikgewotICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmZvY3VzaW5BdHRyKSB7Ci0gICAgICAgIHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZvY3VzaW5FdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gb25mb2N1c291dEF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gb25ibHVyQXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgYXR0cmlidXRlKSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9u
a2V5ZG93bkF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkua2V5ZG93bkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHJpYnV0ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmtleXByZXNz
QXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5r
ZXlwcmVzc0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0
ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmtleXVwQXR0cikgewot
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5rZXl1cEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIH0g
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnNjcm9sbEF0dHIpIHsKLSAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgfSBlbHNlIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IG9uYmVmb3JlY3V0QXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVjdXRFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gb25jdXRBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmN1dEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBv
bmJlZm9yZWNvcHlBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmJlZm9yZWNvcHlFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25j
b3B5QXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5jb3B5RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRl
KSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYmVmb3JlcGFzdGVBdHRy
KSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9y
ZXBhc3RlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRl
KSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucGFzdGVBdHRyKSB7Ci0g
ICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhc3RlRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgfSBl
bHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uZHJhZ2VudGVyQXR0cikgewotICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnZW50ZXJFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2Ug
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25kcmFnb3ZlckF0dHIpIHsKLSAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJhZ292ZXJFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gb25kcmFnbGVhdmVBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBvbmRyb3BBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmRyb3BFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
b25kcmFnc3RhcnRBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmRyYWdzdGFydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmRy
YWdBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmRyYWdFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUp
KTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25kcmFnZW5kQXR0cikgewot
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnZW5kRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAg
fSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uc2VsZWN0c3RhcnRBdHRyKSB7Ci0gICAg
ICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNlbGVjdHN0YXJ0RXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAg
fSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uc3VibWl0QXR0cikgewotICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYg
KGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25lcnJvckF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gb253ZWJraXRhbmltYXRpb25zdGFydEF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uU3RhcnRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVs
c2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb253ZWJraXRhbmltYXRpb25pdGVyYXRpb25BdHRy
KSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtp
dEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbndl
YmtpdGFuaW1hdGlvbmVuZEF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uRW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUu
bmFtZSgpID09IG9ud2Via2l0dHJhbnNpdGlvbmVuZEF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmlucHV0QXR0cikgewotICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIH0gZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBvbmludmFsaWRBdHRyKSB7Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmludmFsaWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1l
KCkgPT0gb250b3VjaHN0YXJ0QXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS50b3VjaHN0YXJ0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgp
ID09IG9udG91Y2htb3ZlQXR0cikgewotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
b250b3VjaGVuZEF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkudG91Y2hlbmRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb250b3Vj
aGNhbmNlbEF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkudG91Y2hjYW5jZWxFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uY2xpY2tBdHRyKSB7CisgICAg
ICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gb25jb250ZXh0bWVudUF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFt
ZSA9PSBvbmRibGNsaWNrQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5kYmxjbGlja0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9ubW91c2Vkb3du
QXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5t
b3VzZWRvd25FdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2
YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbm1vdXNlbW92ZUF0dHIpIHsKKyAgICAg
ICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gb25tb3VzZW91dEF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2VvdXRFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBvbm1vdXNlb3ZlckF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gb25tb3VzZXVwQXR0
cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3Vz
ZXVwRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUp
KTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gb25tb3VzZXdoZWVsQXR0cikgeworICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gb25mb2N1c0F0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbmZvY3Vz
aW5BdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmZvY3VzaW5FdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2
YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbmZvY3Vzb3V0QXR0cikgeworICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c291dEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBl
bHNlIGlmIChuYW1lID09IG9uYmx1ckF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9ua2V5ZG93
bkF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZh
bHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9ua2V5cHJlc3NBdHRyKSB7CisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gb25rZXl1cEF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkua2V5dXBFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbnNjcm9s
bEF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
c2Nyb2xsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFs
dWUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gb25iZWZvcmVjdXRBdHRyKSB7CisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWN1dEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBl
bHNlIGlmIChuYW1lID09IG9uY3V0QXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5jdXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbmJlZm9yZWNv
cHlBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmJlZm9yZWNvcHlFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1l
LCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbmNvcHlBdHRyKSB7CisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNvcHlFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBp
ZiAobmFtZSA9PSBvbmJlZm9yZXBhc3RlQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVwYXN0ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09
IG9ucGFzdGVBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnBhc3RlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFt
ZSwgdmFsdWUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gb25kcmFnZW50ZXJBdHRyKSB7Cisg
ICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdlbnRlckV2
ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7Cisg
ICAgfSBlbHNlIGlmIChuYW1lID09IG9uZHJhZ292ZXJBdHRyKSB7CisgICAgICAgIHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdvdmVyRXZlbnQsIGNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gb25kcmFnbGVhdmVBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmRyYWdsZWF2ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9uZHJvcEF0
dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZHJv
cEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7
CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9uZHJhZ3N0YXJ0QXR0cikgeworICAgICAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5kcmFnc3RhcnRFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBp
ZiAobmFtZSA9PSBvbmRyYWdBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmRyYWdFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbmRyYWdlbmRBdHRy
KSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmRyYWdl
bmRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkp
OworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbnNlbGVjdHN0YXJ0QXR0cikgeworICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zZWxlY3RzdGFydEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBl
bHNlIGlmIChuYW1lID09IG9uc3VibWl0QXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbmVy
cm9yQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5lcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZh
bHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9ud2Via2l0YW5pbWF0aW9uc3RhcnRBdHRy
KSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtp
dEFuaW1hdGlvblN0YXJ0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
bmFtZSwgdmFsdWUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gb253ZWJraXRhbmltYXRpb25p
dGVyYXRpb25BdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9u
d2Via2l0YW5pbWF0aW9uZW5kQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS53ZWJraXRBbmltYXRpb25FbmRFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBvbndlYmtpdHRyYW5zaXRpb25lbmRBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAo
bmFtZSA9PSBvbmlucHV0QXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5pbnB1dEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9uaW52YWxpZEF0dHIp
IHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuaW52YWxp
ZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7
CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9udG91Y2hzdGFydEF0dHIpIHsKKyAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hzdGFydEV2ZW50LCBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNl
IGlmIChuYW1lID09IG9udG91Y2htb3ZlQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBv
bnRvdWNoZW5kQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS50b3VjaGVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9udG91Y2hjYW5jZWxBdHRy
KSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNo
Y2FuY2VsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFs
dWUpKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgfSBlbHNlIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIpIHsKLSAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5n
ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwot
ICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbndlYmtpdGZ1bGxzY3JlZW5lcnJv
ckF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
d2Via2l0ZnVsbHNjcmVlbmVycm9yRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgYXR0cmlidXRlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9ud2Via2l0ZnVsbHNj
cmVlbmNoYW5nZUF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9u
d2Via2l0ZnVsbHNjcmVlbmVycm9yQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuZXJyb3JFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOwogI2VuZGlmCiAgICAgfQog
fQpAQCAtODg2LDE0ICs4ODYsMTQgQEAgVGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0
aW9uYWxpdHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpIGMKICAgICByZXR1
cm4gTFRSOwogfQogCi12b2lkIEhUTUxFbGVtZW50OjpkaXJBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1MRWxlbWVudDo6ZGlyQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIEVsZW1lbnQqIHBhcmVudCA9
IHBhcmVudEVsZW1lbnQoKTsKIAogICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc0hUTUxFbGVt
ZW50KCkgJiYgcGFyZW50LT5zZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9BdHRyaWJ1dGUoKSkKICAg
ICAgICAgdG9IVE1MRWxlbWVudChwYXJlbnQpLT5hZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVk
QWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQodGhpcyk7CiAKLSAgICBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJhdXRvIikpCisgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKHZhbHVlLCAiYXV0byIpKQogICAgICAgICBjYWxjdWxhdGVBbmRBZGp1c3REaXJlY3Rpb25h
bGl0eSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMmIwMWQ2ZS4uZTgz
N2RmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTE4LDcgKzExOCw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShjb25zdCBB
dHRyaWJ1dGUmLCBTdHlsZVByb3BlcnR5U2V0Kik7CiAgICAgdm9pZCBhcHBseUJvcmRlckF0dHJp
YnV0ZVRvU3R5bGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQcm9wZXJ0eVNldCopOwogCi0gICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIApAQCAtMTM3LDcgKzEzNyw3
IEBAIHByaXZhdGU6CiAgICAgTm9kZSogaW5zZXJ0QWRqYWNlbnQoY29uc3QgU3RyaW5nJiB3aGVy
ZSwgTm9kZSogbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IHRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKIAotICAgIHZvaWQgZGlyQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdHRyaWJ1dGUmKTsKKyAg
ICB2b2lkIGRpckF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9p
ZCBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZEF0dHJpYnV0ZUNoYW5nZWQo
RWxlbWVudCogY2hpbGQpOwogICAgIHZvaWQgYWRqdXN0RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFm
dGVyQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqIGJlZm9yZUNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0
YSk7CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0
aW9uYWxpdHlUZXh0Tm9kZT0gMCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcAppbmRleCAxNGQ0NGI2Li45MTc2ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTkyLDI0ICs5MiwyNCBAQCB2b2lkIEhUTUxFbWJlZEVs
ZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmIGF0dAogICAgICAgICBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoYXR0cmlidXRlLCBzdHlsZSk7CiB9CiAKLXZvaWQgSFRNTEVt
YmVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2
b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gdHlwZUF0dHIpIHsKLSAgICAgICAgbV9zZXJ2aWNlVHlwZSA9IGF0dHJpYnV0ZS52
YWx1ZSgpLnN0cmluZygpLmxvd2VyKCk7CisgICAgaWYgKG5hbWUgPT0gdHlwZUF0dHIpIHsKKyAg
ICAgICAgbV9zZXJ2aWNlVHlwZSA9IHZhbHVlLnN0cmluZygpLmxvd2VyKCk7CiAgICAgICAgIHNp
emVfdCBwb3MgPSBtX3NlcnZpY2VUeXBlLmZpbmQoIjsiKTsKICAgICAgICAgaWYgKHBvcyAhPSBu
b3RGb3VuZCkKICAgICAgICAgICAgIG1fc2VydmljZVR5cGUgPSBtX3NlcnZpY2VUeXBlLmxlZnQo
cG9zKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gY29kZUF0dHIpCi0gICAg
ICAgIG1fdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52
YWx1ZSgpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNyY0F0dHIpIHsKLSAg
ICAgICAgbV91cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0cmlidXRl
LnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBjb2RlQXR0cikKKyAgICAgICAgbV91
cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpOworICAgIGVsc2Ug
aWYgKG5hbWUgPT0gc3JjQXR0cikgeworICAgICAgICBtX3VybCA9IHN0cmlwTGVhZGluZ0FuZFRy
YWlsaW5nSFRNTFNwYWNlcyh2YWx1ZSk7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIGlzSW1h
Z2VUeXBlKCkpIHsKICAgICAgICAgICAgIGlmICghbV9pbWFnZUxvYWRlcikKICAgICAgICAgICAg
ICAgICBtX2ltYWdlTG9hZGVyID0gYWRvcHRQdHIobmV3IEhUTUxJbWFnZUxvYWRlcih0aGlzKSk7
CiAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLT51cGRhdGVGcm9tRWxlbWVudElnbm9yaW5nUHJl
dmlvdXNFcnJvcigpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBI
VE1MRW1iZWRFbGVtZW50OjpwYXJhbWV0ZXJzRm9yUGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJh
bU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVtYmVkRWxlbWVudC5oCmluZGV4IDY1ZWQwYWIuLjgyODhjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSFRNTEVtYmVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBi
b29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQcm9wZXJ0eVNldCop
IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAppbmRleCAwMDYyYTE4Li45YjE5ZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTEyMCwzMSArMTIwLDMxIEBAIHZvaWQg
SFRNTEZvcm1Db250cm9sRWxlbWVudDo6YW5jZXN0b3JEaXNhYmxlZFN0YXRlV2FzQ2hhbmdlZCgp
CiAgICAgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gZm9ybUF0dHIpCisgICAgaWYgKG5hbWUgPT0gZm9ybUF0dHIpCiAgICAg
ICAgIGZvcm1BdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBkaXNhYmxlZEF0dHIpIHsKKyAgICBlbHNlIGlmIChuYW1lID09IGRpc2FibGVkQXR0cikg
ewogICAgICAgICBib29sIG9sZERpc2FibGVkID0gbV9kaXNhYmxlZDsKLSAgICAgICAgbV9kaXNh
YmxlZCA9ICFhdHRyaWJ1dGUuaXNOdWxsKCk7CisgICAgICAgIG1fZGlzYWJsZWQgPSAhdmFsdWUu
aXNOdWxsKCk7CiAgICAgICAgIGlmIChvbGREaXNhYmxlZCAhPSBtX2Rpc2FibGVkKQogICAgICAg
ICAgICAgZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IHJlYWRvbmx5QXR0cikgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSByZWFk
b25seUF0dHIpIHsKICAgICAgICAgYm9vbCBvbGRSZWFkT25seSA9IG1fcmVhZE9ubHk7Ci0gICAg
ICAgIG1fcmVhZE9ubHkgPSAhYXR0cmlidXRlLmlzTnVsbCgpOworICAgICAgICBtX3JlYWRPbmx5
ID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAob2xkUmVhZE9ubHkgIT0gbV9yZWFkT25s
eSkgewogICAgICAgICAgICAgc2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpOwogICAgICAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBSZWFkT25seVN0YXRl
KTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSByZXF1aXJl
ZEF0dHIpIHsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVxdWlyZWRBdHRyKSB7CiAgICAgICAg
IGJvb2wgb2xkUmVxdWlyZWQgPSBtX3JlcXVpcmVkOwotICAgICAgICBtX3JlcXVpcmVkID0gIWF0
dHJpYnV0ZS5pc051bGwoKTsKKyAgICAgICAgbV9yZXF1aXJlZCA9ICF2YWx1ZS5pc051bGwoKTsK
ICAgICAgICAgaWYgKG9sZFJlcXVpcmVkICE9IG1fcmVxdWlyZWQpCiAgICAgICAgICAgICByZXF1
aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgSFRNTEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
ZGlzYWJsZWRBdHRyaWJ1dGVDaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKaW5kZXggYjg4YjFiMC4uZWM2ZTg4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCopOwogCi0gICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVpcmVkQXR0
cmlidXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5n
ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtRWxlbWVudC5jcHAKaW5kZXggMThhYzcwOS4uMDUxOWVjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNDI4LDM1ICs0MjgsMzUgQEAgdm9pZCBIVE1MRm9y
bUVsZW1lbnQ6OnJlcXVlc3RBdXRvY29tcGxldGVUaW1lckZpcmVkKFRpbWVyPEhUTUxGb3JtRWxl
bWVudD4qKQogfQogI2VuZGlmCiAKLXZvaWQgSFRNTEZvcm1FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKLXsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBhY3Rpb25BdHRyKQotICAgICAgICBtX2F0dHJpYnV0ZXMucGFyc2VBY3Rpb24oYXR0cmli
dXRlLnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gdGFyZ2V0QXR0
cikKLSAgICAgICAgbV9hdHRyaWJ1dGVzLnNldFRhcmdldChhdHRyaWJ1dGUudmFsdWUoKSk7Ci0g
ICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBtZXRob2RBdHRyKQotICAgICAgICBtX2F0
dHJpYnV0ZXMudXBkYXRlTWV0aG9kVHlwZShhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBlbmN0eXBlQXR0cikKLSAgICAgICAgbV9hdHRyaWJ1dGVz
LnVwZGF0ZUVuY29kaW5nVHlwZShhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBhY2NlcHRfY2hhcnNldEF0dHIpCi0gICAgICAgIG1fYXR0cmlidXRl
cy5zZXRBY2NlcHRDaGFyc2V0KGF0dHJpYnV0ZS52YWx1ZSgpKTsKLSAgICBlbHNlIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IGF1dG9jb21wbGV0ZUF0dHIpIHsKK3ZvaWQgSFRNTEZvcm1FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQoreworICAgIGlmIChuYW1lID09IGFjdGlvbkF0dHIpCisgICAgICAgIG1f
YXR0cmlidXRlcy5wYXJzZUFjdGlvbih2YWx1ZSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSB0YXJn
ZXRBdHRyKQorICAgICAgICBtX2F0dHJpYnV0ZXMuc2V0VGFyZ2V0KHZhbHVlKTsKKyAgICBlbHNl
IGlmIChuYW1lID09IG1ldGhvZEF0dHIpCisgICAgICAgIG1fYXR0cmlidXRlcy51cGRhdGVNZXRo
b2RUeXBlKHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IGVuY3R5cGVBdHRyKQorICAgICAg
ICBtX2F0dHJpYnV0ZXMudXBkYXRlRW5jb2RpbmdUeXBlKHZhbHVlKTsKKyAgICBlbHNlIGlmIChu
YW1lID09IGFjY2VwdF9jaGFyc2V0QXR0cikKKyAgICAgICAgbV9hdHRyaWJ1dGVzLnNldEFjY2Vw
dENoYXJzZXQodmFsdWUpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gYXV0b2NvbXBsZXRlQXR0cikg
ewogICAgICAgICBpZiAoIXNob3VsZEF1dG9jb21wbGV0ZSgpKQogICAgICAgICAgICAgZG9jdW1l
bnQoKS0+cmVnaXN0ZXJGb3JQYWdlQ2FjaGVTdXNwZW5zaW9uQ2FsbGJhY2tzKHRoaXMpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUGFnZUNhY2hl
U3VzcGVuc2lvbkNhbGxiYWNrcyh0aGlzKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1l
KCkgPT0gb25zdWJtaXRBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5zdWJtaXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucmVzZXRB
dHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNl
dEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwor
ICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbnN1Ym1pdEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN1Ym1pdEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBv
bnJlc2V0QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkucmVzZXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2
YWx1ZSkpOwogI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKLSAgICBlbHNlIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IG9uYXV0b2NvbXBsZXRlQXR0cikKLSAgICAgICAgc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlRXZlbnQsIGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBvbmF1dG9jb21wbGV0ZWVycm9yQXR0cikKLSAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlZXJyb3JFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNl
IGlmIChuYW1lID09IG9uYXV0b2NvbXBsZXRlQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYXV0b2NvbXBsZXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09
IG9uYXV0b2NvbXBsZXRlZXJyb3JBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5hdXRvY29tcGxldGVlcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CiAjZW5kaWYKICAgICBlbHNlCi0gICAg
ICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBIVE1M
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBULCBzaXplX3Qgbj4gc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVZlY3RvcihWZWN0b3I8VCosIG4+
ICYgdmVjLCBUKiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKaW5kZXgg
YThjMmJlZS4uYTU2YTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCkBA
IC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb2Nh
bEV2ZW50cyhFdmVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKaW5kZXggM2QxNWM4Yi4u
MWIyOGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCkBAIC04
MiwxNyArODIsMTcgQEAgdm9pZCBIVE1MRnJhbWVFbGVtZW50OjphdHRhY2goKQogICAgIH0KIH0K
IAotdm9pZCBIVE1MRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTEZyYW1lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBmcmFtZWJvcmRlckF0dHIpIHsKLSAgICAgICAgbV9mcmFt
ZUJvcmRlciA9IGF0dHJpYnV0ZS52YWx1ZSgpLnRvSW50KCk7Ci0gICAgICAgIG1fZnJhbWVCb3Jk
ZXJTZXQgPSAhYXR0cmlidXRlLmlzTnVsbCgpOworICAgIGlmIChuYW1lID09IGZyYW1lYm9yZGVy
QXR0cikgeworICAgICAgICBtX2ZyYW1lQm9yZGVyID0gdmFsdWUudG9JbnQoKTsKKyAgICAgICAg
bV9mcmFtZUJvcmRlclNldCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAgLy8gRklYTUU6IElm
IHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCi0gICAgfSBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG5vcmVzaXplQXR0cikgeworICAgIH0gZWxzZSBpZiAo
bmFtZSA9PSBub3Jlc2l6ZUF0dHIpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogICAgIH0gZWxzZQotICAgICAg
ICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAg
ICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1l
bnQuaAppbmRleCA4NmU2MDhkLi4wZmFkMDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFt
ZUVsZW1lbnQuaApAQCAtNDQsNyArNDQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIAogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dGdWxsU2NyZWVuKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZy
YW1lRWxlbWVudEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50
QmFzZS5jcHAKaW5kZXggOTc1YjMwMi4uN2FkYzljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKQEAgLTEwMiw0NyArMTAyLDQ3IEBAIHZvaWQgSFRN
TEZyYW1lRWxlbWVudEJhc2U6Om9wZW5VUkwoYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFj
a0ZvcndhcmRMaXN0KQogICAgICAgICBjb250ZW50RnJhbWUoKS0+c2V0SW5WaWV3U291cmNlTW9k
ZSh2aWV3U291cmNlTW9kZSgpKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNy
Y2RvY0F0dHIpCisgICAgaWYgKG5hbWUgPT0gc3JjZG9jQXR0cikKICAgICAgICAgc2V0TG9jYXRp
b24oImFib3V0OnNyY2RvYyIpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3Jj
QXR0ciAmJiAhZmFzdEhhc0F0dHJpYnV0ZShzcmNkb2NBdHRyKSkKLSAgICAgICAgc2V0TG9jYXRp
b24oc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKSk7
Ci0gICAgZWxzZSBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlLm5hbWUoKSkpIHsKKyAg
ICBlbHNlIGlmIChuYW1lID09IHNyY0F0dHIgJiYgIWZhc3RIYXNBdHRyaWJ1dGUoc3JjZG9jQXR0
cikpCisgICAgICAgIHNldExvY2F0aW9uKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyh2YWx1ZSkpOworICAgIGVsc2UgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUpKSB7CiAgICAg
ICAgIC8vIEltcG9ydGFudCB0byBjYWxsIHRocm91Z2ggdG8gYmFzZSBmb3IgdGhlIGlkIGF0dHJp
YnV0ZSBzbyB0aGUgaGFzSUQgYml0IGdldHMgc2V0LgotICAgICAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAgICAgIG1fZnJhbWVOYW1lID0g
YXR0cmlidXRlLnZhbHVlKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG5h
bWVBdHRyKSB7Ci0gICAgICAgIG1fZnJhbWVOYW1lID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAg
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwor
ICAgICAgICBtX2ZyYW1lTmFtZSA9IHZhbHVlOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBuYW1l
QXR0cikgeworICAgICAgICBtX2ZyYW1lTmFtZSA9IHZhbHVlOwogICAgICAgICAvLyBGSVhNRTog
SWYgd2UgYXJlIGFscmVhZHkgYXR0YWNoZWQsIHRoaXMgZG9lc24ndCBhY3R1YWxseSBjaGFuZ2Ug
dGhlIGZyYW1lJ3MgbmFtZS4KICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0
dGFjaGVkLCB0aGlzIGRvZXNuJ3QgY2hlY2sgZm9yIGZyYW1lIG5hbWUKICAgICAgICAgLy8gY29u
ZmxpY3RzIGFuZCBnZW5lcmF0ZSBhIHVuaXF1ZSBmcmFtZSBuYW1lLgotICAgIH0gZWxzZSBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBtYXJnaW53aWR0aEF0dHIpIHsKLSAgICAgICAgbV9tYXJnaW5X
aWR0aCA9IGF0dHJpYnV0ZS52YWx1ZSgpLnRvSW50KCk7CisgICAgfSBlbHNlIGlmIChuYW1lID09
IG1hcmdpbndpZHRoQXR0cikgeworICAgICAgICBtX21hcmdpbldpZHRoID0gdmFsdWUudG9JbnQo
KTsKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhh
cyBubyBlZmZlY3QuCi0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG1hcmdpbmhl
aWdodEF0dHIpIHsKLSAgICAgICAgbV9tYXJnaW5IZWlnaHQgPSBhdHRyaWJ1dGUudmFsdWUoKS50
b0ludCgpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBtYXJnaW5oZWlnaHRBdHRyKSB7CisgICAg
ICAgIG1fbWFyZ2luSGVpZ2h0ID0gdmFsdWUudG9JbnQoKTsKICAgICAgICAgLy8gRklYTUU6IElm
IHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVkLCB0aGlzIGhhcyBubyBlZmZlY3QuCi0gICAgfSBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNjcm9sbGluZ0F0dHIpIHsKKyAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gc2Nyb2xsaW5nQXR0cikgewogICAgICAgICAvLyBBdXRvIGFuZCB5ZXMgYm90aCBz
aW1wbHkgbWVhbiAiYWxsb3cgc2Nyb2xsaW5nLiIgTm8gbWVhbnMgImRvbid0IGFsbG93IHNjcm9s
bGluZy4iCi0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGUudmFsdWUoKSwg
ImF1dG8iKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGUudmFsdWUoKSwgInllcyIpKQor
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJhdXRvIikgfHwgZXF1YWxJZ25v
cmluZ0Nhc2UodmFsdWUsICJ5ZXMiKSkKICAgICAgICAgICAgIG1fc2Nyb2xsaW5nID0gZG9jdW1l
bnQoKS0+ZnJhbWVFbGVtZW50c1Nob3VsZElnbm9yZVNjcm9sbGluZygpID8gU2Nyb2xsYmFyQWx3
YXlzT2ZmIDogU2Nyb2xsYmFyQXV0bzsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYXR0cmlidXRlLnZhbHVlKCksICJubyIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9y
aW5nQ2FzZSh2YWx1ZSwgIm5vIikpCiAgICAgICAgICAgICBtX3Njcm9sbGluZyA9IFNjcm9sbGJh
ckFsd2F5c09mZjsKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGFyZSBhbHJlYWR5IGF0dGFjaGVk
LCB0aGlzIGhhcyBubyBlZmZlY3QuCi0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IHZpZXdzb3VyY2VBdHRyKSB7Ci0gICAgICAgIG1fdmlld1NvdXJjZSA9ICFhdHRyaWJ1dGUuaXNO
dWxsKCk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IHZpZXdzb3VyY2VBdHRyKSB7CisgICAgICAg
IG1fdmlld1NvdXJjZSA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAgaWYgKGNvbnRlbnRGcmFt
ZSgpKQogICAgICAgICAgICAgY29udGVudEZyYW1lKCktPnNldEluVmlld1NvdXJjZU1vZGUodmll
d1NvdXJjZU1vZGUoKSk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ubG9h
ZEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxv
YWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsK
LSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCi0gICAg
ICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICBl
bHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYmVmb3JldW5sb2FkQXR0cikgeworICAgIH0g
ZWxzZSBpZiAobmFtZSA9PSBvbmxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9h
ZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJl
Zm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2
YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25iZWZvcmV1bmxvYWRBdHRyKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBzaG91bGQgPGZyYW1lPiBlbGVtZW50cyBoYXZlIGJlZm9yZXVubG9hZCBo
YW5kbGVycz8KLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
YmVmb3JldW5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cmlidXRlKSk7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmJlZm9yZXVubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5h
bWUsIHZhbHVlKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OnNldE5hbWVBbmRPcGVuVVJMKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
RWxlbWVudEJhc2UuaAppbmRleCBiZTlhYmM4Li43YWY5NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5oCkBAIC00OSw3ICs0OSw3IEBAIHByb3RlY3RlZDoK
IAogICAgIGJvb2wgaXNVUkxBbGxvd2VkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5z
ZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Tm90aWZ5U3VidHJlZUluc2VydGlvbnMoQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuY3BwCmluZGV4IDg5ZTM0YTIuLmU4OWY2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtNzksMjEgKzc5LDIwIEBAIHZvaWQgSFRNTEZy
YW1lU2V0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShhdHRyaWJ1dGUsIHN0eWxlKTsKIH0KIAotdm9pZCBIVE1MRnJhbWVTZXRF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQg
SFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSByb3dzQXR0cikgewotICAgICAgICBpZiAoIWF0dHJpYnV0ZS5pc051bGwoKSkgewot
ICAgICAgICAgICAgbV9yb3dMZW5ndGhzID0gbmV3TGVuZ3RoQXJyYXkoYXR0cmlidXRlLnZhbHVl
KCkuc3RyaW5nKCksIG1fdG90YWxSb3dzKTsKKyAgICBpZiAobmFtZSA9PSByb3dzQXR0cikgewor
ICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX3Jvd0xlbmd0aHMg
PSBuZXdMZW5ndGhBcnJheSh2YWx1ZS5zdHJpbmcoKSwgbV90b3RhbFJvd3MpOwogICAgICAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IGNvbHNBdHRyKSB7Ci0gICAgICAgIGlmICghYXR0cmlidXRlLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBtX2NvbExlbmd0aHMgPSBuZXdMZW5ndGhBcnJheShhdHRyaWJ1
dGUudmFsdWUoKS5zdHJpbmcoKSwgbV90b3RhbENvbHMpOworICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBjb2xzQXR0cikgeworICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKSB7CisgICAgICAgICAg
ICBtX2NvbExlbmd0aHMgPSBuZXdMZW5ndGhBcnJheSh2YWx1ZS5zdHJpbmcoKSwgbV90b3RhbENv
bHMpOwogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICB9Ci0gICAg
fSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGZyYW1lYm9yZGVyQXR0cikgewotICAgICAg
ICBpZiAoIWF0dHJpYnV0ZS5pc051bGwoKSkgewotICAgICAgICAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBm
cmFtZWJvcmRlckF0dHIpIHsKKyAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkgewogICAgICAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAibm8iKSB8fCBlcXVhbElnbm9yaW5n
Q2FzZSh2YWx1ZSwgIjAiKSkgewogICAgICAgICAgICAgICAgIG1fZnJhbWVib3JkZXIgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICBtX2ZyYW1lYm9yZGVyU2V0ID0gdHJ1ZTsKQEAgLTEwNCw1MCAr
MTAzLDUwIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgICAgICBtX2ZyYW1lYm9yZGVyID0gZmFsc2U7
CiAgICAgICAgICAgICBtX2ZyYW1lYm9yZGVyU2V0ID0gZmFsc2U7CiAgICAgICAgIH0KLSAgICB9
IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gbm9yZXNpemVBdHRyKSB7CisgICAgfSBlbHNl
IGlmIChuYW1lID09IG5vcmVzaXplQXR0cikgewogICAgICAgICBtX25vcmVzaXplID0gdHJ1ZTsK
LSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gYm9yZGVyQXR0cikgewotICAgICAg
ICBpZiAoIWF0dHJpYnV0ZS5pc051bGwoKSkgewotICAgICAgICAgICAgbV9ib3JkZXIgPSBhdHRy
aWJ1dGUudmFsdWUoKS50b0ludCgpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBib3JkZXJBdHRy
KSB7CisgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fYm9yZGVy
ID0gdmFsdWUudG9JbnQoKTsKICAgICAgICAgICAgIG1fYm9yZGVyU2V0ID0gdHJ1ZTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBtX2JvcmRlclNldCA9IGZhbHNlOwotICAgIH0gZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIpCi0gICAgICAgIG1fYm9yZGVy
Q29sb3JTZXQgPSAhYXR0cmlidXRlLmlzRW1wdHkoKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUu
bmFtZSgpID09IG9ubG9hZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYmVmb3JldW5sb2FkQXR0cikKLSAgICAgICAgZG9j
dW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmVm
b3JldW5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+
ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBv
bnVubG9hZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gb25ibHVyQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOwot
ICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25mb2N1c0F0dHIpCi0gICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZv
Y3VzRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmZvY3Vz
aW5BdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5mb2N1c2luRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBvbmZvY3Vzb3V0QXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUp
KTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gYm9yZGVyY29sb3JBdHRyKQorICAgICAgICBtX2Jv
cmRlckNvbG9yU2V0ID0gIXZhbHVlLmlzRW1wdHkoKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9u
bG9hZEF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihkb2N1bWVudCgpLT5mcmFtZSgpLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gb25iZWZvcmV1bmxvYWRBdHRyKQorICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBuYW1lLCB2YWx1ZSkp
OworICAgIGVsc2UgaWYgKG5hbWUgPT0gb251bmxvYWRBdHRyKQorICAgICAgICBkb2N1bWVudCgp
LT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBuYW1l
LCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25ibHVyQXR0cikKKyAgICAgICAgZG9j
dW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1
ckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCks
IG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbmZvY3VzQXR0cikKKyAgICAg
ICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuZm9jdXNFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5m
cmFtZSgpLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25mb2N1c2luQXR0
cikKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuZm9jdXNpbkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRv
Y3VtZW50KCktPmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBv
bmZvY3Vzb3V0QXR0cikKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNvdXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBuYW1lLCB2YWx1ZSkpOwogI2lmIEVOQUJM
RShPUklFTlRBVElPTl9FVkVOVFMpCi0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBv
bm9yaWVudGF0aW9uY2hhbmdlQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1
dGUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ub3JpZW50YXRpb25jaGFuZ2VBdHRyKQorICAg
ICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5vcmllbnRhdGlvbmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGRvY3VtZW50KCktPmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7CiAjZW5kaWYKLSAgICBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IG9uaGFzaGNoYW5nZUF0dHIpCi0gICAgICAgIGRvY3VtZW50
KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmhhc2hjaGFu
Z2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgp
LCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucmVzaXpl
QXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBvbnNjcm9sbEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjcmVhdGVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkpOwotICAg
IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25zdG9yYWdlQXR0cikKLSAgICAgICAgZG9j
dW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3Rv
cmFnZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1l
KCksIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25vbmxp
bmVBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IG9ub2ZmbGluZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUpKTsK
LSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucG9wc3RhdGVBdHRyKQotICAgICAg
ICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5wb3BzdGF0ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCkt
PmZyYW1lKCksIGF0dHJpYnV0ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25oYXNoY2hhbmdl
QXR0cikKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGRvY3VtZW50KCktPmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFt
ZSA9PSBvbnJlc2l6ZUF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7CisgICAgZWxz
ZSBpZiAobmFtZSA9PSBvbnNjcm9sbEF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIG5hbWUsIHZhbHVlKSk7
CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnN0b3JhZ2VBdHRyKQorICAgICAgICBkb2N1bWVudCgp
LT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFt
ZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ub25saW5lQXR0cikKKyAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
b25saW5lRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJh
bWUoKSwgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ub2ZmbGluZUF0dHIp
CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLm9mZmxpbmVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1
bWVudCgpLT5mcmFtZSgpLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25w
b3BzdGF0ZUF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUpKTsKICAgICBlbHNlCi0g
ICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBI
VE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBib29sIEhUTUxG
cmFtZVNldEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNl
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oCmlu
ZGV4IDkyZWQ1NjQuLjkwYWU0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lU2V0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0
RWxlbWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEZy
YW1lU2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXggYTVmZjZiYS4uMTE5NWRjZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKQEAgLTc3LDI5ICs3NywyOCBAQCB2
b2lkIEhUTUxJRnJhbWVFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJiBhdAogICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6Y29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZSwgc3R5bGUpOwogfQog
Ci12b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAg
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKLSAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdOYW1lID0gYXR0cmlidXRlLnZhbHVlKCk7CisgICAgaWYgKG5hbWUgPT0gbmFt
ZUF0dHIpIHsKICAgICAgICAgaWYgKGluRG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKSB7CiAgICAgICAgICAgICBIVE1MRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8SFRNTERvY3VtZW50Kj4odGhpcy0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBkb2N1
bWVudC0+cmVtb3ZlRXh0cmFOYW1lZEl0ZW0obV9uYW1lKTsKLSAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRFeHRyYU5hbWVkSXRlbShuZXdOYW1lKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRF
eHRyYU5hbWVkSXRlbSh2YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9uYW1lID0gbmV3TmFt
ZTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc2FuZGJveEF0dHIpIHsKKyAg
ICAgICAgbV9uYW1lID0gdmFsdWU7CisgICAgfSBlbHNlIGlmIChuYW1lID09IHNhbmRib3hBdHRy
KSB7CiAgICAgICAgIFN0cmluZyBpbnZhbGlkVG9rZW5zOwotICAgICAgICBzZXRTYW5kYm94Rmxh
Z3MoYXR0cmlidXRlLmlzTnVsbCgpID8gU2FuZGJveE5vbmUgOiBTZWN1cml0eUNvbnRleHQ6OnBh
cnNlU2FuZGJveFBvbGljeShhdHRyaWJ1dGUudmFsdWUoKSwgaW52YWxpZFRva2VucykpOworICAg
ICAgICBzZXRTYW5kYm94RmxhZ3ModmFsdWUuaXNOdWxsKCkgPyBTYW5kYm94Tm9uZSA6IFNlY3Vy
aXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KHZhbHVlLCBpbnZhbGlkVG9rZW5zKSk7CiAg
ICAgICAgIGlmICghaW52YWxpZFRva2Vucy5pc051bGwoKSkgewogICAgICAgICAgICAgaW50IGxp
bmUgPSBkb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSA/IGRvY3VtZW50KCkt
PnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCkub25lQmFzZWRJbnQoKSA6
IDA7CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShIVE1MTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiRXJyb3Igd2hpbGUg
cGFyc2luZyB0aGUgJ3NhbmRib3gnIGF0dHJpYnV0ZTogIiArIGludmFsaWRUb2tlbnMsIGRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZygpLCBsaW5lKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBzZWFtbGVzc0F0dHIpIHsKKyAgICB9IGVsc2UgaWYgKG5hbWUg
PT0gc2VhbWxlc3NBdHRyKSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGFkZGluZyBvciByZW1vdmlu
ZyB0aGUgc2VhbWxlc3MgYXR0cmlidXRlLCB3ZSBuZWVkIHRvIGZvcmNlIHRoZSBjb250ZW50IGRv
Y3VtZW50IHRvIHJlY2FsY3VsYXRlIGl0cyBTdHlsZVJlc29sdmVyLgogICAgICAgICBpZiAoY29u
dGVudERvY3VtZW50KCkpCiAgICAgICAgICAgICBjb250ZW50RG9jdW1lbnQoKS0+c3R5bGVSZXNv
bHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIEhUTUxG
cmFtZUVsZW1lbnRCYXNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBIVE1M
RnJhbWVFbGVtZW50QmFzZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBib29s
IEhUTUxJRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCmlu
ZGV4IGU0YzM5MDQuLmFjOGRmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MSUZyYW1l
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
LCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDI0NDY4NDQuLjY5ZDhiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAtMTU5LDI3ICsxNTksMjcgQEAgdm9pZCBIVE1M
SW1hZ2VFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHQKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNl
bnRhdGlvbkF0dHJpYnV0ZShhdHRyaWJ1dGUsIHN0eWxlKTsKIH0KIAotdm9pZCBIVE1MSW1hZ2VF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQg
SFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBhbHRBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gYWx0QXR0cikgewogICAgICAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHNoYWRvdygpID8gaW5uZXJFbGVtZW50KCktPnJlbmRl
cmVyKCkgOiByZW5kZXJlcigpOwogICAgICAgICBpZiAocmVuZGVyT2JqZWN0ICYmIHJlbmRlck9i
amVjdC0+aXNJbWFnZSgpKQogICAgICAgICAgICAgdG9SZW5kZXJJbWFnZShyZW5kZXJPYmplY3Qp
LT51cGRhdGVBbHRUZXh0KCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNy
Y0F0dHIpIHsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gc3JjQXR0cikgewogICAgICAgICBtX2lt
YWdlTG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50SWdub3JpbmdQcmV2aW91c0Vycm9yKCk7CiAgICAg
ICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93KCkpCiAgICAgICAg
ICAgICBlbGVtZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7Ci0gICAgfSBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHVzZW1hcEF0dHIpCi0gICAgICAgIHNldElzTGluaygh
YXR0cmlidXRlLmlzTnVsbCgpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9u
bG9hZEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUp
KTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYmVmb3JlbG9hZEF0dHIpCi0g
ICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRF
dmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAg
ICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGNvbXBvc2l0ZUF0dHIpIHsKLSAgICAgICAg
aWYgKCFwYXJzZUNvbXBvc2l0ZU9wZXJhdG9yKGF0dHJpYnV0ZS52YWx1ZSgpLCBtX2NvbXBvc2l0
ZU9wZXJhdG9yKSkKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gdXNlbWFwQXR0cikKKyAgICAgICAg
c2V0SXNMaW5rKCF2YWx1ZS5pc051bGwoKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbmxvYWRB
dHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2Fk
RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsK
KyAgICBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5h
bWUgPT0gY29tcG9zaXRlQXR0cikgeworICAgICAgICBpZiAoIXBhcnNlQ29tcG9zaXRlT3BlcmF0
b3IodmFsdWUsIG1fY29tcG9zaXRlT3BlcmF0b3IpKQogICAgICAgICAgICAgbV9jb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAgICAgfSBlbHNlCi0gICAgICAgIEhUTUxF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBIVE1MRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgSFRNTEltYWdlRWxlbWVu
dDo6YWx0VGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmlu
ZGV4IGRlNWUxOWMuLjVmNWViZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZlNvdXJjZUVsZW1l
bnQoKSB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZlNvdXJjZUVsZW1lbnQoKSB7IGRlcmVmKCk7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBp
c1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGFiNzdlMjMuLjZiMjgzMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNjQ4LDIxICs2
NDgsMjEgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHQKICAgICAgICAgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRyaWJ1
dGUsIHN0eWxlKTsKIH0KIAotdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBuYW1lQXR0cikgeworICAgIGlm
IChuYW1lID09IG5hbWVBdHRyKSB7CiAgICAgICAgIHJlbW92ZUZyb21SYWRpb0J1dHRvbkdyb3Vw
KCk7Ci0gICAgICAgIG1fbmFtZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgICAgICBtX25hbWUg
PSB2YWx1ZTsKICAgICAgICAgYWRkVG9SYWRpb0J1dHRvbkdyb3VwKCk7Ci0gICAgICAgIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgIH0g
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBhdXRvY29tcGxldGVBdHRyKSB7Ci0gICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGUudmFsdWUoKSwgIm9mZiIpKSB7CisgICAg
ICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IGF1dG9jb21wbGV0ZUF0dHIpIHsKKyAgICAgICAg
aWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAib2ZmIikpIHsKICAgICAgICAgICAgIG1fYXV0
b2NvbXBsZXRlID0gT2ZmOwogICAgICAgICAgICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJh
Y2tJZk5lZWRlZCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYm9vbCBuZWVkc1Rv
VW5yZWdpc3RlciA9IG1fYXV0b2NvbXBsZXRlID09IE9mZjsKIAotICAgICAgICAgICAgaWYgKGF0
dHJpYnV0ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIG1fYXV0b2NvbXBsZXRlID0gVW5pbml0aWFsaXplZDsKICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICBtX2F1dG9jb21wbGV0ZSA9IE9uOwpAQCAtNjcwLDkgKzY3
MCw5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgICAgICBpZiAobmVlZHNUb1VucmVnaXN0ZXIpCiAgICAg
ICAgICAgICAgICAgdW5yZWdpc3RlckZvclN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CiAg
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gdHlwZUF0dHIpIHsK
KyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gdHlwZUF0dHIpCiAgICAgICAgIHVwZGF0ZVR5cGUoKTsK
LSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gdmFsdWVBdHRyKSB7CisgICAgZWxz
ZSBpZiAobmFtZSA9PSB2YWx1ZUF0dHIpIHsKICAgICAgICAgLy8gQ2hhbmdlcyB0byB0aGUgdmFs
dWUgYXR0cmlidXRlIG1heSBjaGFuZ2Ugd2hldGhlciBvciBub3QgdGhpcyBlbGVtZW50IGhhcyBh
IGRlZmF1bHQgdmFsdWUuCiAgICAgICAgIC8vIElmIHRoaXMgZmllbGQgaXMgYXV0b2NvbXBsZXRl
PW9mZiB0aGF0IG1pZ2h0IGFmZmVjdCB0aGUgcmV0dXJuIHZhbHVlIG9mIG5lZWRzU3VzcGVuc2lv
bkNhbGxiYWNrLgogICAgICAgICBpZiAobV9hdXRvY29tcGxldGUgPT0gT2ZmKSB7CkBAIC02ODcs
NjMgKzY4Nyw2MyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKGZhbHNlKTsKICAgICAgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiAgICAg
ICAgIG1fdmFsdWVBdHRyaWJ1dGVXYXNVcGRhdGVkQWZ0ZXJQYXJzaW5nID0gIW1fcGFyc2luZ0lu
UHJvZ3Jlc3M7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGNoZWNrZWRBdHRy
KSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IGNoZWNrZWRBdHRyKSB7CiAgICAgICAgIC8vIEFu
b3RoZXIgcmFkaW8gYnV0dG9uIGluIHRoZSBzYW1lIGdyb3VwIG1pZ2h0IGJlIGNoZWNrZWQgYnkg
c3RhdGUKICAgICAgICAgLy8gcmVzdG9yZS4gV2Ugc2hvdWxkbid0IGNhbGwgc2V0Q2hlY2tlZCgp
IGV2ZW4gaWYgdGhpcyBoYXMgdGhlIGNoZWNrZWQKICAgICAgICAgLy8gYXR0cmlidXRlLiBTbywg
ZGVsYXkgdGhlIHNldENoZWNrZWQoKSBjYWxsIHVudGlsCiAgICAgICAgIC8vIGZpbmlzaFBhcnNp
bmdDaGlsZHJlbigpIGlzIGNhbGxlZCBpZiBwYXJzaW5nIGlzIGluIHByb2dyZXNzLgogICAgICAg
ICBpZiAoIW1fcGFyc2luZ0luUHJvZ3Jlc3MgJiYgbV9yZWZsZWN0c0NoZWNrZWRBdHRyaWJ1dGUp
IHsKLSAgICAgICAgICAgIHNldENoZWNrZWQoIWF0dHJpYnV0ZS5pc051bGwoKSk7CisgICAgICAg
ICAgICBzZXRDaGVja2VkKCF2YWx1ZS5pc051bGwoKSk7CiAgICAgICAgICAgICBtX3JlZmxlY3Rz
Q2hlY2tlZEF0dHJpYnV0ZSA9IHRydWU7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gbWF4bGVuZ3RoQXR0cikKLSAgICAgICAgcGFyc2VNYXhMZW5ndGhBdHRy
aWJ1dGUoYXR0cmlidXRlKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNpemVB
dHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG1heGxlbmd0aEF0dHIpCisgICAgICAgIHBh
cnNlTWF4TGVuZ3RoQXR0cmlidXRlKHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IHNpemVB
dHRyKSB7CiAgICAgICAgIGludCBvbGRTaXplID0gbV9zaXplOwotICAgICAgICBpbnQgdmFsdWUg
PSBhdHRyaWJ1dGUudmFsdWUoKS50b0ludCgpOwotICAgICAgICBtX3NpemUgPSB2YWx1ZSA+IDAg
PyB2YWx1ZSA6IGRlZmF1bHRTaXplOworICAgICAgICBpbnQgdmFsdWVBc0ludGVnZXIgPSB2YWx1
ZS50b0ludCgpOworICAgICAgICBtX3NpemUgPSB2YWx1ZUFzSW50ZWdlciA+IDAgPyB2YWx1ZUFz
SW50ZWdlciA6IGRlZmF1bHRTaXplOwogICAgICAgICBpZiAobV9zaXplICE9IG9sZFNpemUgJiYg
cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0QW5kUHJl
ZldpZHRoc1JlY2FsYygpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBhbHRB
dHRyKQorICAgIH0gZWxzZSBpZiAobmFtZSA9PSBhbHRBdHRyKQogICAgICAgICBtX2lucHV0VHlw
ZS0+YWx0QXR0cmlidXRlQ2hhbmdlZCgpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gc3JjQXR0cikKKyAgICBlbHNlIGlmIChuYW1lID09IHNyY0F0dHIpCiAgICAgICAgIG1faW5w
dXRUeXBlLT5zcmNBdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSB1c2VtYXBBdHRyIHx8IGF0dHJpYnV0ZS5uYW1lKCkgPT0gYWNjZXNza2V5QXR0cikg
eworICAgIGVsc2UgaWYgKG5hbWUgPT0gdXNlbWFwQXR0ciB8fCBuYW1lID09IGFjY2Vzc2tleUF0
dHIpIHsKICAgICAgICAgLy8gRklYTUU6IGlnbm9yZSBmb3IgdGhlIG1vbWVudAotICAgIH0gZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnNlYXJjaEF0dHIpIHsKKyAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gb25zZWFyY2hBdHRyKSB7CiAgICAgICAgIC8vIFNlYXJjaCBmaWVsZCBhbmQgc2xp
ZGVyIGF0dHJpYnV0ZXMgYWxsIGp1c3QgY2F1c2UgdXBkYXRlRnJvbUVsZW1lbnQgdG8gYmUgY2Fs
bGVkIHRocm91Z2ggc3R5bGUgcmVjYWxjaW5nLgotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5zZWFyY2hFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gcmVzdWx0c0F0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuc2VhcmNoRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
bmFtZSwgdmFsdWUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVzdWx0c0F0dHIpIHsKICAg
ICAgICAgaW50IG9sZFJlc3VsdHMgPSBtX21heFJlc3VsdHM7Ci0gICAgICAgIG1fbWF4UmVzdWx0
cyA9ICFhdHRyaWJ1dGUuaXNOdWxsKCkgPyBzdGQ6Om1pbihhdHRyaWJ1dGUudmFsdWUoKS50b0lu
dCgpLCBtYXhTYXZlZFJlc3VsdHMpIDogLTE7CisgICAgICAgIG1fbWF4UmVzdWx0cyA9ICF2YWx1
ZS5pc051bGwoKSA/IHN0ZDo6bWluKHZhbHVlLnRvSW50KCksIG1heFNhdmVkUmVzdWx0cykgOiAt
MTsKICAgICAgICAgLy8gRklYTUU6IERldGFjaGluZyBqdXN0IGZvciBtYXhSZXN1bHRzIGNoYW5n
ZSBpcyBub3QgaWRlYWwuICBXZSBzaG91bGQgZmlndXJlIG91dCB0aGUgcmlnaHQKICAgICAgICAg
Ly8gdGltZSB0byByZWxheW91dCBmb3IgdGhpcyBjaGFuZ2UuCiAgICAgICAgIGlmIChtX21heFJl
c3VsdHMgIT0gb2xkUmVzdWx0cyAmJiAobV9tYXhSZXN1bHRzIDw9IDAgfHwgb2xkUmVzdWx0cyA8
PSAwKSkKICAgICAgICAgICAgIHJlYXR0YWNoSWZBdHRhY2hlZCgpOwogICAgICAgICBzZXROZWVk
c1N0eWxlUmVjYWxjKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGF1dG9z
YXZlQXR0ciB8fCBhdHRyaWJ1dGUubmFtZSgpID09IGluY3JlbWVudGFsQXR0cikKKyAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gYXV0b3NhdmVBdHRyIHx8IG5hbWUgPT0gaW5jcmVtZW50YWxBdHRyKQog
ICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBtaW5BdHRyIHx8IGF0dHJpYnV0ZS5uYW1lKCkgPT0gbWF4QXR0cikgeworICAgIGVs
c2UgaWYgKG5hbWUgPT0gbWluQXR0ciB8fCBuYW1lID09IG1heEF0dHIpIHsKICAgICAgICAgbV9p
bnB1dFR5cGUtPm1pbk9yTWF4QXR0cmlidXRlQ2hhbmdlZCgpOwogICAgICAgICBzZXROZWVkc1Zh
bGlkaXR5Q2hlY2soKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gbXVsdGlw
bGVBdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG11bHRpcGxlQXR0cikgewogICAgICAg
ICBtX2lucHV0VHlwZS0+bXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkKCk7CiAgICAgICAgIHNldE5l
ZWRzVmFsaWRpdHlDaGVjaygpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBz
dGVwQXR0cikgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzdGVwQXR0cikgewogICAgICAgICBt
X2lucHV0VHlwZS0+c3RlcEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICAgICAgc2V0TmVlZHNWYWxp
ZGl0eUNoZWNrKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHBhdHRlcm5B
dHRyIHx8IGF0dHJpYnV0ZS5uYW1lKCkgPT0gcHJlY2lzaW9uQXR0cikKKyAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gcGF0dGVybkF0dHIgfHwgbmFtZSA9PSBwcmVjaXNpb25BdHRyKQogICAgICAgICBz
ZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IGRpc2FibGVkQXR0cikgewotICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IGRpc2FibGVkQXR0
cikgeworICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOwogICAgICAgICBtX2lucHV0VHlwZS0+ZGlzYWJsZWRBdHRyaWJ1dGVDaGFu
Z2VkKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHJlYWRvbmx5QXR0cikg
ewotICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0
cmlidXRlKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gcmVhZG9ubHlBdHRyKSB7CisgICAgICAg
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiAgICAgICAgIG1faW5wdXRUeXBlLT5yZWFkb25seUF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB9
CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBsaXN0QXR0cikgewotICAgICAgICBtX2hhc05vbkVtcHR5TGlzdCA9ICFhdHRyaWJ1
dGUuaXNFbXB0eSgpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gbGlzdEF0dHIpIHsKKyAgICAgICAg
bV9oYXNOb25FbXB0eUxpc3QgPSAhdmFsdWUuaXNFbXB0eSgpOwogICAgICAgICBpZiAobV9oYXNO
b25FbXB0eUxpc3QpIHsKICAgICAgICAgICAgIHJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2Vy
dmVyKCk7CiAgICAgICAgICAgICBsaXN0QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpOwpAQCAtNzUx
LDcgKzc1MSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHdlYmtpdHNwZWVjaEF0dHIp
IHsKKyAgICBlbHNlIGlmIChuYW1lID09IHdlYmtpdHNwZWVjaEF0dHIpIHsKICAgICAgICAgaWYg
KHJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIC8vIFRoaXMgcmVuZGVyZXIgYW5kIGl0cyBjaGls
ZHJlbiBoYXZlIHF1aXRlIGRpZmZlcmVudCBsYXlvdXRzIGFuZCBzdHlsZXMgZGVwZW5kaW5nIG9u
CiAgICAgICAgICAgICAvLyB3aGV0aGVyIHRoZSBzcGVlY2ggYnV0dG9uIGlzIHZpc2libGUgb3Ig
bm90LiBTbyB3ZSByZXNldCB0aGUgd2hvbGUgdGhpbmcgYW5kIHJlY3JlYXRlCkBAIC03NjYsMTEg
Kzc2NiwxMSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICB9CiAgICAgICAgIHNldEZvcm1Db250cm9sVmFs
dWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOwogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7
Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ud2Via2l0c3BlZWNoY2hhbmdl
QXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Vi
a2l0c3BlZWNoY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
YXR0cmlidXRlKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG9ud2Via2l0c3BlZWNoY2hhbmdl
QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Vi
a2l0c3BlZWNoY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
bmFtZSwgdmFsdWUpKTsKICNlbmRpZgogICAgIGVsc2UKLSAgICAgICAgSFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgbV9p
bnB1dFR5cGUtPnVwZGF0ZUlubmVyVGV4dFZhbHVlKCk7CiB9CiAKQEAgLTE3NTgsMTAgKzE3NTgs
MTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogICAg
IHJldHVybiBtX2lucHV0VHlwZS0+dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCk7CiB9CiAKLXZvaWQg
SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyaWJ1dGUpCit2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWF4TGVuZ3RoQXR0cmli
dXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaW50IG1heExlbmd0aDsKLSAg
ICBpZiAoIXBhcnNlSFRNTEludGVnZXIoYXR0cmlidXRlLnZhbHVlKCksIG1heExlbmd0aCkpCisg
ICAgaWYgKCFwYXJzZUhUTUxJbnRlZ2VyKHZhbHVlLCBtYXhMZW5ndGgpKQogICAgICAgICBtYXhM
ZW5ndGggPSBtYXhpbXVtTGVuZ3RoOwogICAgIGlmIChtYXhMZW5ndGggPCAwIHx8IG1heExlbmd0
aCA+IG1heGltdW1MZW5ndGgpCiAgICAgICAgIG1heExlbmd0aCA9IG1heGltdW1MZW5ndGg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGY1MTk3ZmUuLjA0NzFhM2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC0zMzgsNyArMzM4LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5k
TW91c2VFdmVudHMpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CkBAIC0zOTQsNyAr
Mzk0LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2b2lk
IHJlc2V0TGlzdEF0dHJpYnV0ZVRhcmdldE9ic2VydmVyKCk7CiAjZW5kaWYKLSAgICB2b2lkIHBh
cnNlTWF4TGVuZ3RoQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpOworICAgIHZvaWQgcGFyc2VN
YXhMZW5ndGhBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVW
YWx1ZUlmTmVlZGVkKCk7CiAKICAgICAvLyBSZXR1cm5zIG51bGwgaWYgdGhpcyBpc24ndCBhc3Nv
Y2lhdGVkIHdpdGggYW55IHJhZGlvIGJ1dHRvbiBncm91cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MS2V5Z2VuRWxlbWVudC5jcHAKaW5kZXggYzcyNjI1ZS4uMWU0ZWMwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKQEAgLTkyLDEzICs5MiwxMyBAQCBQYXNz
UmVmUHRyPEhUTUxLZXlnZW5FbGVtZW50PiBIVE1MS2V5Z2VuRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEtleWdlbkVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0pKTsKIH0KIAotdm9pZCBIVE1MS2V5Z2VuRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIEhU
TUxLZXlnZW5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIFJlZmxlY3QgZGlzYWJsZWQg
YXR0cmlidXRlIG9uIHRoZSBzaGFkb3cgc2VsZWN0IGVsZW1lbnQKLSAgICBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpCi0gICAgICAgIHNoYWRvd1NlbGVjdCgpLT5zZXRBdHRy
aWJ1dGUoYXR0cmlidXRlLm5hbWUoKSwgYXR0cmlidXRlLnZhbHVlKCkpOworICAgIGlmIChuYW1l
ID09IGRpc2FibGVkQXR0cikKKyAgICAgICAgc2hhZG93U2VsZWN0KCktPnNldEF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiAKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShhdHRyaWJ1dGUpOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MS2V5Z2VuRWxlbWVudDo6YXBwZW5kRm9ybURh
dGEoRm9ybURhdGFMaXN0JiBlbmNvZGVkX3ZhbHVlcywgYm9vbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuaAppbmRleCBlM2M5MTI5Li4wNDhkNTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCk7CiAgICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTExJRWxlbWVudC5jcHAKaW5kZXggYmU2ZTgyYS4uNjc1MzY1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMSUVsZW1lbnQuY3BwCkBAIC03NiwxMyArNzYsMTMgQEAgdm9pZCBIVE1MTElFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyaWIKICAgICAgICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShhdHRyaWJ1dGUsIHN0eWxlKTsKIH0KIAotdm9pZCBIVE1MTElFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTExJRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSB2YWx1ZUF0
dHIpIHsKKyAgICBpZiAobmFtZSA9PSB2YWx1ZUF0dHIpIHsKICAgICAgICAgaWYgKHJlbmRlcmVy
KCkgJiYgcmVuZGVyZXIoKS0+aXNMaXN0SXRlbSgpKQotICAgICAgICAgICAgcGFyc2VWYWx1ZShh
dHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgICAgICBwYXJzZVZhbHVlKHZhbHVlKTsKICAgICB9
IGVsc2UKLSAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Cisg
ICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIHZv
aWQgSFRNTExJRWxlbWVudDo6YXR0YWNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExJRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmgK
aW5kZXggNTA4YWEyNS4uY2YwZWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTElFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmgK
QEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MTElFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIFN0eWxlUHJv
cGVydHlTZXQqKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQu
Y3BwCmluZGV4IDRhM2RjZmMuLjQ5MWQ3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAKQEAgLTEzMCwzNiArMTMwLDM2IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpz
ZXREaXNhYmxlZFN0YXRlKGJvb2wgZGlzYWJsZWQpCiAgICAgfQogfQogCi12b2lkIEhUTUxMaW5r
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lk
IEhUTUxMaW5rRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSByZWxBdHRyKSB7Ci0gICAgICAgIG1fcmVsQXR0cmlidXRlID0gTGlua1JlbEF0dHJpYnV0
ZShhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgaWYgKG5hbWUgPT0gcmVsQXR0cikgeworICAgICAg
ICBtX3JlbEF0dHJpYnV0ZSA9IExpbmtSZWxBdHRyaWJ1dGUodmFsdWUpOwogICAgICAgICBwcm9j
ZXNzKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGhyZWZBdHRyKSB7Ci0g
ICAgICAgIFN0cmluZyB1cmwgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoYXR0
cmlidXRlLnZhbHVlKCkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBocmVmQXR0cikgeworICAg
ICAgICBTdHJpbmcgdXJsID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVl
KTsKICAgICAgICAgbV91cmwgPSB1cmwuaXNFbXB0eSgpID8gS1VSTCgpIDogZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwodXJsKTsKICAgICAgICAgcHJvY2VzcygpOwotICAgIH0gZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSB0eXBlQXR0cikgewotICAgICAgICBtX3R5cGUgPSBhdHRyaWJ1dGUu
dmFsdWUoKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gdHlwZUF0dHIpIHsKKyAgICAgICAgbV90
eXBlID0gdmFsdWU7CiAgICAgICAgIHByb2Nlc3MoKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gc2l6ZXNBdHRyKSB7Ci0gICAgICAgIHNldFNpemVzKGF0dHJpYnV0ZS52YWx1
ZSgpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gc2l6ZXNBdHRyKSB7CisgICAgICAgIHNldFNp
emVzKHZhbHVlKTsKICAgICAgICAgcHJvY2VzcygpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBtZWRpYUF0dHIpIHsKLSAgICAgICAgbV9tZWRpYSA9IGF0dHJpYnV0ZS52YWx1
ZSgpLnN0cmluZygpLmxvd2VyKCk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IG1lZGlhQXR0cikg
eworICAgICAgICBtX21lZGlhID0gdmFsdWUuc3RyaW5nKCkubG93ZXIoKTsKICAgICAgICAgcHJv
Y2VzcygpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIp
Ci0gICAgICAgIHNldERpc2FibGVkU3RhdGUoIWF0dHJpYnV0ZS5pc051bGwoKSk7Ci0gICAgZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmJlZm9yZWxvYWRBdHRyKQotICAgICAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBvbmxvYWRBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBvbmVycm9yQXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuZXJyb3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
aWJ1dGUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gZGlzYWJsZWRBdHRyKQorICAgICAgICBz
ZXREaXNhYmxlZFN0YXRlKCF2YWx1ZS5pc051bGwoKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBv
bmJlZm9yZWxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhp
cywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ubG9hZEF0dHIpCisgICAg
ICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2Ug
aWYgKG5hbWUgPT0gb25lcnJvckF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgbmFtZSwgdmFsdWUpKTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gdGl0bGVBdHRyICYmIG1fc2hlZXQpCi0gICAgICAgICAgICBtX3NoZWV0LT5zZXRU
aXRsZShhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBpZiAobmFtZSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVl
dCkKKyAgICAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKHZhbHVlKTsKKyAgICAgICAgSFRNTEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDBiNmM2YzkuLjJjNzE4YzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50cygpOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBib29sIHNob3Vs
ZExvYWRMaW5rKCk7CiAgICAgdm9pZCBwcm9jZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwCmluZGV4IGRlM2ZlZTQuLmQwMWVhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcEVsZW1lbnQuY3BwCkBAIC05OCwyMSArOTgsMjEgQEAgSFRNTEltYWdlRWxlbWVudCog
SFRNTE1hcEVsZW1lbnQ6OmltYWdlRWxlbWVudCgpCiAgICAgcmV0dXJuIDA7ICAgIAogfQogCi12
b2lkIEhUTUxNYXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSkKK3ZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgbG9naWMgc2VlbXMgd3JvbmcgZm9yIFhNTCBkb2N1bWVudHMuCiAgICAgLy8gRWl0aGVy
IHRoZSBpZCBvciBuYW1lIHdpbGwgYmUgdXNlZCBkZXBlbmRpbmcgb24gdGhlIG9yZGVyIHRoZSBh
dHRyaWJ1dGVzIGFyZSBwYXJzZWQuCiAKLSAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0cmli
dXRlLm5hbWUoKSkgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBuYW1lQXR0cikgewotICAgICAgICBp
ZiAoaXNJZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlLm5hbWUoKSkpIHsKKyAgICBpZiAoaXNJZEF0
dHJpYnV0ZU5hbWUobmFtZSkgfHwgbmFtZSA9PSBuYW1lQXR0cikgeworICAgICAgICBpZiAoaXNJ
ZEF0dHJpYnV0ZU5hbWUobmFtZSkpIHsKICAgICAgICAgICAgIC8vIENhbGwgYmFzZSBjbGFzcyBz
byB0aGF0IGhhc0lEIGJpdCBnZXRzIHNldC4KLSAgICAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxE
b2N1bWVudCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBp
ZiAoaW5Eb2N1bWVudCgpKQogICAgICAgICAgICAgdHJlZVNjb3BlKCktPnJlbW92ZUltYWdlTWFw
KHRoaXMpOwotICAgICAgICBTdHJpbmcgbWFwTmFtZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAg
ICAgICBTdHJpbmcgbWFwTmFtZSA9IHZhbHVlOwogICAgICAgICBpZiAobWFwTmFtZVswXSA9PSAn
IycpCiAgICAgICAgICAgICBtYXBOYW1lID0gbWFwTmFtZS5zdWJzdHJpbmcoMSk7CiAgICAgICAg
IG1fbmFtZSA9IGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkgPyBtYXBOYW1lLmxvd2VyKCkg
OiBtYXBOYW1lOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAg
SFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogUGFzc1JlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1hcEVsZW1lbnQuaAppbmRleCBmNzNhNjJiLi43NjY0MWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFwRWxlbWVudC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSFRNTE1hcEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0MDk1NDZhLi42ODk0
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM1OSwy
NCArMzU5LDI0IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNNb3VzZUZvY3VzYWJsZSgpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNyY0F0dHIp
IHsKKyAgICBpZiAobmFtZSA9PSBzcmNBdHRyKSB7CiAgICAgICAgIC8vIFRyaWdnZXIgYSByZWxv
YWQsIGFzIGxvbmcgYXMgdGhlICdzcmMnIGF0dHJpYnV0ZSBpcyBwcmVzZW50LgogICAgICAgICBp
ZiAoZmFzdEhhc0F0dHJpYnV0ZShzcmNBdHRyKSkgewogICAgICAgICAgICAgY2xlYXJNZWRpYVBs
YXllcihNZWRpYVJlc291cmNlKTsKICAgICAgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291
cmNlKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBjb250
cm9sc0F0dHIpCisgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbnRyb2xzQXR0cikKICAgICAgICAg
Y29uZmlndXJlTWVkaWFDb250cm9scygpOwogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IGxvb3BBdHRyKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gbG9v
cEF0dHIpCiAgICAgICAgIHVwZGF0ZURpc2FibGVTbGVlcCgpOwogI2VuZGlmCi0gICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBwcmVsb2FkQXR0cikgewotICAgICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJub25lIikpCisgICAgZWxzZSBpZiAobmFt
ZSA9PSBwcmVsb2FkQXR0cikgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUs
ICJub25lIikpCiAgICAgICAgICAgICBtX3ByZWxvYWQgPSBNZWRpYVBsYXllcjo6Tm9uZTsKLSAg
ICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJtZXRh
ZGF0YSIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2YWx1ZSwgIm1ldGFk
YXRhIikpCiAgICAgICAgICAgICBtX3ByZWxvYWQgPSBNZWRpYVBsYXllcjo6TWV0YURhdGE7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gVGhlIHNwZWMgZG9lcyBub3QgZGVmaW5lIGFu
ICJpbnZhbGlkIHZhbHVlIGRlZmF1bHQiIGJ1dCAiYXV0byIgaXMgc3VnZ2VzdGVkIGFzIHRoZQpA
QCAtMzg4LDYwICszODgsNjAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKICAgICAgICAgaWYgKCFhdXRvcGxheSgpICYm
IG1fcGxheWVyKQogICAgICAgICAgICAgbV9wbGF5ZXItPnNldFByZWxvYWQobV9wcmVsb2FkKTsK
IAotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBtZWRpYWdyb3VwQXR0cikKLSAg
ICAgICAgc2V0TWVkaWFHcm91cChhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBvbmFib3J0QXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IG9uYmVmb3JlbG9hZEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uY2Fu
cGxheUF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmNhbnBsYXlFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1
dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uY2FucGxheXRocm91Z2hB
dHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jYW5w
bGF5dGhyb3VnaEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJp
YnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25kdXJhdGlvbmNoYW5n
ZUF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmR1
cmF0aW9uY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmVtcHRpZWRBdHRy
KQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lbXB0aWVk
RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0g
ICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmVuZGVkQXR0cikKLSAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IG9uZXJyb3JBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
b25sb2FkZWRkYXRhQXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkubG9hZGVkZGF0YUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25sb2Fk
ZWRtZXRhZGF0YUF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmxvYWRlZG1ldGFkYXRhRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmxv
YWRzdGFydEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmxvYWRzdGFydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25wYXVzZUF0dHIp
Ci0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhdXNlRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnBsYXlBdHRyKQotICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wbGF5RXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBvbnBsYXlpbmdBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBv
bnByb2dyZXNzQXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkucHJvZ3Jlc3NFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBh
dHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ucmF0ZWNoYW5n
ZUF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJh
dGVjaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1
dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uc2Vla2VkQXR0cikKLSAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2Vla2VkRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnNlZWtpbmdBdHRyKQotICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zZWVraW5nRXZlbnQsIGNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBvbnN0YWxsZWRBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5zdGFsbGVkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBvbnN1c3BlbmRBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5zdXNwZW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
YXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnRpbWV1cGRh
dGVBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50
aW1ldXBkYXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmli
dXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnZvbHVtZWNoYW5nZUF0
dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnZvbHVt
ZWNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0
ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb253YWl0aW5nQXR0cikKLSAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb253ZWJraXRiZWdpbmZ1bGxzY3JlZW5BdHRyKQot
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRiZWdp
bmZ1bGxzY3JlZW5FdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
aWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ud2Via2l0ZW5kZnVs
bHNjcmVlbkF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gbWVkaWFncm91cEF0
dHIpCisgICAgICAgIHNldE1lZGlhR3JvdXAodmFsdWUpOworICAgIGVsc2UgaWYgKG5hbWUgPT0g
b25hYm9ydEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmFib3J0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwg
dmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uYmVmb3JlbG9hZEF0dHIpCisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVs
c2UgaWYgKG5hbWUgPT0gb25jYW5wbGF5QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuY2FucGxheUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbmNhbnBs
YXl0aHJvdWdoQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuY2FucGxheXRocm91Z2hFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25kdXJhdGlvbmNoYW5n
ZUF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmR1
cmF0aW9uY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFt
ZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uZW1wdGllZEF0dHIpCisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2Ug
aWYgKG5hbWUgPT0gb25lbmRlZEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uZXJyb3JBdHRyKQor
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAg
ZWxzZSBpZiAobmFtZSA9PSBvbmxvYWRlZGRhdGFBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkZWRkYXRhRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09
IG9ubG9hZGVkbWV0YWRhdGFBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5sb2FkZWRtZXRhZGF0YUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbmxvYWRz
dGFydEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmxvYWRzdGFydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUs
IHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnBhdXNlQXR0cikKKyAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGF1c2VFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5h
bWUgPT0gb25wbGF5QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkucGxheUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5h
bWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnBsYXlpbmdBdHRyKQorICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wbGF5aW5nRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNl
IGlmIChuYW1lID09IG9ucHJvZ3Jlc3NBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5wcm9ncmVzc0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnJhdGVj
aGFuZ2VBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5yYXRlY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFt
ZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uc2Vla2VkQXR0cikKKyAgICAgICAg
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2Vla2VkRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlm
IChuYW1lID09IG9uc2Vla2luZ0F0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnNlZWtpbmdFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25zdGFsbGVkQXR0
cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3RhbGxl
ZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7
CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbnN1c3BlbmRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdXNwZW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09
IG9udGltZXVwZGF0ZUF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLnRpbWV1cGRhdGVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb252b2x1bWVjaGFuZ2VB
dHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS52b2x1
bWVjaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2
YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb253YWl0aW5nQXR0cikKKyAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAo
bmFtZSA9PSBvbndlYmtpdGJlZ2luZnVsbHNjcmVlbkF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxz
ZSBpZiAobmFtZSA9PSBvbndlYmtpdGVuZGZ1bGxzY3JlZW5BdHRyKQorICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKICAgICBl
bHNlCi0gICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAg
ICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGQxY2NlZDAuLmVhOWE0YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zMjQsNyArMzI0LDcgQEAgcHJvdGVjdGVk
OgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kiwg
Ym9vbCk7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCkgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZXRhRWxlbWVudC5jcHAKaW5kZXggMGUwZDI3Yi4uZmVjYzhhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmNwcApAQCAtNDIsMTYgKzQyLDE2
IEBAIFBhc3NSZWZQdHI8SFRNTE1ldGFFbGVtZW50PiBIVE1MTWV0YUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
TWV0YUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotdm9pZCBIVE1MTWV0YUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1M
TWV0YUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
aHR0cF9lcXVpdkF0dHIpCisgICAgaWYgKG5hbWUgPT0gaHR0cF9lcXVpdkF0dHIpCiAgICAgICAg
IHByb2Nlc3MoKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGNvbnRlbnRBdHRy
KQorICAgIGVsc2UgaWYgKG5hbWUgPT0gY29udGVudEF0dHIpCiAgICAgICAgIHByb2Nlc3MoKTsK
LSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG5hbWVBdHRyKSB7CisgICAgZWxzZSBp
ZiAobmFtZSA9PSBuYW1lQXR0cikgewogICAgICAgICAvLyBEbyBub3RoaW5nCiAgICAgfSBlbHNl
Ci0gICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAg
ICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxNZXRhRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFF
bGVtZW50LmgKaW5kZXggOTIxMThmOC4uNDFmMjc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRhRWxlbWVudC5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRN
TE1ldGFFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKICAgICB2
b2lkIHByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmlu
ZGV4IGE3YzY2OTguLjYzYWU3YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcApAQCAtNzcsMTIgKzc3LDEyIEBAIGJvb2wgSFRNTE1ldGVyRWxlbWVudDo6c3VwcG9y
dHNGb2N1cygpIGNvbnN0CiAgICAgcmV0dXJuIE5vZGU6OnN1cHBvcnRzRm9jdXMoKSAmJiAhZGlz
YWJsZWQoKTsKIH0KIAotdm9pZCBIVE1MTWV0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTE1ldGVyRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSB2YWx1ZUF0dHIgfHwgYXR0cmlidXRl
Lm5hbWUoKSA9PSBtaW5BdHRyIHx8IGF0dHJpYnV0ZS5uYW1lKCkgPT0gbWF4QXR0ciB8fCBhdHRy
aWJ1dGUubmFtZSgpID09IGxvd0F0dHIgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBoaWdoQXR0ciB8
fCBhdHRyaWJ1dGUubmFtZSgpID09IG9wdGltdW1BdHRyKQorICAgIGlmIChuYW1lID09IHZhbHVl
QXR0ciB8fCBuYW1lID09IG1pbkF0dHIgfHwgbmFtZSA9PSBtYXhBdHRyIHx8IG5hbWUgPT0gbG93
QXR0ciB8fCBuYW1lID09IGhpZ2hBdHRyIHx8IG5hbWUgPT0gb3B0aW11bUF0dHIpCiAgICAgICAg
IGRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpOwogICAgIGVsc2UKLSAgICAgICAgTGFiZWxhYmxlRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgTGFiZWxhYmxlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBkb3VibGUgSFRNTE1ldGVyRWxl
bWVudDo6bWluKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
dGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgKaW5k
ZXggZmIxMmIzNy4uZDExMDdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50
LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVjYWxjV2ls
bFZhbGlkYXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdD
b250ZXh0JikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7
CiAKICAgICB2b2lkIGRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpOwogICAgIHZvaWQgY3JlYXRlU2hh
ZG93U3VidHJlZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT0xpc3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5jcHAKaW5k
ZXggMTdkZDE5Yi4uOGI3NjFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T0xpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1l
bnQuY3BwCkBAIC03OCwyNSArNzgsMjUgQEAgdm9pZCBIVE1MT0xpc3RFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHQKICAgICAg
ICAgSFRNTEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShhdHRy
aWJ1dGUsIHN0eWxlKTsKIH0KIAotdm9pZCBIVE1MT0xpc3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTE9MaXN0RWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBzdGFydEF0dHIpIHsKKyAg
ICBpZiAobmFtZSA9PSBzdGFydEF0dHIpIHsKICAgICAgICAgaW50IG9sZFN0YXJ0ID0gc3RhcnQo
KTsKICAgICAgICAgYm9vbCBjYW5QYXJzZTsKLSAgICAgICAgaW50IHBhcnNlZFN0YXJ0ID0gYXR0
cmlidXRlLnZhbHVlKCkudG9JbnQoJmNhblBhcnNlKTsKKyAgICAgICAgaW50IHBhcnNlZFN0YXJ0
ID0gdmFsdWUudG9JbnQoJmNhblBhcnNlKTsKICAgICAgICAgbV9oYXNFeHBsaWNpdFN0YXJ0ID0g
Y2FuUGFyc2U7CiAgICAgICAgIG1fc3RhcnQgPSBjYW5QYXJzZSA/IHBhcnNlZFN0YXJ0IDogMHhC
QURCRUVGOwogICAgICAgICBpZiAob2xkU3RhcnQgPT0gc3RhcnQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgdXBkYXRlSXRlbVZhbHVlcygpOwotICAgIH0gZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSByZXZlcnNlZEF0dHIpIHsKLSAgICAgICAgYm9vbCByZXZlcnNlZCA9ICFh
dHRyaWJ1dGUuaXNOdWxsKCk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IHJldmVyc2VkQXR0cikg
eworICAgICAgICBib29sIHJldmVyc2VkID0gIXZhbHVlLmlzTnVsbCgpOwogICAgICAgICBpZiAo
cmV2ZXJzZWQgPT0gbV9pc1JldmVyc2VkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBt
X2lzUmV2ZXJzZWQgPSByZXZlcnNlZDsKICAgICAgICAgdXBkYXRlSXRlbVZhbHVlcygpOwogICAg
IH0gZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsK
KyAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAog
dm9pZCBIVE1MT0xpc3RFbGVtZW50OjpzZXRTdGFydChpbnQgc3RhcnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IGQ4NDU1MWUuLjIyYTk3OTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHJlY2FsY3VsYXRlSXRlbUNvdW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQ
cm9wZXJ0eVNldCopIE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVs
ZW1lbnQuY3BwCmluZGV4IGVjOGJkZDMuLjhjNjA0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC05NCwxOSArOTQsMTkgQEAgdm9pZCBIVE1MT2JqZWN0
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXQKICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZSwgc3R5bGUpOwogfQogCi12b2lkIEhUTUxP
YmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkK
K3ZvaWQgSFRNTE9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gZm9ybUF0dHIpCisgICAgaWYgKG5hbWUgPT0gZm9ybUF0dHIpCiAgICAgICAg
IGZvcm1BdHRyaWJ1dGVDaGFuZ2VkKCk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSB0eXBlQXR0cikgewotICAgICAgICBtX3NlcnZpY2VUeXBlID0gYXR0cmlidXRlLnZhbHVlKCku
bG93ZXIoKTsKKyAgICBlbHNlIGlmIChuYW1lID09IHR5cGVBdHRyKSB7CisgICAgICAgIG1fc2Vy
dmljZVR5cGUgPSB2YWx1ZS5sb3dlcigpOwogICAgICAgICBzaXplX3QgcG9zID0gbV9zZXJ2aWNl
VHlwZS5maW5kKCI7Iik7CiAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCiAgICAgICAgICAg
ICBtX3NlcnZpY2VUeXBlID0gbV9zZXJ2aWNlVHlwZS5sZWZ0KHBvcyk7CiAgICAgICAgIGlmIChy
ZW5kZXJlcigpKQogICAgICAgICAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7Ci0gICAg
fSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGRhdGFBdHRyKSB7Ci0gICAgICAgIG1fdXJs
ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHJpYnV0ZS52YWx1ZSgpKTsK
KyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gZGF0YUF0dHIpIHsKKyAgICAgICAgbV91cmwgPSBzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXModmFsdWUpOwogICAgICAgICBpZiAocmVuZGVy
ZXIoKSkgewogICAgICAgICAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7CiAgICAgICAg
ICAgICBpZiAoaXNJbWFnZVR5cGUoKSkgewpAQCAtMTE1LDE2ICsxMTUsMTYgQEAgdm9pZCBIVE1M
T2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUp
CiAgICAgICAgICAgICAgICAgbV9pbWFnZUxvYWRlci0+dXBkYXRlRnJvbUVsZW1lbnRJZ25vcmlu
Z1ByZXZpb3VzRXJyb3IoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBjbGFzc2lkQXR0cikgewotICAgICAgICBtX2NsYXNzSWQg
PSBhdHRyaWJ1dGUudmFsdWUoKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY2xhc3NpZEF0dHIp
IHsKKyAgICAgICAgbV9jbGFzc0lkID0gdmFsdWU7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKQog
ICAgICAgICAgICAgc2V0TmVlZHNXaWRnZXRVcGRhdGUodHJ1ZSk7Ci0gICAgfSBlbHNlIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IG9ubG9hZEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IG9uYmVmb3JlbG9hZEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gb25sb2FkQXR0cikKKyAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxz
ZSBpZiAobmFtZSA9PSBvbmJlZm9yZWxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKICAgICBlbHNlCi0gICAgICAgIEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAog
c3RhdGljIHZvaWQgbWFwRGF0YVBhcmFtVG9TcmMoVmVjdG9yPFN0cmluZz4qIHBhcmFtTmFtZXMs
IFZlY3RvcjxTdHJpbmc+KiBwYXJhbVZhbHVlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaAppbmRleCAxMTI3NDk4Li5kYzE5ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSFRNTE9iamVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRN
TEZvcm1FbGVtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIFN0
eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dEdyb3VwRWxlbWVudC5jcHAKaW5kZXggOTU0N2JjYy4uZDcxMDIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3JvdXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCkBAIC03OCwxMiArNzgsMTIgQEAgdm9p
ZCBIVE1MT3B0R3JvdXBFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW4KICAgICBIVE1MRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRh
KTsKIH0KIAotdm9pZCBIVE1MT3B0R3JvdXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBI
VE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgIHJlY2FsY1NlbGVj
dE9wdGlvbnMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IGRpc2FibGVkQXR0cikK
KyAgICBpZiAobmFtZSA9PSBkaXNhYmxlZEF0dHIpCiAgICAgICAgIGludmFsaWRhdGVQYXJlbnRE
aXN0cmlidXRpb25JZk5lY2Vzc2FyeSh0aGlzLCBTZWxlY3RSdWxlRmVhdHVyZVNldDo6UnVsZUZl
YXR1cmVEaXNhYmxlZCB8IFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpSdWxlRmVhdHVyZUVuYWJsZWQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCmluZGV4IGM2
YWQzNTliLi4xYmZiMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRH
cm91cEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1l
bnQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gIWRpc2FibGVkKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4
dCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5jcHAKaW5kZXggNGU0ODYwMC4uYzFlN2EzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHAKQEAgLTE5MCwzMyArMTkwLDMzIEBAIGludCBIVE1MT3B0aW9uRWxl
bWVudDo6aW5kZXgoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEhUTUxPcHRpb25F
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQg
SFRNTE9wdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VM
RU1FTlQpCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gdmFsdWVBdHRyKSB7CisgICAgaWYg
KG5hbWUgPT0gdmFsdWVBdHRyKSB7CiAgICAgICAgIGlmIChIVE1MRGF0YUxpc3RFbGVtZW50KiBk
YXRhTGlzdCA9IG93bmVyRGF0YUxpc3RFbGVtZW50KCkpCiAgICAgICAgICAgICBkYXRhTGlzdC0+
b3B0aW9uRWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIH0gZWxzZQogI2VuZGlmCi0gICAg
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gZGlzYWJsZWRBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0g
ZGlzYWJsZWRBdHRyKSB7CiAgICAgICAgIGJvb2wgb2xkRGlzYWJsZWQgPSBtX2Rpc2FibGVkOwot
ICAgICAgICBtX2Rpc2FibGVkID0gIWF0dHJpYnV0ZS5pc051bGwoKTsKKyAgICAgICAgbV9kaXNh
YmxlZCA9ICF2YWx1ZS5pc051bGwoKTsKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlz
YWJsZWQpIHsKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgICAg
IGludmFsaWRhdGVQYXJlbnREaXN0cmlidXRpb25JZk5lY2Vzc2FyeSh0aGlzLCBTZWxlY3RSdWxl
RmVhdHVyZVNldDo6UnVsZUZlYXR1cmVEaXNhYmxlZCB8IFNlbGVjdFJ1bGVGZWF0dXJlU2V0OjpS
dWxlRmVhdHVyZUVuYWJsZWQpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgICAgIHJlbmRlcmVy
KCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBFbmFibGVkU3RhdGUpOwogICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNlbGVjdGVkQXR0cikg
eworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBzZWxlY3RlZEF0dHIpIHsKICAgICAgICAgLy8gRklY
TUU6IFRoaXMgZG9lc24ndCBtYXRjaCB3aGF0IHRoZSBIVE1MIHNwZWNpZmljYXRpb24gc2F5cy4K
ICAgICAgICAgLy8gVGhlIHNwZWNpZmljYXRpb24gaW1wbGllcyB0aGF0IHJlbW92aW5nIHRoZSBz
ZWxlY3RlZCBhdHRyaWJ1dGUgb3IKICAgICAgICAgLy8gY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGEg
c2VsZWN0ZWQgYXR0cmlidXRlIHRoYXQgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgIC8vIGhh
cyBubyBlZmZlY3Qgb24gd2hldGhlciB0aGUgZWxlbWVudCBpcyBzZWxlY3RlZC4gRnVydGhlciwg
aXQgc2VlbXMKICAgICAgICAgLy8gdGhhdCB3ZSBuZWVkIHRvIGRvIG1vcmUgdGhhbiBqdXN0IHNl
dCBtX2lzU2VsZWN0ZWQgdG8gc2VsZWN0IGluIHRoYXQKICAgICAgICAgLy8gY2FzZTsgd2UnZCBu
ZWVkIHRvIGRvIHRoZSBvdGhlciB3b3JrIGZyb20gdGhlIHNldFNlbGVjdGVkIGZ1bmN0aW9uLgot
ICAgICAgICBtX2lzU2VsZWN0ZWQgPSAhYXR0cmlidXRlLmlzTnVsbCgpOworICAgICAgICBtX2lz
U2VsZWN0ZWQgPSAhdmFsdWUuaXNOdWxsKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIEhUTUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBIVE1MRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6
OnZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaAppbmRl
eCA4ZjYxYjMwLi4xYmNiOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVu
dC5oCkBAIC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2Vy
dGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vz
c0tleUFjdGlvbihib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91
dHB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVudC5j
cHAKaW5kZXggMjc3ZmU1YS4uNzQwZmQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3V0cHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0
cHV0RWxlbWVudC5jcHAKQEAgLTYxLDEyICs2MSwxMiBAQCBib29sIEhUTUxPdXRwdXRFbGVtZW50
OjpzdXBwb3J0c0ZvY3VzKCkgY29uc3QKICAgICByZXR1cm4gTm9kZTo6c3VwcG9ydHNGb2N1cygp
ICYmICFkaXNhYmxlZCgpOwogfQogCi12b2lkIEhUTUxPdXRwdXRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTE91dHB1dEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gSFRNTE5hbWVzOjpm
b3JBdHRyKQotICAgICAgICBzZXRGb3IoYXR0cmlidXRlLnZhbHVlKCkpOworICAgIGlmIChuYW1l
ID09IEhUTUxOYW1lczo6Zm9yQXR0cikKKyAgICAgICAgc2V0Rm9yKHZhbHVlKTsKICAgICBlbHNl
Ci0gICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0
ZSk7CisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKIH0KIAogRE9NU2V0dGFibGVUb2tlbkxpc3QqIEhUTUxPdXRwdXRFbGVtZW50Ojpo
dG1sRm9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaAppbmRl
eCBkYTJjOGQ4Li5jYWRlNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
dXRwdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0RWxlbWVu
dC5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTE91dHB1dEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50Kik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlz
RW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0TGFiZWxzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKaW5kZXggMTBiZmMyYy4uZWE1ZjQw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCkBAIC05
NCwxNCArOTQsMTQgQEAgYm9vbCBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpzdXBwb3J0c0ZvY3VzKCkg
Y29uc3QKICAgICByZXR1cm4gTm9kZTo6c3VwcG9ydHNGb2N1cygpICYmICFkaXNhYmxlZCgpOwog
fQogCi12b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQog
ewotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHZhbHVlQXR0cikKKyAgICBpZiAobmFtZSA9
PSB2YWx1ZUF0dHIpCiAgICAgICAgIGRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpOwotICAgIGVsc2Ug
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gbWF4QXR0cikKKyAgICBlbHNlIGlmIChuYW1lID09IG1h
eEF0dHIpCiAgICAgICAgIGRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpOwogICAgIGVsc2UKLSAgICAg
ICAgTGFiZWxhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAg
TGFiZWxhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiB2b2lk
IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmF0dGFjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBy
b2dyZXNzRWxlbWVudC5oCmluZGV4IDhjYzQ1YzguLmMzOWU4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCkBAIC02NSw3ICs2NSw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKSBjb25zdCBPVkVSUklERTsKICAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVy
UHJvZ3Jlc3MoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCmluZGV4IDRmMmM5NTYuLjU3Zjg1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCkBAIC01OCwxOCArNTgsMTggQEAgdm9pZCBIVE1MU2Ny
aXB0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBi
ZWZvcmVDaGFuZ2UKICAgICBTY3JpcHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKTsKIH0KIAot
dm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBh
dHRyaWJ1dGUpCit2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IHNyY0F0dHIpCi0gICAgICAgIGhhbmRsZVNvdXJjZUF0dHJp
YnV0ZShhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBhc3luY0F0dHIpCisgICAgaWYgKG5hbWUgPT0gc3JjQXR0cikKKyAgICAgICAgaGFuZGxlU291
cmNlQXR0cmlidXRlKHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IGFzeW5jQXR0cikKICAg
ICAgICAgaGFuZGxlQXN5bmNBdHRyaWJ1dGUoKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFt
ZSgpID09IG9ubG9hZEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBh
dHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9uYmVmb3JlbG9h
ZEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJl
Zm9yZWxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1
dGUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9ubG9hZEF0dHIpCisgICAgICAgIHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0g
b25iZWZvcmVsb2FkQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIG5hbWUsIHZhbHVlKSk7CiAgICAgZWxzZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBI
VE1MU2NyaXB0RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBv
aW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCmluZGV4IGMyY2EwZGIu
LmJlYWM4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTQ0
LDcgKzQ0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MU2NyaXB0RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBib29sIHdhc0luc2VydGVkQnlQYXJzZXIsIGJv
b2wgYWxyZWFkeVN0YXJ0ZWQpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250
YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCAxY2VhZThjLi4wNTI3YTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMjg0LDE1ICsy
ODQsMTUgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICAgICByZXR1cm4gSFRNTEZvcm1Db250
cm9sRWxlbWVudFdpdGhTdGF0ZTo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSk7CiB9CiAK
LXZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYg
YXR0cmlidXRlKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBzaXplQXR0cikgeworICAgIGlmIChuYW1lID09IHNpemVB
dHRyKSB7CiAgICAgICAgIGludCBvbGRTaXplID0gbV9zaXplOwogICAgICAgICAvLyBTZXQgdGhl
IGF0dHJpYnV0ZSB2YWx1ZSB0byBhIG51bWJlci4KICAgICAgICAgLy8gVGhpcyBpcyBpbXBvcnRh
bnQgc2luY2UgdGhlIHN0eWxlIHJ1bGVzIGZvciB0aGlzIGF0dHJpYnV0ZSBjYW4gZGV0ZXJtaW5l
IHRoZSBhcHBlYXJhbmNlIHByb3BlcnR5LgotICAgICAgICBpbnQgc2l6ZSA9IGF0dHJpYnV0ZS52
YWx1ZSgpLnRvSW50KCk7CisgICAgICAgIGludCBzaXplID0gdmFsdWUudG9JbnQoKTsKICAgICAg
ICAgU3RyaW5nIGF0dHJTaXplID0gU3RyaW5nOjpudW1iZXIoc2l6ZSk7Ci0gICAgICAgIGlmIChh
dHRyU2l6ZSAhPSBhdHRyaWJ1dGUudmFsdWUoKSkgeworICAgICAgICBpZiAoYXR0clNpemUgIT0g
dmFsdWUpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGhvcnJpYmx5IGZhY3RvcmVk
LgogICAgICAgICAgICAgaWYgKEF0dHJpYnV0ZSogc2l6ZUF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0
ZUl0ZW0oc2l6ZUF0dHIpKQogICAgICAgICAgICAgICAgIHNpemVBdHRyaWJ1dGUtPnNldFZhbHVl
KGF0dHJTaXplKTsKQEAgLTMwOSwxNCArMzA5LDE0IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICAgICAg
cmVhdHRhY2goKTsKICAgICAgICAgICAgIHNldFJlY2FsY0xpc3RJdGVtcygpOwogICAgICAgICB9
Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG11bHRpcGxlQXR0cikKLSAgICAg
ICAgcGFyc2VNdWx0aXBsZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgIGVsc2UgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gYWNjZXNza2V5QXR0cikgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBt
dWx0aXBsZUF0dHIpCisgICAgICAgIHBhcnNlTXVsdGlwbGVBdHRyaWJ1dGUodmFsdWUpOworICAg
IGVsc2UgaWYgKG5hbWUgPT0gYWNjZXNza2V5QXR0cikgewogICAgICAgICAvLyBGSVhNRTogaWdu
b3JlIGZvciB0aGUgbW9tZW50LgotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBv
bmNoYW5nZUF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJp
YnV0ZSkpOworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBvbmNoYW5nZUF0dHIpCisgICAgICAgIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CiAgICAgZWxzZQotICAg
ICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZUF0dHJpYnV0ZShhdHRy
aWJ1dGUpOworICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmlzS2V5
Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0CkBAIC0xMDAwLDEwICsx
MDAwLDEwIEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRl
KGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRlKQogICAgIHNldE5lZWRzVmFsaWRpdHlDaGVj
aygpOwogfQogCi12b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpwYXJzZU11bHRpcGxlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cGFy
c2VNdWx0aXBsZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGJv
b2wgb2xkVXNlc01lbnVMaXN0ID0gdXNlc01lbnVMaXN0KCk7Ci0gICAgbV9tdWx0aXBsZSA9ICFh
dHRyaWJ1dGUuaXNOdWxsKCk7CisgICAgbV9tdWx0aXBsZSA9ICF2YWx1ZS5pc051bGwoKTsKICAg
ICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKICAgICBpZiAob2xkVXNlc01lbnVMaXN0ICE9IHVz
ZXNNZW51TGlzdCgpKQogICAgICAgICByZWF0dGFjaElmQXR0YWNoZWQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA5MTQ3YzNmLi42ZDg4ZGExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC0xMjQsNyArMTI0LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jikg
Y29uc3QgT1ZFUlJJREU7CkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVm
IHVuc2lnbmVkIFNlbGVjdE9wdGlvbkZsYWdzOwogICAgIHZvaWQgc2VsZWN0T3B0aW9uKGludCBv
cHRpb25JbmRleCwgU2VsZWN0T3B0aW9uRmxhZ3MgPSAwKTsKICAgICB2b2lkIGRlc2VsZWN0SXRl
bXNXaXRob3V0VmFsaWRhdGlvbihIVE1MRWxlbWVudCogZWxlbWVudFRvRXhjbHVkZSA9IDApOwot
ICAgIHZvaWQgcGFyc2VNdWx0aXBsZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKTsKKyAgICB2
b2lkIHBhcnNlTXVsdGlwbGVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgaW50
IGxhc3RTZWxlY3RlZExpc3RJbmRleCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlU2VsZWN0ZWRT
dGF0ZShpbnQgbGlzdEluZGV4LCBib29sIG11bHRpLCBib29sIHNoaWZ0KTsKICAgICB2b2lkIG1l
bnVMaXN0RGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN0eWxlRWxlbWVudC5jcHAKaW5kZXggMjI2NDVkYy4uZGI5MWM5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC03MCwyMSArNzAsMjEgQEAgUGFzc1JlZlB0
cjxIVE1MU3R5bGVFbGVtZW50PiBIVE1MU3R5bGVFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxTdHlsZUVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGNyZWF0ZWRCeVBhcnNlcikpOwogfQogCi12b2lkIEhUTUxTdHls
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9p
ZCBIVE1MU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUubmFt
ZSgpID09IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQotICAgICAgICBtX3NoZWV0LT5zZXRUaXRsZShh
dHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmxv
YWRBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5s
b2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7
Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmVycm9yQXR0cikKLSAgICAgICAg
c2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKLSAgICBlbHNlIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IHNjb3BlZEF0dHIgJiYgQ29udGV4dEZlYXR1cmVzOjpzdHlsZVNj
b3BlZEVuYWJsZWQoZG9jdW1lbnQoKSkpCi0gICAgICAgIHNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQo
IWF0dHJpYnV0ZS5pc051bGwoKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBt
ZWRpYUF0dHIgJiYgaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnJlbmRlcmVyKCkgJiYgbV9z
aGVldCkgewotICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFRdWVyeVNldDo6
Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheChhdHRyaWJ1dGUudmFsdWUoKSkpOworICAg
IGlmIChuYW1lID09IHRpdGxlQXR0ciAmJiBtX3NoZWV0KQorICAgICAgICBtX3NoZWV0LT5zZXRU
aXRsZSh2YWx1ZSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbmxvYWRBdHRyKQorICAgICAgICBz
ZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChu
YW1lID09IG9uZXJyb3JBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBzY29wZWRBdHRyICYmIENvbnRl
eHRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKGRvY3VtZW50KCkpKQorICAgICAgICBzY29w
ZWRBdHRyaWJ1dGVDaGFuZ2VkKCF2YWx1ZS5pc051bGwoKSk7CisgICAgZWxzZSBpZiAobmFtZSA9
PSBtZWRpYUF0dHIgJiYgaW5Eb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnJlbmRlcmVyKCkgJiYg
bV9zaGVldCkgeworICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYVF1ZXJpZXMoTWVkaWFRdWVyeVNl
dDo6Y3JlYXRlQWxsb3dpbmdEZXNjcmlwdGlvblN5bnRheCh2YWx1ZSkpOwogICAgICAgICBkb2N1
bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKICAg
ICB9IGVsc2UKLSAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7
CisgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAK
IHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6c2NvcGVkQXR0cmlidXRlQ2hhbmdlZChib29sIHNjb3Bl
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKaW5kZXggY2M5ZTBiMi4uZDNl
OTllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKQEAgLTY1LDcgKzY1
LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MU3R5bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCosIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAogICAgIC8vIG92ZXJsb2FkIGZy
b20gSFRNTEVsZW1lbnQKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFu
Z2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJD
aGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCmluZGV4IGM3OWUyMDUuLjcxY2JiOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwCkBAIC0xMDUsMTYg
KzEwNSwxNiBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJgogICAgICAgICBIVE1MVGFibGVQYXJ0
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZSwg
c3R5bGUpOwogfQogCi12b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gcm93c3BhbkF0dHIpIHsK
KyAgICBpZiAobmFtZSA9PSByb3dzcGFuQXR0cikgewogICAgICAgICBpZiAocmVuZGVyZXIoKSAm
JiByZW5kZXJlcigpLT5pc1RhYmxlQ2VsbCgpKQogICAgICAgICAgICAgdG9SZW5kZXJUYWJsZUNl
bGwocmVuZGVyZXIoKSktPmNvbFNwYW5PclJvd1NwYW5DaGFuZ2VkKCk7Ci0gICAgfSBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IGNvbHNwYW5BdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1l
ID09IGNvbHNwYW5BdHRyKSB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCkt
PmlzVGFibGVDZWxsKCkpCiAgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJlcigp
KS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgSFRNTFRh
YmxlUGFydEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhUTUxU
YWJsZVBhcnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiB9CiAKIGNvbnN0
IFN0eWxlUHJvcGVydHlTZXQqIEhUTUxUYWJsZUNlbGxFbGVtZW50OjphZGRpdGlvbmFsUHJlc2Vu
dGF0aW9uQXR0cmlidXRlU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxs
RWxlbWVudC5oCmluZGV4IGVlNzY3NWIuLmE4YmNiYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBIVE1MVGFibGVDZWxsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9v
bCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCmluZGV4IGI0YzY5NTIu
LjlhZjg0Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5j
cHAKQEAgLTYyLDE0ICs2MiwxNCBAQCB2b2lkIEhUTUxUYWJsZUNvbEVsZW1lbnQ6OmNvbGxlY3RT
dHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmCiAgICAgICAgIEhU
TUxUYWJsZVBhcnRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
YXR0cmlidXRlLCBzdHlsZSk7CiB9CiAKLXZvaWQgSFRNTFRhYmxlQ29sRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIEhUTUxUYWJsZUNvbEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gc3BhbkF0
dHIpIHsKLSAgICAgICAgbV9zcGFuID0gIWF0dHJpYnV0ZS5pc051bGwoKSA/IGF0dHJpYnV0ZS52
YWx1ZSgpLnRvSW50KCkgOiAxOworICAgIGlmIChuYW1lID09IHNwYW5BdHRyKSB7CisgICAgICAg
IG1fc3BhbiA9ICF2YWx1ZS5pc051bGwoKSA/IHZhbHVlLnRvSW50KCkgOiAxOwogICAgICAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1JlbmRlclRhYmxlQ29sKCkpCiAgICAgICAg
ICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwotICAgIH0gZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSB3aWR0aEF0dHIpIHsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGUuaXNF
bXB0eSgpKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IHdpZHRoQXR0cikgeworICAgICAgICBp
ZiAoIXZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVu
ZGVyZXIoKS0+aXNSZW5kZXJUYWJsZUNvbCgpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyVGFi
bGVDb2wqIGNvbCA9IHRvUmVuZGVyVGFibGVDb2wocmVuZGVyZXIoKSk7CiAgICAgICAgICAgICAg
ICAgaW50IG5ld1dpZHRoID0gd2lkdGgoKS50b0ludCgpOwpAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IEhUTUxUYWJsZUNvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIEhU
TUxUYWJsZVBhcnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBI
VE1MVGFibGVQYXJ0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBj
b25zdCBTdHlsZVByb3BlcnR5U2V0KiBIVE1MVGFibGVDb2xFbGVtZW50OjphZGRpdGlvbmFsUHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVDb2xFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNv
bEVsZW1lbnQuaAppbmRleCA2NjliNmNmLi44N2MwMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNvbEVsZW1lbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIEhUTUxUYWJsZUNvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmLCBTdHlsZVByb3BlcnR5U2V0KikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBhZGRpdGlvbmFsUHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGUoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuY3BwCmluZGV4IDZjNDViYWIuLmMyN2Q1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtMzY5LDQ4ICszNjksNDggQEAgYm9vbCBIVE1MVGFi
bGVFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lKSBjb25zdAogICAgIHJldHVybiBIVE1MRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUobmFtZSk7CiB9CiAKLXZvaWQgSFRNTFRhYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIEhUTUxUYWJsZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgQ2VsbEJvcmRlcnMgYm9yZGVyc0JlZm9yZSA9IGNlbGxCb3JkZXJzKCk7CiAg
ICAgdW5zaWduZWQgc2hvcnQgb2xkUGFkZGluZyA9IG1fcGFkZGluZzsKIAotICAgIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IGJvcmRlckF0dHIpICB7CisgICAgaWYgKG5hbWUgPT0gYm9yZGVyQXR0
cikgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgYXR0cmlidXRlIGlzIGEgbWVzcy4KICAgICAg
ICAgbV9ib3JkZXJBdHRyID0gdHJ1ZTsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGUuaXNOdWxsKCkp
IHsKLSAgICAgICAgICAgIGludCBib3JkZXIgPSBhdHRyaWJ1dGUuaXNFbXB0eSgpID8gMSA6IGF0
dHJpYnV0ZS52YWx1ZSgpLnRvSW50KCk7CisgICAgICAgIGlmICghdmFsdWUuaXNOdWxsKCkpIHsK
KyAgICAgICAgICAgIGludCBib3JkZXIgPSB2YWx1ZS5pc0VtcHR5KCkgPyAxIDogdmFsdWUudG9J
bnQoKTsKICAgICAgICAgICAgIG1fYm9yZGVyQXR0ciA9IGJvcmRlcjsKICAgICAgICAgfQotICAg
IH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBib3JkZXJjb2xvckF0dHIpIHsKLSAgICAg
ICAgbV9ib3JkZXJDb2xvckF0dHIgPSAhYXR0cmlidXRlLmlzRW1wdHkoKTsKLSAgICB9IGVsc2Ug
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gZnJhbWVBdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1l
ID09IGJvcmRlcmNvbG9yQXR0cikgeworICAgICAgICBtX2JvcmRlckNvbG9yQXR0ciA9ICF2YWx1
ZS5pc0VtcHR5KCk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IGZyYW1lQXR0cikgewogICAgICAg
ICAvLyBGSVhNRTogVGhpcyBhdHRyaWJ1dGUgaXMgYSBtZXNzLgogICAgICAgICBib29sIGJvcmRl
clRvcDsKICAgICAgICAgYm9vbCBib3JkZXJSaWdodDsKICAgICAgICAgYm9vbCBib3JkZXJCb3R0
b207CiAgICAgICAgIGJvb2wgYm9yZGVyTGVmdDsKLSAgICAgICAgbV9mcmFtZUF0dHIgPSBnZXRC
b3JkZXJzRnJvbUZyYW1lQXR0cmlidXRlVmFsdWUoYXR0cmlidXRlLnZhbHVlKCksIGJvcmRlclRv
cCwgYm9yZGVyUmlnaHQsIGJvcmRlckJvdHRvbSwgYm9yZGVyTGVmdCk7Ci0gICAgfSBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IHJ1bGVzQXR0cikgeworICAgICAgICBtX2ZyYW1lQXR0ciA9
IGdldEJvcmRlcnNGcm9tRnJhbWVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSwgYm9yZGVyVG9wLCBib3Jk
ZXJSaWdodCwgYm9yZGVyQm90dG9tLCBib3JkZXJMZWZ0KTsKKyAgICB9IGVsc2UgaWYgKG5hbWUg
PT0gcnVsZXNBdHRyKSB7CiAgICAgICAgIG1fcnVsZXNBdHRyID0gVW5zZXRSdWxlczsKLSAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0ZS52YWx1ZSgpLCAibm9uZSIpKQorICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJub25lIikpCiAgICAgICAgICAgICBt
X3J1bGVzQXR0ciA9IE5vbmVSdWxlczsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYXR0cmlidXRlLnZhbHVlKCksICJncm91cHMiKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJ
Z25vcmluZ0Nhc2UodmFsdWUsICJncm91cHMiKSkKICAgICAgICAgICAgIG1fcnVsZXNBdHRyID0g
R3JvdXBzUnVsZXM7Ci0gICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHJpYnV0
ZS52YWx1ZSgpLCAicm93cyIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZSh2
YWx1ZSwgInJvd3MiKSkKICAgICAgICAgICAgIG1fcnVsZXNBdHRyID0gUm93c1J1bGVzOwotICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJjb2xzIikpCisg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiY29scyIpKQogICAgICAg
ICAgICAgbV9ydWxlc0F0dHIgPSBDb2xzUnVsZXM7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShhdHRyaWJ1dGUudmFsdWUoKSwgImFsbCIpKQorICAgICAgICBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZSh2YWx1ZSwgImFsbCIpKQogICAgICAgICAgICAgbV9ydWxlc0F0dHIgPSBBbGxS
dWxlczsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gY2VsbHBhZGRpbmdBdHRy
KSB7Ci0gICAgICAgIGlmICghYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgbV9wYWRkaW5nID0gbWF4KDAsIGF0dHJpYnV0ZS52YWx1ZSgpLnRvSW50KCkpOworICAgIH0g
ZWxzZSBpZiAobmFtZSA9PSBjZWxscGFkZGluZ0F0dHIpIHsKKyAgICAgICAgaWYgKCF2YWx1ZS5p
c0VtcHR5KCkpCisgICAgICAgICAgICBtX3BhZGRpbmcgPSBtYXgoMCwgdmFsdWUudG9JbnQoKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFkZGluZyA9IDE7Ci0gICAgfSBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IGNvbHNBdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09
IGNvbHNBdHRyKSB7CiAgICAgICAgIC8vICMjIwogICAgIH0gZWxzZQotICAgICAgICBIVE1MRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgSFRNTEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIAogICAgIGlmIChib3JkZXJzQmVmb3JlICE9IGNl
bGxCb3JkZXJzKCkgfHwgb2xkUGFkZGluZyAhPSBtX3BhZGRpbmcpIHsKICAgICAgICAgbV9zaGFy
ZWRDZWxsU3R5bGUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRl
eCAxNzE5YmQ2Li5jYjBmOGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
aApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5
bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDMzYzVmZWUuLjE2MzI5MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMTYyLDEwICsxNjIs
MTAgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJgogICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGF0dHJpYnV0ZSwg
c3R5bGUpOwogfQogCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHJvd3NBdHRyKSB7Ci0gICAg
ICAgIGludCByb3dzID0gYXR0cmlidXRlLnZhbHVlKCkudG9JbnQoKTsKKyAgICBpZiAobmFtZSA9
PSByb3dzQXR0cikgeworICAgICAgICBpbnQgcm93cyA9IHZhbHVlLnRvSW50KCk7CiAgICAgICAg
IGlmIChyb3dzIDw9IDApCiAgICAgICAgICAgICByb3dzID0gZGVmYXVsdFJvd3M7CiAgICAgICAg
IGlmIChtX3Jvd3MgIT0gcm93cykgewpAQCAtMTczLDggKzE3Myw4IEBAIHZvaWQgSFRNTFRleHRB
cmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAg
ICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5z
ZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgfQotICAgIH0gZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBjb2xzQXR0cikgewotICAgICAgICBpbnQgY29scyA9
IGF0dHJpYnV0ZS52YWx1ZSgpLnRvSW50KCk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbHNB
dHRyKSB7CisgICAgICAgIGludCBjb2xzID0gdmFsdWUudG9JbnQoKTsKICAgICAgICAgaWYgKGNv
bHMgPD0gMCkKICAgICAgICAgICAgIGNvbHMgPSBkZWZhdWx0Q29sczsKICAgICAgICAgaWYgKG1f
Y29scyAhPSBjb2xzKSB7CkBAIC0xODIsMTMgKzE4MiwxMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVl
ZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KGF0dHJpYnV0ZS5uYW1lKCkgPT0gd3JhcEF0dHIpIHsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0g
d3JhcEF0dHIpIHsKICAgICAgICAgLy8gVGhlIHZpcnR1YWwvcGh5c2ljYWwgdmFsdWVzIHdlcmUg
YSBOZXRzY2FwZSBleHRlbnNpb24gb2YgSFRNTCAzLjAsIG5vdyBkZXByZWNhdGVkLgogICAgICAg
ICAvLyBUaGUgc29mdC9oYXJkIC9vZmYgdmFsdWVzIGFyZSBhIHJlY29tbWVuZGF0aW9uIGZvciBI
VE1MIDQgZXh0ZW5zaW9uIGJ5IElFIGFuZCBOUyA0LgogICAgICAgICBXcmFwTWV0aG9kIHdyYXA7
Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyaWJ1dGUudmFsdWUoKSwgInBoeXNp
Y2FsIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJoYXJkIikgfHwg
ZXF1YWxJZ25vcmluZ0Nhc2UoYXR0cmlidXRlLnZhbHVlKCksICJvbiIpKQorICAgICAgICBpZiAo
ZXF1YWxJZ25vcmluZ0Nhc2UodmFsdWUsICJwaHlzaWNhbCIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KHZhbHVlLCAiaGFyZCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAib24iKSkKICAgICAg
ICAgICAgIHdyYXAgPSBIYXJkV3JhcDsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYXR0cmlidXRlLnZhbHVlKCksICJvZmYiKSkKKyAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UodmFsdWUsICJvZmYiKSkKICAgICAgICAgICAgIHdyYXAgPSBOb1dyYXA7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHdyYXAgPSBTb2Z0V3JhcDsKQEAgLTE5NywxMiArMTk3LDEy
IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgICAg
ICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBhY2Nlc3NrZXlBdHRy
KSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IGFjY2Vzc2tleUF0dHIpIHsKICAgICAgICAgLy8g
aWdub3JlIGZvciB0aGUgbW9tZW50Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IG1heGxlbmd0aEF0dHIpCisgICAgfSBlbHNlIGlmIChuYW1lID09IG1heGxlbmd0aEF0dHIpCiAg
ICAgICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogICAgIGVsc2UKLSAgICAgICAgSFRNTFRl
eHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAg
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7
CiB9CiAKIFJlbmRlck9iamVjdCogSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oCmluZGV4IDdmNDM4ZjguLmZjYzE5ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzVGV4dEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9
IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5
bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiwgU3R5bGVQcm9wZXJ0
eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJl
cihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGEyZjk1MmEuLjBjOTI1YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCkBAIC01MDMsMTYgKzUwMywxNiBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjpzZWxlY3Rpb25DaGFuZ2VkKGJvb2wgdXNlclRyaWdnZXJlZCkKICAgICB9CiB9CiAKLXZv
aWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlKQordm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBwbGFjZWhvbGRlckF0dHIpCisg
ICAgaWYgKG5hbWUgPT0gcGxhY2Vob2xkZXJBdHRyKQogICAgICAgICB1cGRhdGVQbGFjZWhvbGRl
clZpc2liaWxpdHkodHJ1ZSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbnNl
bGVjdEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LnNlbGVjdEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0
ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gb25jaGFuZ2VBdHRyKQotICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBlbHNl
IGlmIChuYW1lID09IG9uc2VsZWN0QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuc2VsZWN0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uY2hhbmdlQXR0
cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2hhbmdl
RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsK
ICAgICBlbHNlCi0gICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnBhcnNl
QXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRo
U3RhdGU6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6bGFzdENoYW5nZVdhc1VzZXJFZGl0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCAxZmFm
OGZjLi5lZDk1MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oCkBAIC05NCw3ICs5NCw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlz
UGxhY2Vob2xkZXJFbXB0eSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFjZWhv
bGRlclRleHQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIAogICAg
IHZvaWQgY2FjaGVTZWxlY3Rpb24oaW50IHN0YXJ0LCBpbnQgZW5kLCBUZXh0RmllbGRTZWxlY3Rp
b25EaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCmluZGV4IDZjNmM5ZTQuLjM4NDUxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcApAQCAtOTUsMjggKzk1LDI4IEBAIHZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiAgICAg
SFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KIAotdm9pZCBIVE1M
VHJhY2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkK
K3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewotICAgICAgICBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgICAgICBpZiAoIWF0dHJpYnV0
ZS5pc0VtcHR5KCkgJiYgbWVkaWFFbGVtZW50KCkpCisgICAgICAgIGlmIChuYW1lID09IHNyY0F0
dHIpIHsKKyAgICAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpICYmIG1lZGlhRWxlbWVudCgp
KQogICAgICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwogICAgICAgICAgICAgLy8gNC44LjEw
LjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKICAgICAgICAgICAgIC8vIEFz
IHRoZSBraW5kLCBsYWJlbCwgYW5kIHNyY2xhbmcgYXR0cmlidXRlcyBhcmUgc2V0LCBjaGFuZ2Vk
LCBvciByZW1vdmVkLCB0aGUgdGV4dCB0cmFjayBtdXN0IHVwZGF0ZSBhY2NvcmRpbmdseS4uLgot
ICAgICAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0ga2luZEF0dHIpCi0gICAgICAg
ICAgICB0cmFjaygpLT5zZXRLaW5kKGF0dHJpYnV0ZS52YWx1ZSgpKTsKLSAgICAgICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBsYWJlbEF0dHIpCi0gICAgICAgICAgICB0cmFjaygpLT5z
ZXRMYWJlbChhdHRyaWJ1dGUudmFsdWUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gc3JjbGFuZ0F0dHIpCi0gICAgICAgICAgICB0cmFjaygpLT5zZXRMYW5ndWFnZShh
dHRyaWJ1dGUudmFsdWUoKSk7CisgICAgICAgIH0gZWxzZSBpZiAobmFtZSA9PSBraW5kQXR0cikK
KyAgICAgICAgICAgIHRyYWNrKCktPnNldEtpbmQodmFsdWUpOworICAgICAgICBlbHNlIGlmIChu
YW1lID09IGxhYmVsQXR0cikKKyAgICAgICAgICAgIHRyYWNrKCktPnNldExhYmVsKHZhbHVlKTsK
KyAgICAgICAgZWxzZSBpZiAobmFtZSA9PSBzcmNsYW5nQXR0cikKKyAgICAgICAgICAgIHRyYWNr
KCktPnNldExhbmd1YWdlKHZhbHVlKTsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBvbmxvYWRBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmVycm9yQXR0cikK
LSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZXJyb3JFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsKKyAgICBp
ZiAobmFtZSA9PSBvbmxvYWRBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhp
cywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IG9uZXJyb3JBdHRyKQorICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CiAgICAgZWxz
ZQotICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogS1VSTCBI
VE1MVHJhY2tFbGVtZW50OjpzcmMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuaAppbmRleCAzNGY3NzliLi5kN2ViZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
cmFja0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIEhUTUxUcmFja0Vs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRN
TFRyYWNrRWxlbWVudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRh
aW5lck5vZGUqKSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAKaW5kZXggMmFjMmNhNS4uMzFhY2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC0xMDQsOSArMTA0LDkgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25z
dAogICAgIHJldHVybiBIVE1MTWVkaWFFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShu
YW1lKTsKIH0KIAotdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBwb3N0ZXJBdHRyKSB7CisgICAgaWYgKG5h
bWUgPT0gcG9zdGVyQXR0cikgewogICAgICAgICAvLyBGb3JjZSBhIHBvc3RlciByZWNhbGMgYnkg
c2V0dGluZyBtX2Rpc3BsYXlNb2RlIHRvIFVua25vd24gZGlyZWN0bHkgYmVmb3JlIGNhbGxpbmcg
dXBkYXRlRGlzcGxheVN0YXRlLgogICAgICAgICBIVE1MTWVkaWFFbGVtZW50OjpzZXREaXNwbGF5
TW9kZShVbmtub3duKTsKICAgICAgICAgdXBkYXRlRGlzcGxheVN0YXRlKCk7CkBAIC0xMjEsNyAr
MTIxLDcgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmIGF0dHJpYnV0ZSkKICAgICAgICAgfQogI2VuZGlmCiAgICAgfSBlbHNlCi0gICAgICAg
IEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEhU
TUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogYm9vbCBI
VE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxWaWRlb0VsZW1lbnQuaAppbmRleCA5NGZiNGY3Li5mODZkNTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJl
bmRlclN0eWxlKik7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNW
aWRlbygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCmluZGV4IDNkOTYzZjkuLmEyNWQxMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNw
cApAQCAtOTgsMTYgKzk4LDE2IEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjplbnN1cmVTZWxl
Y3RQYXJzZWQoKQogICAgICAgICBtX3NlbGVjdG9yTGlzdCA9IENTU1NlbGVjdG9yTGlzdCgpOwog
fQogCi12b2lkIEhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpCit2b2lkIEhUTUxDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
LSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBzZWxlY3RBdHRyKSB7CisgICAgaWYgKG5hbWUg
PT0gc2VsZWN0QXR0cikgewogICAgICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvd1Jv
b3QoKSkgewogICAgICAgICAgICAgcm9vdC0+b3duZXIoKS0+c2V0U2hvdWxkQ29sbGVjdFNlbGVj
dEZlYXR1cmVTZXQoKTsKICAgICAgICAgICAgIHJvb3QtPm93bmVyKCktPmludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKICAgICAgICAgfQogICAgICAgICBtX3Nob3VsZFBhcnNlU2VsZWN0b3JMaXN0
ID0gdHJ1ZTsKICAgICB9IGVsc2UKLSAgICAgICAgSW5zZXJ0aW9uUG9pbnQ6OnBhcnNlQXR0cmli
dXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIEluc2VydGlvblBvaW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRN
TENvbnRlbnRFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9p
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5o
CmluZGV4IGVkMGIwODguLjU1N2FhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50RWxlbWVudC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZvaWQgZW5zdXJl
U2VsZWN0UGFyc2VkKCk7CiAgICAgYm9vbCB2YWxpZGF0ZVNlbGVjdCgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggYWRhODQ0My4uYzNhZmM5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAtNjUsMTYgKzY1LDE2
IEBAIGludCBNYXRoTUxFbGVtZW50Ojpyb3dTcGFuKCkgY29uc3QKICAgICByZXR1cm4gc3RkOjpt
YXgoMSwgcm93U3BhblZhbHVlLnRvSW50KCkpOwogfQogCi12b2lkIE1hdGhNTEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBNYXRoTUxFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHJvd3NwYW5B
dHRyKSB7CisgICAgaWYgKG5hbWUgPT0gcm93c3BhbkF0dHIpIHsKICAgICAgICAgaWYgKHJlbmRl
cmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNlbGwoKSAmJiBoYXNUYWdOYW1lKG10ZFRhZykp
CiAgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJlcigpKS0+Y29sU3Bhbk9yUm93
U3BhbkNoYW5nZWQoKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gY29sdW1u
c3BhbkF0dHIpIHsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29sdW1uc3BhbkF0dHIpIHsKICAg
ICAgICAgaWYgKHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNUYWJsZUNlbGwoKSAmJiBoYXNU
YWdOYW1lKG10ZFRhZykpCiAgICAgICAgICAgICB0b1JlbmRlclRhYmxlQ2VsbChyZW5kZXJlcigp
KS0+Y29sU3Bhbk9yUm93U3BhbkNoYW5nZWQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgU3R5bGVk
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICAgICAgU3R5bGVkRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBib29sIE1hdGhNTEVsZW1lbnQ6
OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAppbmRleCBiM2U3ZDI1Li43MDE3ZWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIE1hdGhNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURF
OwogCiBwcml2YXRlOiAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTUxFbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAKaW5kZXggODQ5
YTgzOS4uNWJmZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCkBAIC05OSwyNSAr
OTksMjUgQEAgYm9vbCBTVkdBRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29u
dGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1l
KTsKIH0KIAotdm9pZCBTVkdBRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyaWJ1dGUpCit2b2lkIFNWR0FFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAg
aWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnRh
cmdldEF0dHIpIHsKLSAgICAgICAgc2V0U1ZHVGFyZ2V0QmFzZVZhbHVlKGF0dHJpYnV0ZS52YWx1
ZSgpKTsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0QXR0cikgeworICAgICAgICBz
ZXRTVkdUYXJnZXRCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkKKyAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAgICAgICAg
IHJldHVybjsKLSAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisg
ICAgaWYgKFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQor
ICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0
dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAppbmRleCA2MGU3YjU4
Li40YzUwOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaApAQCAtNDksNyArNDksNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIHN2Z1Rh
cmdldCgpOyB9CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAK
aW5kZXggMzI2ODRhYy4uYTJjMzkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0xMDIsMTYgKzEwMiwxNiBAQCBib29sIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxp
ZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZv
aWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0
ZSYgYXR0cmlidXRlKQordm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkK
IHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7Ci0g
ICAgICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Cisg
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdBbmltYXRp
b25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cGF0aEF0dHIp
IHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cGF0aEF0dHIpIHsKICAgICAgICAgbV9wYXRo
ID0gUGF0aCgpOwotICAgICAgICBidWlsZFBhdGhGcm9tU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSgp
LCBtX3BhdGgpOworICAgICAgICBidWlsZFBhdGhGcm9tU3RyaW5nKHZhbHVlLCBtX3BhdGgpOwog
ICAgICAgICB1cGRhdGVBbmltYXRpb25QYXRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oCmluZGV4IDY3NTA3
ZTQuLmJkMWVmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGhhc1Zh
bGlkQXR0cmlidXRlTmFtZSgpOwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRlZFR5cGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAppbmRleCAxOGU0NWVm
Li45Nzc5YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5z
Zm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNm
b3JtRWxlbWVudC5jcHAKQEAgLTYwLDE1ICs2MCwxNSBAQCBib29sIFNWR0FuaW1hdGVUcmFuc2Zv
cm1FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TgogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUs
IFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHQW5p
bWF0ZVRyYW5zZm9ybUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKQordm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsK
LSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7Ci0gICAg
ICAgIFNWR0FuaW1hdGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlm
ICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHQW5pbWF0ZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp0eXBlQXR0cikgewotICAg
ICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUoYXR0cmli
dXRlLnZhbHVlKCkpOworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgeworICAg
ICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm1hYmxlOjpwYXJzZVRyYW5zZm9ybVR5cGUodmFsdWUp
OwogICAgICAgICBpZiAobV90eXBlID09IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9NQVRS
SVgpCiAgICAgICAgICAgICBtX3R5cGUgPSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVU5L
Tk9XTjsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZVRyYW5zZm9ybUVsZW1lbnQuaAppbmRleCAyMDA4ZWJjLi5lOTczNWRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaApAQCAtNDMsNyArNDMs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKTsK
IAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCiAgICAgU1ZHVHJhbnNmb3JtOjpTVkdU
cmFuc2Zvcm1UeXBlIG1fdHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHAKaW5kZXggNTM3NjVjMy4uM2MyMDk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcApAQCAtMTU5LDE4ICsxNTksMTggQEAgYm9vbCBTVkdB
bmltYXRpb25FbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxRdWFs
aWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12
b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYg
YXR0cmlidXRlKQordm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAg
U1ZHU01JTEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdTTUlMRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpIHsKKyAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikgewogICAgICAgICAvLyBQZXIgdGhlIFNNSUwgc3Bl
Y2lmaWNhdGlvbiwgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGUgc3BhY2UsCiAgICAgICAgIC8v
IGFuZCB3aGl0ZSBzcGFjZSBiZWZvcmUgYW5kIGFmdGVyIHNlbWljb2xvbiBzZXBhcmF0b3JzLCBp
cyBhbGxvd2VkIGFuZCB3aWxsIGJlIGlnbm9yZWQuCiAgICAgICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL1NWRzExL2FuaW1hdGUuaHRtbCNWYWx1ZXNBdHRyaWJ1dGUKLSAgICAgICAgYXR0cmli
dXRlLnZhbHVlKCkuc3RyaW5nKCkuc3BsaXQoJzsnLCBtX3ZhbHVlcyk7CisgICAgICAgIHZhbHVl
LnN0cmluZygpLnNwbGl0KCc7JywgbV92YWx1ZXMpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBtX3ZhbHVlc1tpXSA9
IG1fdmFsdWVzW2ldLnN0cmlwV2hpdGVTcGFjZSgpOwogCkBAIC0xNzgsNDMgKzE3OCw0MyBAQCB2
b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYg
YXR0cmlidXRlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gU1ZHTmFtZXM6OmtleVRpbWVzQXR0cikgewotICAgICAgICBwYXJzZUtleVRpbWVz
KGF0dHJpYnV0ZS52YWx1ZSgpLCBtX2tleVRpbWVzLCB0cnVlKTsKKyAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6a2V5VGltZXNBdHRyKSB7CisgICAgICAgIHBhcnNlS2V5VGltZXModmFsdWUsIG1f
a2V5VGltZXMsIHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmtleVBvaW50c0F0dHIpIHsKKyAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6a2V5UG9pbnRzQXR0cikgewogICAgICAgICBpZiAoaGFzVGFnTmFtZShTVkdO
YW1lczo6YW5pbWF0ZU1vdGlvblRhZykpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgc3BlY2lm
aWVkIHRvIGJlIGFuIGFuaW1hdGVNb3Rpb24gYXR0cmlidXRlIG9ubHkgYnV0IGl0IGlzIHNpbXBs
ZXIgdG8gcHV0IGl0IGhlcmUgCiAgICAgICAgICAgICAvLyB3aGVyZSB0aGUgb3RoZXIgdGltaW5n
IGNhbGN1bGF0YXRpb25zIGFyZS4KLSAgICAgICAgICAgIHBhcnNlS2V5VGltZXMoYXR0cmlidXRl
LnZhbHVlKCksIG1fa2V5UG9pbnRzLCBmYWxzZSk7CisgICAgICAgICAgICBwYXJzZUtleVRpbWVz
KHZhbHVlLCBtX2tleVBvaW50cywgZmFsc2UpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6a2V5U3BsaW5l
c0F0dHIpIHsKLSAgICAgICAgcGFyc2VLZXlTcGxpbmVzKGF0dHJpYnV0ZS52YWx1ZSgpLCBtX2tl
eVNwbGluZXMpOworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjprZXlTcGxpbmVzQXR0cikgewor
ICAgICAgICBwYXJzZUtleVNwbGluZXModmFsdWUsIG1fa2V5U3BsaW5lcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6YXR0
cmlidXRlVHlwZUF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlVHlwZShhdHRyaWJ1dGUudmFs
dWUoKSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmF0dHJpYnV0ZVR5cGVBdHRyKSB7Cisg
ICAgICAgIHNldEF0dHJpYnV0ZVR5cGUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmNhbGNNb2RlQXR0cikgewot
ICAgICAgICBzZXRDYWxjTW9kZShhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OmNhbGNNb2RlQXR0cikgeworICAgICAgICBzZXRDYWxjTW9kZSh2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdO
YW1lczo6ZnJvbUF0dHIgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6dG9BdHRyIHx8
IGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmJ5QXR0cikgeworICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjpmcm9tQXR0ciB8fCBuYW1lID09IFNWR05hbWVzOjp0b0F0dHIgfHwgbmFtZSA9
PSBTVkdOYW1lczo6YnlBdHRyKSB7CiAgICAgICAgIHVwZGF0ZUFuaW1hdGlvbk1vZGUoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUo
YXR0cmlidXRlKSkKKyAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRp
b25FbGVtZW50LmgKaW5kZXggODhhMzM1ZS4uNzQzOWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0aW9uRWxlbWVudC5oCkBAIC0xNzQsNyArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoY29uc3QgU3RyaW5nJiBm
cm9tLCBjb25zdCBTdHJpbmcmIHRvKTsKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBPVkVSUklERTsKIAogICAgIGVudW0gQXR0cmlidXRlVHlwZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5jcHAKaW5kZXggYTM0MDVjMC4uMzdlNjI1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcApAQCAtODAsMjUgKzgwLDI1IEBAIGJvb2wgU1ZH
Q2lyY2xlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlm
aWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9p
ZCBTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJp
YnV0ZSkKK3ZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJz
aW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKQotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIHNldEN4QmFzZVZhbHVlKFNW
R0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgYXR0cmlidXRlLnZhbHVlKCksIHBh
cnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpj
eUF0dHIpCi0gICAgICAgIHNldEN5QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIHNldFJCYXNl
VmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCBhdHRyaWJ1dGUudmFs
dWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7Ci0gICAgZWxzZSBpZiAo
U1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAgICAgICAgICAgICB8fCBTVkdM
YW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAgICAgICAgICAgICB8fCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKSB7Cisg
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKKyAgICAgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCisgICAgICAgIHNldEN4QmFzZVZhbHVlKFNW
R0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCisgICAgICAgIHNldEN5QmFz
ZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpCisgICAgICAg
IHNldFJCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1
ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgZWxzZSBpZiAoU1ZH
VGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgIHx8IFNWR0xh
bmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKSB7
CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmVwb3J0
QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIGF0dHJpYnV0ZSk7CisgICAgcmVwb3J0
QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9p
ZCBTVkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5kZXggMjA2
NWJlYS4uMzRjOTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCkBAIC00
NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBiOGZiYmY5Li45ZDM4
YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtNzAs
MjUgKzcwLDI1IEBAIGJvb2wgU1ZHQ2xpcFBhdGhFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0
cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRv
cj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5u
YW1lKCkpKSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkp
IHsKKyAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0cikgewotICAgICAgICBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyhhdHRyaWJ1dGUudmFsdWUoKSk7
CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyKSB7CisgICAgICAg
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0Q2xpcFBhdGhVbml0c0Jh
c2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkKKyAgICBpZiAoU1ZHVGVzdHM6
OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChT
VkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR0xhbmdT
cGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0
ZSkpCisgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKaW5kZXggN2QyNTMxNS4u
NjJlNDkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaApAQCAtNDgs
NyArNDgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJj
ZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVy
Q2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cAppbmRleCA1NmVjNTYyLi4wYTI5N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKQEAgLTc1LDIy
ICs3NSwyMSBAQCBib29sIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojppc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYQogICAgIHJldHVybiBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xh
dG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBT
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7Ci0gICAgICAgIFNW
R0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgaWYgKCFpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlID0gYXR0cmlidXRlLnZhbHVlKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1l
KCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnR5
cGVBdHRyKSB7CiAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyVHlwZSBwcm9wZXJ0eVZhbHVlID0g
U1ZHUHJvcGVydHlUcmFpdHM8Q29tcG9uZW50VHJhbnNmZXJUeXBlPjo6ZnJvbVN0cmluZyh2YWx1
ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIHNldFR5cGVC
YXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKSB7CisgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRhYmxlVmFsdWVzQXR0cikgewogICAgICAgICBTVkdOdW1i
ZXJMaXN0IG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwogICAgICAgICBk
ZXRhY2hBbmltYXRlZFRhYmxlVmFsdWVzTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKQEAg
LTk4LDI3ICs5NywyNyBAQCB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNsb3BlQXR0
cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzbG9wZUF0dHIpIHsKICAgICAgICAgc2V0
U2xvcGVCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjppbnRlcmNlcHRBdHRyKSB7
CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIpIHsKICAgICAgICAgc2V0
SW50ZXJjZXB0QmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6YW1wbGl0dWRlQXR0
cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyKSB7CiAgICAgICAg
IHNldEFtcGxpdHVkZUJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmV4cG9uZW50
QXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpleHBvbmVudEF0dHIpIHsKICAgICAg
ICAgc2V0RXhwb25lbnRCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpvZmZzZXRB
dHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKICAgICAgICAg
c2V0T2Zmc2V0QmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5oCmluZGV4IGY0NDQ2MWEuLjNlY2IxZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dC5oCkBAIC03OCw3ICs3OCw3IEBAIHByb3RlY3RlZDoKICAgICBTVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAg
IGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKaW5kZXggZjU4ODE2Yi4uZWRmOWQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcApAQCAtNzgsMjMgKzc4LDIzIEBAIGJv
b2wgU1ZHQ3Vyc29yRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8
UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0K
IAotdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBT
VkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKQotICAgICAgICBTVkdFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgYXR0cmlidXRlLnZhbHVlKCksIHBhcnNlRXJyb3IpKTsKLSAg
ICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAg
c2V0WUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCBhdHRy
aWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKFNWR1Rlc3RzOjpwYXJz
ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0gICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKQotICAgICAgICAgICAgIHx8IFNW
R1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkgeworICAgIGlmICghaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpCisgICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikK
KyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
eUF0dHIpCisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChTVkdUZXN0czo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAg
ICAgfHwgU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpIHsKICAg
ICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgCi0gICAgcmVwb3J0
QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIGF0dHJpYnV0ZSk7CisgICAgcmVwb3J0
QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9p
ZCBTVkdDdXJzb3JFbGVtZW50OjphZGRDbGllbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCmluZGV4IDY4NzU3YWIuLjhlMmQ2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6Omlz
VmFsaWQoKTsgfQogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0
ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDYzODJmNzEuLjZmMGU4MjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTEzOSwxMiArMTM5LDEyIEBAIGJvb2wg
U1ZHRWxlbWVudDo6aXNPdXRlcm1vc3RTVkdTVkdFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4g
IXBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCk7CiB9CiAKLXZvaWQgU1ZHRWxlbWVudDo6cmVw
b3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKFNWR1BhcnNpbmdFcnJvciBlcnJvciwgY29uc3QgQXR0
cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0VsZW1lbnQ6OnJlcG9ydEF0dHJpYnV0ZVBhcnNp
bmdFcnJvcihTVkdQYXJzaW5nRXJyb3IgZXJyb3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKGVycm9yID09IE5vRXJyb3Ip
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBlcnJvclN0cmluZyA9ICI8IiArIHRhZ05h
bWUoKSArICI+IGF0dHJpYnV0ZSAiICsgYXR0cmlidXRlLm5hbWUoKS50b1N0cmluZygpICsgIj1c
IiIgKyBhdHRyaWJ1dGUudmFsdWUoKSArICJcIiI7CisgICAgU3RyaW5nIGVycm9yU3RyaW5nID0g
IjwiICsgdGFnTmFtZSgpICsgIj4gYXR0cmlidXRlICIgKyBuYW1lLnRvU3RyaW5nKCkgKyAiPVwi
IiArIHZhbHVlICsgIlwiIjsKICAgICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMg
PSBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCk7CiAKICAgICBpZiAoZXJyb3IgPT0g
TmVnYXRpdmVWYWx1ZUZvcmJpZGRlbkVycm9yKSB7CkBAIC0zMTIsMzEgKzMxMiwzMSBAQCB2b2lk
IFNWR0VsZW1lbnQ6OnNldENvcnJlc3BvbmRpbmdFbGVtZW50KFNWR0VsZW1lbnQqIGNvcnJlc3Bv
bmRpbmdFbGVtZW50KQogICAgIGVuc3VyZVNWR1JhcmVEYXRhKCktPnNldENvcnJlc3BvbmRpbmdF
bGVtZW50KGNvcnJlc3BvbmRpbmdFbGVtZW50KTsKIH0KIAotdm9pZCBTVkdFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICAvLyBzdGFuZGFyZCBldmVudHMKLSAgICBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBvbmxvYWRBdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhp
cywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbmNsaWNr
QXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuY2xp
Y2tFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyaWJ1dGUpKTsK
LSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IG9ubW91c2Vkb3duQXR0cikKLSAgICAg
ICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBvbm1vdXNlbW92ZUF0dHIpCi0gICAgICAgIHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gb25tb3VzZW91dEF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBvbm1vdXNlb3ZlckF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
b25tb3VzZXVwQXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkubW91c2V1cEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHJpYnV0ZSkpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9u
Zm9jdXNpbkF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmZvY3VzaW5FdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
aWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpvbmZv
Y3Vzb3V0QXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuZm9jdXNvdXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
aWJ1dGUpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpvbmFj
dGl2YXRlQXR0cikKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuRE9NQWN0aXZhdGVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBh
dHRyaWJ1dGUpKTsKKyAgICBpZiAobmFtZSA9PSBvbmxvYWRBdHRyKQorICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09
IG9uY2xpY2tBdHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUs
IHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbm1vdXNlZG93bkF0dHIpCisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlZG93bkV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxz
ZSBpZiAobmFtZSA9PSBvbm1vdXNlbW92ZUF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBvbm1v
dXNlb3V0QXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkubW91c2VvdXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1l
LCB2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gb25tb3VzZW92ZXJBdHRyKQorICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOworICAgIGVs
c2UgaWYgKG5hbWUgPT0gb25tb3VzZXVwQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkubW91c2V1cEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKHRoaXMsIG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6b25mb2N1c2luQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuZm9jdXNpbkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IG5hbWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6b25mb2N1c291
dEF0dHIpCisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZv
Y3Vzb3V0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFs
dWUpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpvbmFjdGl2YXRlQXR0cikKKyAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NQWN0aXZhdGVF
dmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBuYW1lLCB2YWx1ZSkpOwog
ICAgIGVsc2UKLSAgICAgICAgU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRl
KTsKKyAgICAgICAgU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwog
fQogCiB2b2lkIFNWR0VsZW1lbnQ6OmFuaW1hdGVkUHJvcGVydHlUeXBlRm9yQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFZlY3RvcjxBbmltYXRlZFByb3BlcnR5
VHlwZT4mIHByb3BlcnR5VHlwZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAppbmRleCBjNTJlNTJh
Li40MTdlMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKQEAgLTEyOCw3ICsxMjgsNyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlU1ZHRWxlbWVudCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CkBAIC0xMzksNyAr
MTM5LDcgQEAgcHJvdGVjdGVkOgogICAgIFNWR0VsZW1lbnRSYXJlRGF0YSogc3ZnUmFyZURhdGEo
KSBjb25zdDsKICAgICBTVkdFbGVtZW50UmFyZURhdGEqIGVuc3VyZVNWR1JhcmVEYXRhKCk7CiAK
LSAgICB2b2lkIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihTVkdQYXJzaW5nRXJyb3IsIGNv
bnN0IEF0dHJpYnV0ZSYpOworICAgIHZvaWQgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKFNW
R1BhcnNpbmdFcnJvciwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
OwogCiAgICAgLy8gRklYTUU6IEF1dGhvciBzaGFkb3dzIHNob3VsZCBiZSBhbGxvd2VkCiAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3OTM4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAppbmRleCA4YWM3NDEzLi44NWQzNzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKQEAgLTgyLDI3ICs4Miwy
NyBAQCBib29sIFNWR0VsbGlwc2VFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5j
b250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5h
bWUpOwogfQogCi12b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkKLSAgICAgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBz
ZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0dHJp
YnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBzZXRDeUJhc2VWYWx1ZShTVkdMZW5ndGg6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJv
cikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnJ4QXR0cikK
LSAgICAgICAgc2V0UnhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdp
ZHRoLCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cnlBdHRyKQot
ICAgICAgICBzZXRSeUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVp
Z2h0LCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KSk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAg
ICAgICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAg
ICAgICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0
ZShhdHRyaWJ1dGUpKSB7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKKyAg
ICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCisgICAgICAg
IHNldEN4QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIp
CisgICAgICAgIHNldEN5QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6cnhBdHRyKQorICAgICAgICBzZXRSeEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMp
KTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCisgICAgICAgIHNldFJ5
QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBw
YXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICBlbHNlIGlmIChTVkdUZXN0
czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZHTGFuZ1Nw
YWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICB8fCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpIHsKICAg
ICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXBvcnRBdHRy
aWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRlKTsKKyAgICByZXBvcnRBdHRy
aWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNW
R0VsbGlwc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaAppbmRleCAxZDQz
ZWIzLi4wMjY2OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaApAQCAt
NDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmNw
cAppbmRleCAwOWQ3MTAyLi41MjkwMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCkBAIC0yOSwxMCArMjksMTAgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQorYm9vbCBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUu
bmFtZSgpID09IFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cikgewotICAg
ICAgICBzZXRFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQmFzZVZhbHVlKGF0dHJpYnV0ZS52YWx1
ZSgpID09ICJ0cnVlIik7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWRBdHRyKSB7CisgICAgICAgIHNldEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRC
YXNlVmFsdWUodmFsdWUgPT0gInRydWUiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQu
aAppbmRleCAyYjc5MjI1Li5mNmE1NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpIHsgfQogCi0gICAgYm9vbCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmKTsKKyAgICBib29sIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZvaWQgYWRkU3VwcG9ydGVkQXR0cmlidXRlcyhI
YXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7CiAgICAgYm9vbCBoYW5kbGVBdHRyaWJ1dGVDaGFuZ2Uo
U1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IGZhYTBiMzguLjg3OTdiNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtNjcsMjcgKzY3LDI2IEBAIGJvb2wgU1ZH
RkVCbGVuZEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxp
ZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZv
aWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKQordm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7Ci0gICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRl
KTsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICAgIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNW
R05hbWVzOjptb2RlQXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikg
ewogICAgICAgICBCbGVuZE1vZGVUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0
czxCbGVuZE1vZGVUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0
eVZhbHVlID4gMCkKICAgICAgICAgICAgIHNldE1vZGVCYXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBT
VkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewog
ICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluMkF0dHIpIHsKKyAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewogICAgICAgICBzZXRJbjJCYXNlVmFsdWUo
dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAppbmRleCA4OTkxMzJhLi43M2FiN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZFQmxl
bmRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgYm9vbCBp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJp
YnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuY3BwCmluZGV4IDJjYjRiODQuLjdjZTk2NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtNjcsMjcgKzY3LDI2IEBAIGJvb2wg
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFp
bnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsK
IH0KIAotdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUo
KSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJz
ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFt
ZSkpIHsKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJz
ZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlLnZhbHVlKCk7Ci0gICAgaWYgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyKSB7Ci0gICAgICAgIENvbG9yTWF0
cml4VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBl
Pjo6ZnJvbVN0cmluZyhhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnR5cGVBdHRyKSB7CisgICAgICAgIENvbG9yTWF0cml4VHlwZSBwcm9wZXJ0eVZhbHVlID0g
U1ZHUHJvcGVydHlUcmFpdHM8Q29sb3JNYXRyaXhUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAg
ICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIHNldFR5cGVCYXNlVmFs
dWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cikgewogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6
OnZhbHVlc0F0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikgewog
ICAgICAgICBTVkdOdW1iZXJMaXN0IG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFs
dWUpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFZhbHVlc0xpc3RXcmFwcGVycyhuZXdMaXN0LnNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCmlu
ZGV4IGVkMzNkZjAuLmIwZjcxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5oCkBAIC03NCw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5jcHAKaW5kZXggMTY2NTFhOS4uZTIzNzY1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC02
MiwxNSArNjIsMTQgQEAgYm9vbCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6aXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXQKICAgICByZXR1cm4gc3VwcG9y
dGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJh
bnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Cisg
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUg
PSBhdHRyaWJ1dGUudmFsdWUoKTsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1l
czo6aW5BdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewogICAgICAg
ICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRl
eCA3OWI1ZGM5Li4wMWQ3NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBwcml2YXRlOgogCiAg
ICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICBib29sIGlzU3Vw
cG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWls
ZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRJRVMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IGVmNTlkMGQuLmFkNDBh
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBA
IC03OSw0NyArNzksNDYgQEAgYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hU
cmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlLnZh
bHVlKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0
cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpIHsKICAgICAgICAg
Q29tcG9zaXRlT3BlcmF0aW9uVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8
Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAo
cHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRfb3BlcmF0b3JCYXNlVmFsdWUocHJv
cGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikgewogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluMkF0
dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewogICAgICAgICBzZXRJ
bjJCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmsxQXR0cikgeworICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjprMUF0dHIpIHsKICAgICAgICAgc2V0SzFCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IFNWR05hbWVzOjprMkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6azJBdHRyKSB7
CiAgICAgICAgIHNldEsyQmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6azNBdHRy
KSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmszQXR0cikgewogICAgICAgICBzZXRLM0Jh
c2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6Oms0QXR0cikgeworICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjprNEF0dHIpIHsKICAgICAgICAgc2V0SzRCYXNlVmFsdWUodmFsdWUudG9G
bG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvc2l0ZUVsZW1lbnQuaAppbmRleCBjYjk4Njc2Li44YzYxZjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCkBAIC04Miw3ICs4Miw3IEBAIHByaXZh
dGU6CiAgICAgU1ZHRkVDb21wb3NpdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDVjOTczZDcuLjA3N2I5ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApA
QCAtMTE5LDIwICsxMTksMTkgQEAgYm9vbCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6aXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck4KICAgICByZXR1cm4g
c3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVI
YXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQg
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1
cHBvcnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Cisg
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUg
PSBhdHRyaWJ1dGUudmFsdWUoKTsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1l
czo6aW5BdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewogICAgICAg
ICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9yZGVyQXR0cikgeworICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIpIHsKICAgICAgICAgZmxvYXQgeCwgeTsKICAgICAg
ICAgaWYgKHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpICYmIHggPj0gMSAm
JiB5ID49IDEpIHsKICAgICAgICAgICAgIHNldE9yZGVyWEJhc2VWYWx1ZSh4KTsKQEAgLTE0NCw3
ICsxNDMsNyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjplZGdlTW9kZUF0dHIpIHsKKyAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyKSB7CiAgICAgICAgIEVkZ2VNb2Rl
VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8RWRnZU1vZGVUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAg
ICAgIHNldEVkZ2VNb2RlQmFzZVZhbHVlKHByb3BlcnR5VmFsdWUpOwpAQCAtMTU1LDcgKzE1NCw3
IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpIHsKKyAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0cikgewogICAgICAgICBTVkdOdW1i
ZXJMaXN0IG5ld0xpc3Q7CiAgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwogICAgICAgICBk
ZXRhY2hBbmltYXRlZEtlcm5lbE1hdHJpeExpc3RXcmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CkBA
IC0xNjMsNyArMTYyLDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIp
IHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIpIHsKICAgICAgICAgZmxv
YXQgZGl2aXNvciA9IHZhbHVlLnRvRmxvYXQoKTsKICAgICAgICAgaWYgKGRpdmlzb3IpCiAgICAg
ICAgICAgICBzZXREaXZpc29yQmFzZVZhbHVlKGRpdmlzb3IpOwpAQCAtMTc0LDIyICsxNzMsMjIg
QEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAg
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyKSB7CisgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyKSB7CiAgICAgICAgIHNldEJpYXNCYXNlVmFsdWUodmFs
dWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IFNWR05hbWVzOjp0YXJnZXRYQXR0cikgeworICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjp0YXJnZXRYQXR0cikgewogICAgICAgICBzZXRUYXJnZXRYQmFzZVZhbHVlKHZhbHVl
LnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp0YXJnZXRZQXR0cikgeworICAgIGlm
IChuYW1lID09IFNWR05hbWVzOjp0YXJnZXRZQXR0cikgewogICAgICAgICBzZXRUYXJnZXRZQmFz
ZVZhbHVlKHZhbHVlLnN0cmluZygpLnRvVUludFN0cmljdCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjprZXJuZWxVbml0
TGVuZ3RoQXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3Ro
QXR0cikgewogICAgICAgICBmbG9hdCB4LCB5OwogICAgICAgICBpZiAocGFyc2VOdW1iZXJPcHRp
b25hbE51bWJlcih2YWx1ZSwgeCwgeSkgJiYgeCA+IDAgJiYgeSA+IDApIHsKICAgICAgICAgICAg
IHNldEtlcm5lbFVuaXRMZW5ndGhYQmFzZVZhbHVlKHgpOwpAQCAtMjAxLDcgKzIwMCw3IEBAIHZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJp
YnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyKSB7CisgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZSA9
PSAidHJ1ZSIpCiAgICAgICAgICAgICBzZXRQcmVzZXJ2ZUFscGhhQmFzZVZhbHVlKHRydWUpOwog
ICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiZmFsc2UiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaAppbmRleCAwMjM4NjVhLi5hZTBiODVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaApA
QCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAK
aW5kZXggNDUxYTIwMy4uMDYzZGNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTkwLDMwICs5MCwyOSBAQCBib29sIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cgogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5z
PFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9
CiAKLXZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRl
Lm5hbWUoKSkgfHwgYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JB
dHRyKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFy
c2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5h
bWUpIHx8IG5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgeworICAgICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUgPSBhdHRyaWJ1dGUudmFsdWUoKTsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikg
ewogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0
dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikgewogICAg
ICAgICBzZXRTdXJmYWNlU2NhbGVCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpk
aWZmdXNlQ29uc3RhbnRBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VD
b25zdGFudEF0dHIpIHsKICAgICAgICAgc2V0RGlmZnVzZUNvbnN0YW50QmFzZVZhbHVlKHZhbHVl
LnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKKyAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKICAgICAgICAgZmxvYXQgeCwg
eTsKICAgICAgICAgaWYgKHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpKSB7
CiAgICAgICAgICAgICBzZXRLZXJuZWxVbml0TGVuZ3RoWEJhc2VWYWx1ZSh4KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAppbmRleCA2YTg5
NGNjLi5jMWE5YmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAg
ICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVm
ZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxk
ZXIqLCBGaWx0ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAKaW5kZXggODE1YjdmOC4uOGNhM2NiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTczLDM5
ICs3MywzOCBAQCBib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6aXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cgogICAgIHJldHVybiBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xh
dG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmli
dXRlLnZhbHVlKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhDaGFu
bmVsU2VsZWN0b3JBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2Vs
ZWN0b3JBdHRyKSB7CiAgICAgICAgIENoYW5uZWxTZWxlY3RvclR5cGUgcHJvcGVydHlWYWx1ZSA9
IFNWR1Byb3BlcnR5VHJhaXRzPENoYW5uZWxTZWxlY3RvclR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVl
KTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0WENoYW5u
ZWxTZWxlY3RvckJhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVj
dG9yQXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0
cikgewogICAgICAgICBDaGFubmVsU2VsZWN0b3JUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9w
ZXJ0eVRyYWl0czxDaGFubmVsU2VsZWN0b3JUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAg
ICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIHNldFlDaGFubmVsU2VsZWN0
b3JCYXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
U1ZHTmFtZXM6OmluMkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikg
ewogICAgICAgICBzZXRJbjJCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNjYWxlQXR0cikgewor
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzY2FsZUF0dHIpIHsKICAgICAgICAgc2V0U2NhbGVC
YXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAppbmRleCAw
YWE4NDM4Li4yZTc0YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Kik7CiAgICAgCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0
ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBi
b29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA2NWVlMDc2Li40MGEwYjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC05
NSwxNSArOTUsMTQgQEAgYm9vbCBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojppc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9y
dGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJh
bnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmlidXRlLnZh
bHVlKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnN0ZERldmlhdGlv
bkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikgewog
ICAgICAgICBmbG9hdCB4LCB5OwogICAgICAgICBpZiAocGFyc2VOdW1iZXJPcHRpb25hbE51bWJl
cih2YWx1ZSwgeCwgeSkpIHsKICAgICAgICAgICAgIHNldFN0ZERldmlhdGlvblhCYXNlVmFsdWUo
eCk7CkBAIC0xMTIsMTggKzExMSwxOCBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0cikg
eworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAgICAgc2V0SW4xQmFz
ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IFNWR05hbWVzOjpkeEF0dHIpIHsKLSAgICAgICAgc2V0RHhCYXNlVmFsdWUo
YXR0cmlidXRlLnZhbHVlKCkudG9GbG9hdCgpKTsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
ZHhBdHRyKSB7CisgICAgICAgIHNldER4QmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1l
czo6ZHlBdHRyKSB7Ci0gICAgICAgIHNldER5QmFzZVZhbHVlKGF0dHJpYnV0ZS52YWx1ZSgpLnRv
RmxvYXQoKSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgeworICAgICAgICBz
ZXREeUJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuaAppbmRleCA3NmVi
MTY3Li5jYTA5ZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVt
ZW50LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIAogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IDJlNDMyYzcuLjVk
ZTYyYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwCkBAIC04NSwxNSArODUsMTQgQEAgYm9vbCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW0KICAgICBy
ZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRy
aWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2
b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlz
U3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7Ci0gICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsK
KyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05h
bWVzOjpzdGREZXZpYXRpb25BdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN0ZERl
dmlhdGlvbkF0dHIpIHsKICAgICAgICAgZmxvYXQgeCwgeTsKICAgICAgICAgaWYgKHBhcnNlTnVt
YmVyT3B0aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpKSB7CiAgICAgICAgICAgICBzZXRTdGREZXZp
YXRpb25YQmFzZVZhbHVlKHgpOwpAQCAtMTAyLDcgKzEwMSw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNW
R05hbWVzOjppbkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CiAg
ICAgICAgIHNldEluMUJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKaW5kZXggNWU4
YWFhZi4uODZmYzNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuaApAQCAtMzgsNyArMzgsNyBAQCBwcml2YXRlOgogICAgIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyKik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IGVhZmVhMWEuLjk5ODM5ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTI1LDI1ICsxMjUsMjUgQEAg
Ym9vbCBTVkdGRUltYWdlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFp
bnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsK
IH0KIAotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewot
ICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShh
dHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKKyAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKICAgICAgICAgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOwotICAgICAgICBwcmVzZXJ2
ZUFzcGVjdFJhdGlvLnBhcnNlKGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICAgICAgcHJlc2VydmVB
c3BlY3RSYXRpby5wYXJzZSh2YWx1ZSk7CiAgICAgICAgIHNldFByZXNlcnZlQXNwZWN0UmF0aW9C
YXNlVmFsdWUocHJlc2VydmVBc3BlY3RSYXRpbyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAg
IGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0
ZSkpCisgICAgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKQog
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBh
cnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5oCmluZGV4IGRlNjA2NDIuLmVkYjQxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHRkVJbWFnZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCmluZGV4
IDM4NGIyYTYuLjc2ZjY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxp
Z2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmNwcApAQCAtMTA2LDYwICsxMDYsNTkgQEAgYm9vbCBTVkdGRUxpZ2h0RWxlbWVudDo6aXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJu
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRl
SGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0ZFTGln
aHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
YXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
YXR0cmlidXRlKTsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7CisgICAg
ICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUu
dmFsdWUoKTsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6YXppbXV0aEF0
dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6YXppbXV0aEF0dHIpIHsKICAgICAgICAg
c2V0QXppbXV0aEJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmVsZXZhdGlvbkF0
dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZWxldmF0aW9uQXR0cikgewogICAgICAg
ICBzZXRFbGV2YXRpb25CYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikg
eworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikgewogICAgICAgICBzZXRYQmFzZVZh
bHVlKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKICAgICAgICAgc2V0WUJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnpBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnpBdHRyKSB7CiAg
ICAgICAgIHNldFpCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpwb2ludHNBdFhB
dHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIpIHsKICAgICAg
ICAgc2V0UG9pbnRzQXRYQmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cG9pbnRz
QXRZQXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFlBdHRyKSB7CiAg
ICAgICAgIHNldFBvaW50c0F0WUJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBv
aW50c0F0WkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRaQXR0cikg
ewogICAgICAgICBzZXRQb2ludHNBdFpCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVz
OjpzcGVjdWxhckV4cG9uZW50QXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0cikgewogICAgICAgICBzZXRTcGVjdWxhckV4cG9uZW50QmFzZVZhbHVl
KHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKSB7CisgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikgewogICAgICAgICBz
ZXRMaW1pdGluZ0NvbmVBbmdsZUJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAppbmRleCA4
OWQ4YzJkLi43NTVjNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1N1cHBv
cnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBj
aGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0
ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKaW5kZXggOGNkMGNhNi4uMTNiNTcwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKQEAgLTYw
LDE1ICs2MCwxNSBAQCBib29sIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5z
bGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShh
dHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShh
dHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAg
ICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0
cikgewotICAgICAgICBzZXRJbjFCYXNlVmFsdWUoYXR0cmlidXRlLnZhbHVlKCkpOworICAgIGlm
IChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICAgICAgc2V0SW4xQmFzZVZhbHVlKHZh
bHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VOb2RlRWxlbWVudC5oCmluZGV4IGM1OTJhZTUuLmRiNDNjNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHJpdmF0
ZToKICAgICBTVkdGRU1lcmdlTm9kZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVNZXJnZU5vZGVFbGVtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGQxZTQzNGU5
Li41NTA0NTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1l
bnQuY3BwCkBAIC04OCwyNyArODgsMjYgQEAgYm9vbCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Ojpp
c1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBy
ZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRy
aWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9p
ZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0g
YXR0cmlidXRlLnZhbHVlKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6
Om9wZXJhdG9yQXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIp
IHsKICAgICAgICAgTW9ycGhvbG9neU9wZXJhdG9yVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJv
cGVydHlUcmFpdHM8TW9ycGhvbG9neU9wZXJhdG9yVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwog
ICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRfb3BlcmF0b3JC
YXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OmluQXR0cikgewogICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnJhZGl1c0F0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmFkaXVzQXR0
cikgewogICAgICAgICBmbG9hdCB4LCB5OwogICAgICAgICBpZiAocGFyc2VOdW1iZXJPcHRpb25h
bE51bWJlcih2YWx1ZSwgeCwgeSkpIHsKICAgICAgICAgICAgIHNldFJhZGl1c1hCYXNlVmFsdWUo
eCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAppbmRleCA3
NDQ5YWNiLi42OGFkMWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lF
bGVtZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBTVkdGRU1vcnBob2xvZ3lF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCB2b2lk
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggNjVmODFj
OC4uZGZhMTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAK
QEAgLTY2LDI1ICs2NiwyNCBAQCBib29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6aXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBv
cnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRy
YW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdGRU9mZnNldEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRy
aWJ1dGUubmFtZSgpKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0
dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUudmFsdWUoKTsK
LSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6ZHhBdHRyKSB7CisgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OmR4QXR0cikgewogICAgICAgICBzZXREeEJhc2VWYWx1ZSh2YWx1
ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmR5QXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVz
OjpkeUF0dHIpIHsKICAgICAgICAgc2V0RHlCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05h
bWVzOjppbkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CiAgICAg
ICAgIHNldEluMUJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmgKaW5kZXggZTFmZTE2Ni4uOGEyMTRmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBA
QCBwcml2YXRlOgogICAgIFNWR0ZFT2Zmc2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmls
dGVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcAppbmRleCBlNjI4MjIwLi45OWVjOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC05NCwzNSAr
OTQsMzQgQEAgYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojppc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHQKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0
cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRv
cj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRB
dHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0cmli
dXRlLnZhbHVlKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmluQXR0
cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKICAgICAgICAgc2V0SW4x
QmFzZVZhbHVlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyKSB7CisgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIpIHsKICAgICAgICAgc2V0U3VyZmFjZVNj
YWxlQmFzZVZhbHVlKHZhbHVlLnRvRmxvYXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0
dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIpIHsK
ICAgICAgICAgc2V0U3BlY3VsYXJDb25zdGFudEJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnNwZWN1bGFyRXhwb25lbnRBdHRyKSB7CiAgICAgICAgIHNldFNwZWN1bGFyRXhwb25lbnRCYXNl
VmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewor
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgewogICAgICAg
ICBmbG9hdCB4LCB5OwogICAgICAgICBpZiAocGFyc2VOdW1iZXJPcHRpb25hbE51bWJlcih2YWx1
ZSwgeCwgeSkpIHsKICAgICAgICAgICAgIHNldEtlcm5lbFVuaXRMZW5ndGhYQmFzZVZhbHVlKHgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LmgKaW5kZXggZmVkYjIxNC4uMWEwNDI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHByaXZhdGU6
CiAgICAgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKICAgICAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwCmluZGV4IGUyOTQ3NjYuLjEyYjJkMjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTYwLDE1ICs2MCwxNSBAQCBib29sIFNWR0ZFVGls
ZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5h
bWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZH
RkVUaWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUp
Cit2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAg
aWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05h
bWVzOjppbkF0dHIpIHsKLSAgICAgICAgc2V0SW4xQmFzZVZhbHVlKGF0dHJpYnV0ZS52YWx1ZSgp
KTsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgICAgIHNldEluMUJh
c2VWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCmluZGV4IDEwY2Q4ZGIuLmFhMDAxYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBwcml2YXRlOgogICAgIFNW
R0ZFVGlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKaW5kZXggNGZlMTZmNi4uNTEz
OWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmNw
cApAQCAtODgsMjkgKzg4LDI4IEBAIGJvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6aXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJu
IHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRl
SGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZH
RkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVk
QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7Ci0gICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBpZiAo
IWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJp
YnV0ZS52YWx1ZSgpOwotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp0eXBl
QXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgewogICAgICAgICBU
dXJidWxlbmNlVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8VHVyYnVsZW5j
ZVR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAw
KQogICAgICAgICAgICAgc2V0VHlwZUJhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpz
dGl0Y2hUaWxlc0F0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3RpdGNoVGlsZXNB
dHRyKSB7CiAgICAgICAgIFNWR1N0aXRjaE9wdGlvbnMgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR1N0aXRjaE9wdGlvbnM+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAg
aWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0U3RpdGNoVGlsZXNCYXNlVmFs
dWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIpIHsKKyAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6YmFzZUZyZXF1ZW5jeUF0dHIpIHsKICAgICAgICAgZmxvYXQgeCwg
eTsKICAgICAgICAgaWYgKHBhcnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpKSB7
CiAgICAgICAgICAgICBzZXRCYXNlRnJlcXVlbmN5WEJhc2VWYWx1ZSh4KTsKQEAgLTExOSwxMiAr
MTE4LDEyIEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6c2VlZEF0dHIpIHsKKyAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6c2VlZEF0dHIpIHsKICAgICAgICAgc2V0U2VlZEJhc2VWYWx1ZSh2YWx1
ZS50b0Zsb2F0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6Om51bU9jdGF2ZXNBdHRyKSB7CiAgICAgICAgIHNldE51bU9jdGF2ZXNCYXNlVmFs
dWUodmFsdWUuc3RyaW5nKCkudG9VSW50U3RyaWN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKaW5kZXggYWEx
YTlmYi4uNGE5ZTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKICAgICBTVkdGRVR1cmJ1bGVuY2VF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSk7CiAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAppbmRleCAz
ZTk4ZDA4Li44ZjVjM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3Bw
CkBAIC0xMjEsNDIgKzEyMSw0MSBAQCBib29sIFNWR0ZpbHRlckVsZW1lbnQ6OmlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBw
b3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hU
cmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0ZpbHRlckVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vy
cm9yOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUudmFsdWUoKTsK
IAotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpCi0gICAg
ICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAgZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyKSB7Cisg
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKKyAgICAgICAgU1ZHU3R5bGVkRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0cikgewogICAgICAgICBTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNW
R1VuaXRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVl
ID4gMCkKICAgICAgICAgICAgIHNldEZpbHRlclVuaXRzQmFzZVZhbHVlKHByb3BlcnR5VmFsdWUp
OwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cHJpbWl0aXZl
VW5pdHNBdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmltaXRpdmVV
bml0c0F0dHIpIHsKICAgICAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcm9wZXJ0eVZh
bHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21T
dHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAg
ICBzZXRQcmltaXRpdmVVbml0c0Jhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKLSAgICB9IGVsc2Ug
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgIH0gZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCiAgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3Ro
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwotICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQorICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQogICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0
aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQorICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKICAgICAgICAgc2V0V2lkdGhCYXNl
VmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdo
dEF0dHIpCisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKICAgICAg
ICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0cikgeworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OmZpbHRlclJlc0F0dHIpIHsKICAgICAgICAgZmxvYXQgeCwgeTsKICAgICAgICAgaWYgKHBh
cnNlTnVtYmVyT3B0aW9uYWxOdW1iZXIodmFsdWUsIHgsIHkpKSB7CiAgICAgICAgICAgICBzZXRG
aWx0ZXJSZXNYQmFzZVZhbHVlKHgpOwogICAgICAgICAgICAgc2V0RmlsdGVyUmVzWUJhc2VWYWx1
ZSh5KTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0
dHJpYnV0ZShhdHRyaWJ1dGUpCi0gICAgICAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0
dHJpYnV0ZShhdHRyaWJ1dGUpCi0gICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkgeworICAgIH0gZWxzZSBpZiAoU1ZH
VVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICB8
fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQorICAgICAgICAgICAg
IHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKSkgewogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAg
IHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBhdHRyaWJ1dGUpOworICAg
IHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiB9
CiAKIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCmlu
ZGV4IGI1NGRmNDAuLmQzYTVhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
aApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRp
bmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5v
ZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwCmluZGV4IGJhZWVhMjMuLjIxMGU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCkBAIC03NywyNyArNzcsMjYgQEAgYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE4KICAgICByZXR1
cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1
dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpCit2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7Ci0gICAg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwogCi0gICAgaWYg
KCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkKLSAgICAgICAgU1ZHU3R5
bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICBlbHNlIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp4QXR0cikKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKG5hbWUpKQorICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCiAgICAg
ICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnlBdHRyKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQogICAg
ICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBT
VkdOYW1lczo6d2lkdGhBdHRyKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRo
QXR0cikKICAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKICAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0
aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cmVzdWx0QXR0cikKKyAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyZXN1bHRBdHRyKQogICAgICAgICBzZXRSZXN1bHRC
YXNlVmFsdWUodmFsdWUpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRl
KTsKKyAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFs
dWUpOwogfQogCiBib29sIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IGI2MTlhNGEuLmU0M2Y4NTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5n
ZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKaW5kZXggNTE0NTIxMi4uNGRjNWEzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guaApAQCAtNDIsMjEgKzQyLDIxIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhZGRTdXBwb3J0ZWRBdHRyaWJ1dGVzKEhhc2hTZXQ8UXVh
bGlmaWVkTmFtZT4mKTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIFNWR0VsZW1lbnRUYXJnZXQ+Ci0g
ICAgc3RhdGljIGJvb2wgcGFyc2VBdHRyaWJ1dGUoU1ZHRWxlbWVudFRhcmdldCogdGFyZ2V0LCBj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKKyAgICBzdGF0aWMgYm9vbCBwYXJzZUF0dHJpYnV0
ZShTVkdFbGVtZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQodGFyZ2V0KTsK
ICAgICAgICAgQVNTRVJUKHRhcmdldC0+ZG9jdW1lbnQoKSk7Ci0gICAgICAgIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IFNWR05hbWVzOjp2aWV3Qm94QXR0cikgeworICAgICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6dmlld0JveEF0dHIpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aWV3Qm94
OwotICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAg
cGFyc2VWaWV3Qm94KHRhcmdldC0+ZG9jdW1lbnQoKSwgYXR0cmlidXRlLnZhbHVlKCksIHZpZXdC
b3gpOworICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBw
YXJzZVZpZXdCb3godGFyZ2V0LT5kb2N1bWVudCgpLCB2YWx1ZSwgdmlld0JveCk7CiAgICAgICAg
ICAgICB0YXJnZXQtPnNldFZpZXdCb3hCYXNlVmFsdWUodmlld0JveCk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09
IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgeworICAgICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKICAgICAgICAgICAgIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsKLSAgICAgICAgICAgIHByZXNl
cnZlQXNwZWN0UmF0aW8ucGFyc2UoYXR0cmlidXRlLnZhbHVlKCkpOworICAgICAgICAgICAgcHJl
c2VydmVBc3BlY3RSYXRpby5wYXJzZSh2YWx1ZSk7CiAgICAgICAgICAgICB0YXJnZXQtPnNldFBy
ZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUocHJlc2VydmVBc3BlY3RSYXRpbyk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZh
Y2VFbGVtZW50LmNwcAppbmRleCAyNDllYmNlLi43M2EwOGY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtMTA4LDE2ICsxMDgsMTYgQEAgc3RhdGljIENT
U1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck4KICAgICByZXR1cm4gcHJvcGVydHlOYW1lVG9JZE1hcC0+Z2V0KGF0dHJO
YW1lLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9CiAKLXZvaWQgU1ZHRm9udEZhY2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHRm9udEZh
Y2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogeyAgICAKLSAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9
IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZS5uYW1lKCkpOworICAg
IENTU1Byb3BlcnR5SUQgcHJvcElkID0gY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUo
bmFtZSk7CiAgICAgaWYgKHByb3BJZCA+IDApIHsKLSAgICAgICAgbV9mb250RmFjZVJ1bGUtPm11
dGFibGVQcm9wZXJ0aWVzKCktPnNldFByb3BlcnR5KHByb3BJZCwgYXR0cmlidXRlLnZhbHVlKCks
IGZhbHNlKTsKKyAgICAgICAgbV9mb250RmFjZVJ1bGUtPm11dGFibGVQcm9wZXJ0aWVzKCktPnNl
dFByb3BlcnR5KHByb3BJZCwgdmFsdWUsIGZhbHNlKTsKICAgICAgICAgcmVidWlsZEZvbnRGYWNl
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgU1ZHRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSk7CiB9CiAKIHVuc2lnbmVkIFNWR0ZvbnRGYWNlRWxlbWVudDo6dW5pdHNQZXJFbSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmgKaW5kZXggMWRkZGY3
Ni4uZmQ5M2RhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuaApAQCAt
NTQsNyArNTQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5n
ZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNo
YW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKICAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5jcHAKaW5kZXgg
M2IyZDQ5NS4uMWI1NTQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlVXJpRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJp
RWxlbWVudC5jcHAKQEAgLTYyLDEzICs2MiwxMiBAQCBQYXNzUmVmUHRyPENTU0ZvbnRGYWNlU3Jj
VmFsdWU+IFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6c3JjVmFsdWUoKSBjb25zdAogICAgIHJldHVy
biBzcmMucmVsZWFzZSgpOwogfQogCi12b2lkIFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0ZvbnRGYWNlVXJp
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSA9IGF0dHJpYnV0ZS5uYW1lKCk7Ci0gICAgaWYgKGF0dHJOYW1lID09IFhMaW5rTmFtZXM6Omhy
ZWZBdHRyKQorICAgIGlmIChuYW1lID09IFhMaW5rTmFtZXM6OmhyZWZBdHRyKQogICAgICAgICBs
b2FkRm9udCgpOwogICAgIGVsc2UKLSAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
YXR0cmlidXRlKTsKKyAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOwogfQogCiB2b2lkIFNWR0ZvbnRGYWNlVXJpRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJv
b2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdl
LCBpbnQgY2hpbGRDb3VudERlbHRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvbnRGYWNlVXJpRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJp
RWxlbWVudC5oCmluZGV4IDFjYzNkZDljLi4yYzdiNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgU1ZHRm9udEZhY2VVcmlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9k
ZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3Vu
dERlbHRhID0gMCk7CiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGQ0ZjJhODIuLjQxYTIyYWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApA
QCAtODUsMjggKzg1LDI3IEBAIGJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OmlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgcmV0dXJuIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFz
aFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBw
YXJzZUVycm9yID0gTm9FcnJvcjsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlID0gYXR0
cmlidXRlLnZhbHVlKCk7CiAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0
ZS5uYW1lKCkpKQotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNW
R05hbWVzOjp4QXR0cikKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQorICAg
ICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQogICAgICAgICBz
ZXRYQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVz
Ojp5QXR0cikKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKICAgICAgICAg
c2V0WUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OndpZHRoQXR0cikKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIp
CiAgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFt
ZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpCiAgICAgICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2Ug
aWYgKFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0gICAgICAgICAgICAgICB8
fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAgICAgICAgICAgICAg
IHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0
ZSkpIHsKKyAgICBlbHNlIGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUp
CisgICAgICAgICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKQorICAgICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFy
c2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKSB7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogCi0gICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJy
b3IsIGF0dHJpYnV0ZSk7CisgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJy
b3IsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKaW5kZXggNGEyNTE5NS4uZWE3
Y2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgK
QEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50
LmNwcAppbmRleCAzMGJiYTUzLi4xYmYxMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5j
cHAKQEAgLTYzLDE4ICs2MywxOCBAQCBib29sIFNWR0dFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVk
QXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNs
YXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR0dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHR0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkgewot
ICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0
cmlidXRlKTsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0
cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0
dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuaAppbmRleCAxZjRkZGRhLi5jYTY1ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Zv
Y3VzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJl
bmRlcmluZ0NvbnRleHQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlw
aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5jcHAKaW5k
ZXggOWYxMjdjOS4uNmRjMjg2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ds
eXBoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5j
cHAKQEAgLTUzLDEyICs1MywxMiBAQCB2b2lkIFNWR0dseXBoRWxlbWVudDo6aW52YWxpZGF0ZUds
eXBoQ2FjaGUoKQogICAgIH0KIH0KIAotdm9pZCBTVkdHbHlwaEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdHbHlwaEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmRBdHRy
KQorICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpkQXR0cikKICAgICAgICAgaW52YWxpZGF0ZUds
eXBoQ2FjaGUoKTsKICAgICBlbHNlCi0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBTVkdHbHlwaEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlKiByb290UGFyZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5oCmluZGV4IDE4YjIxMmMuLjU2Y2M4MzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJp
dmF0ZToKICAgICBTVkdHbHlwaEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAKICAgICAvLyBGSVhNRTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgotICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmlj
YXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAKaW5kZXggYWQ1ZWIxZC4uNzI4Mzc0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5jcHAKQEAgLTY0LDI0
ICs2NCwyNCBAQCBib29sIFNWR0dseXBoUmVmRWxlbWVudDo6aGFzVmFsaWRHbHlwaEVsZW1lbnQo
U3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1ZH
R2x5cGhSZWZFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0
ZSkKK3ZvaWQgU1ZHR2x5cGhSZWZFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGNvbnN0IFVD
aGFyKiBzdGFydFB0ciA9IGF0dHJpYnV0ZS52YWx1ZSgpLmNoYXJhY3RlcnMoKTsKLSAgICBjb25z
dCBVQ2hhciogZW5kUHRyID0gc3RhcnRQdHIgKyBhdHRyaWJ1dGUudmFsdWUoKS5sZW5ndGgoKTsK
KyAgICBjb25zdCBVQ2hhciogc3RhcnRQdHIgPSB2YWx1ZS5jaGFyYWN0ZXJzKCk7CisgICAgY29u
c3QgVUNoYXIqIGVuZFB0ciA9IHN0YXJ0UHRyICsgdmFsdWUubGVuZ3RoKCk7CiAKICAgICAvLyBG
SVhNRTogV2UgbmVlZCBzb21lIGVycm9yIGhhbmRsaW5nIGhlcmUuCi0gICAgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4
QXR0cikKICAgICAgICAgcGFyc2VOdW1iZXIoc3RhcnRQdHIsIGVuZFB0ciwgbV94KTsKLSAgICBl
bHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp5QXR0cikKKyAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKICAgICAgICAgcGFyc2VOdW1iZXIoc3RhcnRQdHIs
IGVuZFB0ciwgbV95KTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVz
OjpkeEF0dHIpCisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZHhBdHRyKQogICAgICAg
ICBwYXJzZU51bWJlcihzdGFydFB0ciwgZW5kUHRyLCBtX2R4KTsKLSAgICBlbHNlIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpkeUF0dHIpCisgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6ZHlBdHRyKQogICAgICAgICBwYXJzZU51bWJlcihzdGFydFB0ciwgZW5kUHRyLCBt
X2R5KTsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRy
aWJ1dGUoYXR0cmlidXRlKSkKKyAgICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBTVkdTdHls
ZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBTVkdTdHlsZWRF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmgKaW5kZXggNTI0YzBjNS4uNDg3YmI5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHR2x5cGhSZWZFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICBib29sIGhhc1ZhbGlkR2x5
cGhFbGVtZW50KFN0cmluZyYgZ2x5cGhOYW1lKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBPVkVSUklERTsKIAogICAgIC8vIERPTSBpbnRlcmZhY2UKICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGdseXBoUmVmKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwCmluZGV4IGIzZGZlM2QuLjAwNDQwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFkaWVudEVsZW1lbnQuY3BwCkBAIC03NSwzOCArNzUsMzggQEAgYm9vbCBTVkdHcmFkaWVudEVs
ZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUs
IFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHR3Jh
ZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkK
K3ZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0
cmlidXRlKG5hbWUpKSB7CisgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0cikgewotICAgICAgICBTVkdV
bml0VHlwZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyhhdHRyaWJ1dGUudmFsdWUoKSk7
CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyKSB7CisgICAgICAg
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0R3JhZGllbnRVbml0c0Jh
c2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpIHsK
KyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyKSB7CiAgICAg
ICAgIFNWR1RyYW5zZm9ybUxpc3QgbmV3TGlzdDsKLSAgICAgICAgbmV3TGlzdC5wYXJzZShhdHRy
aWJ1dGUudmFsdWUoKSk7CisgICAgICAgIG5ld0xpc3QucGFyc2UodmFsdWUpOwogICAgICAgICBk
ZXRhY2hBbmltYXRlZEdyYWRpZW50VHJhbnNmb3JtTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgp
KTsKICAgICAgICAgc2V0R3JhZGllbnRUcmFuc2Zvcm1CYXNlVmFsdWUobmV3TGlzdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1l
czo6c3ByZWFkTWV0aG9kQXR0cikgewotICAgICAgICBTVkdTcHJlYWRNZXRob2RUeXBlIHByb3Bl
cnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTcHJlYWRNZXRob2RUeXBlPjo6ZnJvbVN0
cmluZyhhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnNwcmVh
ZE1ldGhvZEF0dHIpIHsKKyAgICAgICAgU1ZHU3ByZWFkTWV0aG9kVHlwZSBwcm9wZXJ0eVZhbHVl
ID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHU3ByZWFkTWV0aG9kVHlwZT46OmZyb21TdHJpbmcodmFs
dWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRTcHJl
YWRNZXRob2RCYXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQor
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJz
ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5oCmluZGV4IGQxMWU3MTUuLjkxZGE2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHJvdGVjdGVkOgogICAgIFNWR0dyYWRpZW50
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKaW5kZXggZDg5N2IzMC4uMDA3MmU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHAKQEAgLTEwOCwzMiArMTA4LDMyIEBAIHZvaWQgU1ZHSW1hZ2VFbGVt
ZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JiBhdHRyCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShz
dHlsZSwgQ1NTUHJvcGVydHlIZWlnaHQsIGF0dHJpYnV0ZS52YWx1ZSgpKTsKIH0KIAotdm9pZCBT
VkdJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRl
KQordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vy
cm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCi0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyaWJ1dGUubmFtZSgpKSkKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3Ro
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJv
cikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQot
ICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKKyAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQorICAgICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0
aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKKyAgICAgICAgc2V0WUJhc2VWYWx1ZShT
VkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikp
OworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
KSB7CiAgICAgICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsK
LSAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpby5wYXJzZShhdHRyaWJ1dGUudmFsdWUoKSk7Cisg
ICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW8ucGFyc2UodmFsdWUpOwogICAgICAgICBzZXRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKHByZXNlcnZlQXNwZWN0UmF0aW8pOwotICAgIH0gZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBz
ZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0
dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAg
ICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAg
ICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgYXR0cmlidXRlLnZhbHVlKCksIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Ro
cykpOwotICAgIGVsc2UgaWYgKFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0g
ICAgICAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0g
ICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cmlidXRlKQotICAgICAgICAgICAgIHx8IFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRy
aWJ1dGUoYXR0cmlidXRlKSkgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lk
dGhBdHRyKQorICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMp
KTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQorICAgICAgICBz
ZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgIGVsc2UgaWYg
KFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICB8fCBT
VkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgIHx8
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KQorICAgICAgICAgICAgIHx8IFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwg
dmFsdWUpKSB7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0g
ICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIGF0dHJpYnV0ZSk7Cisg
ICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsK
IH0KIAogdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5k
ZXggOTdjN2E5OS4uY2Q5NjQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApA
QCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3Vz
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQq
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1Nw
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCmluZGV4IGI4YjEw
MTMuLmFiZDE1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCkBAIC01MCwxNCAr
NTAsMTQgQEAgdm9pZCBTVkdMYW5nU3BhY2U6OnNldFhtbHNwYWNlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgeG1sU3BhY2UpCiAgICAgbV9zcGFjZSA9IHhtbFNwYWNlOwogfQogCi1ib29sIFNWR0xhbmdT
cGFjZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCitib29sIFNW
R0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKS5tYXRj
aGVzKFhNTE5hbWVzOjpsYW5nQXR0cikpIHsKLSAgICAgICAgc2V0WG1sbGFuZyhhdHRyaWJ1dGUu
dmFsdWUoKSk7CisgICAgaWYgKG5hbWUubWF0Y2hlcyhYTUxOYW1lczo6bGFuZ0F0dHIpKSB7Cisg
ICAgICAgIHNldFhtbGxhbmcodmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0g
ICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkubWF0Y2hlcyhYTUxOYW1lczo6c3BhY2VBdHRyKSkgewot
ICAgICAgICBzZXRYbWxzcGFjZShhdHRyaWJ1dGUudmFsdWUoKSk7CisgICAgaWYgKG5hbWUubWF0
Y2hlcyhYTUxOYW1lczo6c3BhY2VBdHRyKSkgeworICAgICAgICBzZXRYbWxzcGFjZSh2YWx1ZSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xhbmdTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5o
CmluZGV4IDFkZGZhMTMuLmQ4YmFkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMYW5nU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmgKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sc3BhY2Uo
KSBjb25zdDsKICAgICB2b2lkIHNldFhtbHNwYWNlKGNvbnN0IEF0b21pY1N0cmluZyYgeG1sU3Bh
Y2UpOwogCi0gICAgYm9vbCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKTsKKyAgICBi
b29sIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKTsKICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgIHZvaWQgYWRkU3VwcG9ydGVkQXR0cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCmluZGV4IDFjNzc5NWIuLmQ3MmNk
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcApAQCAtODEsMjcgKzgxLDI3
IEBAIGJvb2wgU1ZHTGluZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRh
aW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7
CiB9CiAKLXZvaWQgU1ZHTGluZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0
ZSYgYXR0cmlidXRlKQordm9pZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBT
VkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAgICBpZiAoIWlzU3VwcG9y
dGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKQotICAgICAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICBlbHNlIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIHNldFgxQmFzZVZh
bHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgYXR0cmlidXRlLnZhbHVl
KCksIHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05h
bWVzOjp5MUF0dHIpCi0gICAgICAgIHNldFkxQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICBz
ZXRYMkJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0dHJp
YnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGg6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJv
cikpOwotICAgIGVsc2UgaWYgKFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0g
ICAgICAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0g
ICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cmlidXRlKSkgeworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpCisg
ICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKQorICAgICAg
ICBzZXRYMUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTFBdHRy
KQorICAgICAgICBzZXRZMUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OngyQXR0cikKKyAgICAgICAgc2V0WDJCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OnkyQXR0cikKKyAgICAgICAgc2V0WTJCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNl
IGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAg
fHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAg
ICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2
YWx1ZSkpIHsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAg
ICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRlKTsKKyAg
ICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwog
fQogCiB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAppbmRleCBj
YTFjNDQ2Li40ZWUxYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaApAQCAtNDUs
NyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAK
aW5kZXggMTk3OTNjYy4uOTg4MTY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTgzLDI0ICs4MywyNCBAQCBib29sIFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxp
ZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZv
aWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
KQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAotICAgIGlm
ICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpCi0gICAgICAgIFNWR0dy
YWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICBlbHNlIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIHNldFgxQmFzZVZh
bHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgYXR0cmlidXRlLnZhbHVl
KCksIHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05h
bWVzOjp5MUF0dHIpCi0gICAgICAgIHNldFkxQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICBz
ZXRYMkJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0dHJp
YnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUo
KSA9PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICBzZXRZMkJhc2VWYWx1ZShTVkdMZW5ndGg6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJv
cikpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpCisgICAgICAgIFNWR0dy
YWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikKKyAgICAgICAgc2V0WDFCYXNlVmFsdWUoU1ZHTGVu
Z3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKKyAgICAgICAgc2V0WTFCYXNlVmFs
dWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4MkF0dHIpCisgICAgICAgIHNl
dFgyQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5MkF0dHIpCisg
ICAgICAgIHNldFkyQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIAotICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBh
dHRyaWJ1dGUpOworICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBu
YW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCmluZGV4IDk0MTAwMzguLmFmYmJm
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHJpdmF0ZToKICAgICBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICBib29sIGlzU3VwcG9ydGVk
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01QYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVt
ZW50LmNwcAppbmRleCA5YWVhZWUzLi5lMjc4ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBh
dGhFbGVtZW50LmNwcApAQCAtMTEyLDE2ICsxMTIsMTYgQEAgYm9vbCBTVkdNUGF0aEVsZW1lbnQ6
OmlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAg
IHJldHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0
dHJpYnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHTVBhdGhFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZH
TVBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cmlidXRlKTsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7Cisg
ICAgICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRl
KGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBh
dGhFbGVtZW50LmgKaW5kZXggOTMyM2I5Mi4uM2ViZDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
UGF0aEVsZW1lbnQuaApAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3Zl
ZEZyb20oQ29udGFpbmVyTm9kZSopOwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IE9WRVJSSURFOwogCiAgICAgdm9pZCBub3RpZnlQYXJlbnRPZlBhdGhDaGFuZ2UoQ29udGFpbmVy
Tm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IGZkZTAz
YTIuLjM0N2UzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAg
LTEyNiwzOSArMTI2LDM4IEBAIGJvb2wgU1ZHTWFya2VyRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5z
bGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHTWFya2VyRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwogCi0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkKLSAgICAgICAg
U1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICBlbHNlIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjptYXJrZXJVbml0c0F0dHIpIHsKKyAgICBp
ZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQorICAgICAgICBTVkdTdHlsZWRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6bWFya2VyVW5pdHNBdHRyKSB7CiAgICAgICAgIFNWR01hcmtlclVuaXRzVHlwZSBwcm9w
ZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyVW5pdHNUeXBlPjo6ZnJvbVN0
cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAg
IHNldE1hcmtlclVuaXRzQmFzZVZhbHVlKHByb3BlcnR5VmFsdWUpOwotICAgIH0gZWxzZSBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cmVmWEF0dHIpCisgICAgfSBlbHNlIGlmIChu
YW1lID09IFNWR05hbWVzOjpyZWZYQXR0cikKICAgICAgICAgc2V0UmVmWEJhc2VWYWx1ZShTVkdM
ZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7Ci0g
ICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cmVmWUF0dHIpCisgICAg
ZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVmWUF0dHIpCiAgICAgICAgIHNldFJlZllCYXNl
VmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjptYXJr
ZXJXaWR0aEF0dHIpCisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFya2VyV2lkdGhB
dHRyKQogICAgICAgICBzZXRNYXJrZXJXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0cikKKyAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyKQogICAgICAgICBzZXRNYXJrZXJI
ZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05h
bWVzOjpvcmllbnRBdHRyKSB7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6b3JpZW50
QXR0cikgewogICAgICAgICBTVkdBbmdsZSBhbmdsZTsKICAgICAgICAgU1ZHTWFya2VyT3JpZW50
VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2VyT3JpZW50VHlwZT46
OmZyb21TdHJpbmcodmFsdWUsIGFuZ2xlKTsKICAgICAgICAgaWYgKG9yaWVudFR5cGUgPiAwKQog
ICAgICAgICAgICAgc2V0T3JpZW50VHlwZUJhc2VWYWx1ZShvcmllbnRUeXBlKTsKICAgICAgICAg
aWYgKG9yaWVudFR5cGUgPT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCiAgICAgICAgICAgICBzZXRP
cmllbnRBbmdsZUJhc2VWYWx1ZShhbmdsZSk7Ci0gICAgfSBlbHNlIGlmIChTVkdMYW5nU3BhY2U6
OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAgICAgICAgICAgICB8fCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0gICAgICAgICAgICAg
fHwgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZUF0dHJpYnV0ZSh0aGlzLCBhdHRyaWJ1dGUpKSB7Cisg
ICAgfSBlbHNlIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQor
ICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgIHx8IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VB
dHRyaWJ1dGUodGhpcywgbmFtZSwgdmFsdWUpKSB7CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNl
RXJyb3IsIGF0dHJpYnV0ZSk7CisgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNl
RXJyb3IsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggNGFjOTBmZi4uODczYzQ4MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBO
b2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENv
dW50RGVsdGEgPSAwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKaW5kZXgg
YTcxNDIyNi4uZmM2YThiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCkBA
IC05NCwzNyArOTQsMzcgQEAgYm9vbCBTVkdNYXNrRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0
dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0
b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAotICAg
IGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpCi0gICAgICAgIFNW
R1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAgZWxzZSBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6bWFza1VuaXRzQXR0cikgewotICAgICAgICBT
VkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyhhdHRyaWJ1dGUudmFsdWUo
KSk7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKKyAgICAgICAgU1ZHU3R5
bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIpIHsKKyAgICAgICAgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVW5pdFR5cGVz
OjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlW
YWx1ZSA+IDApCiAgICAgICAgICAgICBzZXRNYXNrVW5pdHNCYXNlVmFsdWUocHJvcGVydHlWYWx1
ZSk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
U1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyKSB7Ci0gICAgICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAgICB9IGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyKSB7CisgICAgICAg
IFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJh
aXRzPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAg
ICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0TWFza0NvbnRlbnRVbml0
c0Jhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHNldFhCYXNl
VmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyaWJ1dGUudmFs
dWUoKSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnlBdHRyKQotICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAg
ICBzZXRXaWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgs
IGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRl
Lm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgc2V0SGVpZ2h0QmFzZVZh
bHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIGF0dHJpYnV0ZS52YWx1
ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRl
KGF0dHJpYnV0ZSkKLSAgICAgICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRl
KGF0dHJpYnV0ZSkKLSAgICAgICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjp4QXR0cikKKyAgICAgICAgc2V0WEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVj
dChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eUF0dHIpCisgICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCisgICAgICAgIHNldFdpZHRoQmFzZVZh
bHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQorICAgICAg
ICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChTVkdUZXN0czo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpIHsKICAgICB9IGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5n
RXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRlKTsKKyAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5n
RXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR01hc2tFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAppbmRleCAzMjZiZWVmLi5mMmJiOTAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5v
ZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291
bnREZWx0YSA9IDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBj
NTY2OTJiLi4yMjc0MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAg
LTIxOCwzMSArMjE4LDMxIEBAIGJvb2wgU1ZHUGF0aEVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRB
dHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xh
dG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdQYXRoRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkp
KSB7Ci0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAg
ICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFt
ZSgpID09IFNWR05hbWVzOjpkQXR0cikgewotICAgICAgICBpZiAoIWJ1aWxkU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU3RyaW5nKGF0dHJpYnV0ZS52YWx1ZSgpLCBtX3BhdGhCeXRlU3RyZWFtLmdldCgp
LCBVbmFsdGVyZWRQYXJzaW5nKSkKLSAgICAgICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4
dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3IoIlByb2JsZW0gcGFyc2luZyBkPVwiIiArIGF0dHJpYnV0
ZS52YWx1ZSgpICsgIlwiIik7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRyKSB7Cisg
ICAgICAgIGlmICghYnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcodmFsdWUsIG1fcGF0
aEJ5dGVTdHJlYW0uZ2V0KCksIFVuYWx0ZXJlZFBhcnNpbmcpKQorICAgICAgICAgICAgZG9jdW1l
bnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5yZXBvcnRFcnJvcigiUHJvYmxlbSBwYXJzaW5n
IGQ9XCIiICsgdmFsdWUgKyAiXCIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0cikgewotICAgICAg
ICBzZXRQYXRoTGVuZ3RoQmFzZVZhbHVlKGF0dHJpYnV0ZS52YWx1ZSgpLnRvRmxvYXQoKSk7Cisg
ICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyKSB7CisgICAgICAgIHNldFBh
dGhMZW5ndGhCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgaWYgKHBhdGhMZW5n
dGhCYXNlVmFsdWUoKSA8IDApCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRl
bnNpb25zKCktPnJlcG9ydEVycm9yKCJBIG5lZ2F0aXZlIHZhbHVlIGZvciBwYXRoIGF0dHJpYnV0
ZSA8cGF0aExlbmd0aD4gaXMgbm90IGFsbG93ZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkKKyAgICBpZiAo
U1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYg
KFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1
cm47Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRl
KGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNl
QXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCmluZGV4IGYxNDA1OWEu
LjEzYjUxMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCkBAIC0xMDgsNyArMTA4
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCBjNjllY2Q0Li4yZDll
NGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTExMCw0
NSArMTEwLDQ1IEBAIGJvb2wgU1ZHUGF0dGVybkVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9y
PihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAK
LSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKQotICAgICAg
ICBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgIGVsc2Ug
aWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIpIHsKLSAg
ICAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZT46OmZyb21TdHJpbmcoYXR0cmlidXRl
LnZhbHVlKCkpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpCisgICAgICAg
IFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKKyAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyKSB7CisgICAgICAgIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYg
KHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0UGF0dGVyblVuaXRzQmFzZVZhbHVl
KHByb3BlcnR5VmFsdWUpOwogICAgICAgICByZXR1cm47Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1
dGUubmFtZSgpID09IFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0cikgewotICAgICAg
ICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRy
YWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0cmluZyhhdHRyaWJ1dGUudmFs
dWUoKSk7CisgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVu
aXRzQXR0cikgeworICAgICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHByb3BlcnR5VmFs
dWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPjo6ZnJvbVN0
cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAg
IHNldFBhdHRlcm5Db250ZW50VW5pdHNCYXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAg
IHJldHVybjsKLSAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBh
dHRlcm5UcmFuc2Zvcm1BdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpw
YXR0ZXJuVHJhbnNmb3JtQXR0cikgewogICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0IG5ld0xpc3Q7
Ci0gICAgICAgIG5ld0xpc3QucGFyc2UoYXR0cmlidXRlLnZhbHVlKCkpOworICAgICAgICBuZXdM
aXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRQYXR0ZXJuVHJhbnNmb3Jt
TGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0UGF0dGVyblRyYW5zZm9y
bUJhc2VWYWx1ZShuZXdMaXN0KTsKICAgICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSBpZiAoYXR0
cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHNldFhCYXNlVmFsdWUo
U1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyaWJ1dGUudmFsdWUoKSwg
cGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6
OnlBdHRyKQotICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBzZXRX
aWR0aEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0dHJp
YnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAgICBl
bHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAg
ICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgYXR0cmlidXRlLnZhbHVlKCksIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocykp
OwotICAgIGVsc2UgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRl
KQotICAgICAgICAgICAgIHx8IFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0g
ICAgICAgICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0g
ICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VBdHRyaWJ1
dGUoYXR0cmlidXRlKQotICAgICAgICAgICAgIHx8IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VBdHRy
aWJ1dGUodGhpcywgYXR0cmlidXRlKSkgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6eEF0dHIpCisgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnlBdHRyKQorICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQorICAgICAgICBzZXRXaWR0aEJhc2VWYWx1ZShT
VkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBG
b3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpo
ZWlnaHRBdHRyKQorICAgICAgICBzZXRIZWlnaHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVu
Z3RocykpOworICAgIGVsc2UgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKQorICAgICAgICAgICAgIHx8IFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUobmFt
ZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZHRml0VG9WaWV3
Qm94OjpwYXJzZUF0dHJpYnV0ZSh0aGlzLCBuYW1lLCB2YWx1ZSkpIHsKICAgICB9IGVsc2UKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5n
RXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRlKTsKKyAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5n
RXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR1BhdHRlcm5FbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAppbmRleCBmY2Q2YjM2Li5iZDk2ZjA3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGlu
ZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBh
cnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9
IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5jcHAKaW5kZXggM2FlNWZlNS4uOGU2YzgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9s
eUVsZW1lbnQuY3BwCkBAIC03OCwxNSArNzgsMTQgQEAgYm9vbCBTVkdQb2x5RWxlbWVudDo6aXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0
dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmli
dXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdQb2x5RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR1BvbHlF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0
cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShuYW1lKSkgeworICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOwotICAgIGlmIChhdHRy
aWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnBvaW50c0F0dHIpIHsKICAgICAgICAgU1ZHUG9pbnRMaXN0IG5ld0xpc3Q7CiAg
ICAgICAgIGlmICghcG9pbnRzTGlzdEZyb21TVkdEYXRhKG5ld0xpc3QsIHZhbHVlKSkKICAgICAg
ICAgICAgIGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3IoIlBy
b2JsZW0gcGFyc2luZyBwb2ludHM9XCIiICsgdmFsdWUgKyAiXCIiKTsKQEAgLTk4LDExICs5Nywx
MSBAQCB2b2lkIFNWR1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChTVkdUZXN0czo6
cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkKKyAgICBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdMYW5nU3BhY2U6
OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5oCmluZGV4IDk0ZjFjMTEuLjJiZWQ4NGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBi
b29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7IAorICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgT1ZFUlJJREU7IAogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c01hcmtlcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDY4MmViODguLjgzOWFmMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBA
IC05MSwyOCArOTEsMjggQEAgYm9vbCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OmlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW0KICAgICByZXR1cm4gc3Vw
cG9ydGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNo
VHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBTVkdQYXJzaW5nRXJyb3Ig
cGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0
dHJpYnV0ZS5uYW1lKCkpKQotICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGF0dHJpYnV0ZSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1l
czo6Y3hBdHRyKQotICAgICAgICBzZXRDeEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6Y3lBdHRyKQotICAgICAgICBzZXRD
eUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCBhdHRyaWJ1
dGUudmFsdWUoKSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnJBdHRyKQotICAgICAgICBzZXRSQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29u
c3RydWN0KExlbmd0aE1vZGVPdGhlciwgYXR0cmlidXRlLnZhbHVlKCksIHBhcnNlRXJyb3IsIEZv
cmJpZE5lZ2F0aXZlTGVuZ3RocykpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
U1ZHTmFtZXM6OmZ4QXR0cikKLSAgICAgICAgc2V0RnhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJvcikpOwot
ICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmZ5QXR0cikKLSAgICAg
ICAgc2V0RnlCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
YXR0cmlidXRlLnZhbHVlKCksIHBhcnNlRXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUu
bmFtZSgpID09IFNWR05hbWVzOjpmckF0dHIpCi0gICAgICAgIHNldEZyQmFzZVZhbHVlKFNWR0xl
bmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgYXR0cmlidXRlLnZhbHVlKCksIHBhcnNl
RXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUobmFtZSkpCisgICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
bmFtZSwgdmFsdWUpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKKyAg
ICAgICAgc2V0Q3hCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN5
QXR0cikKKyAgICAgICAgc2V0Q3lCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpyQXR0cikKKyAgICAgICAgc2V0UkJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVj
dChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmeEF0dHIpCisgICAgICAgIHNl
dEZ4QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmeUF0dHIpCisg
ICAgICAgIHNldEZ5QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
ZnJBdHRyKQorICAgICAgICBzZXRGckJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5n
dGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsK
ICAgICBlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgcmVwb3J0QXR0
cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIGF0dHJpYnV0ZSk7CisgICAgcmVwb3J0QXR0
cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmgKaW5kZXggYzQ5YjA0Mi4uZmY4MGQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaApAQCAtMzksNyArMzksNyBAQCBwcml2YXRl
OgogICAgIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAppbmRleCAzMjMyZmFkLi4zNTY0
NDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKQEAgLTkxLDMxICs5MSwz
MSBAQCBib29sIFNWR1JlY3RFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250
YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUp
OwogfQogCi12b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAg
U1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCi0gICAgaWYgKCFpc1N1cHBv
cnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkKLSAgICAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAgZWxzZSBpZiAo
YXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHNldFhCYXNlVmFs
dWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyaWJ1dGUudmFsdWUo
KSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxz
ZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6cnhBdHRyKQotICAgICAgICBzZXRS
eEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0dHJpYnV0
ZS52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAgICBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIHNldFJ5
QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIGF0dHJpYnV0
ZS52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAgICBlbHNl
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIHNl
dFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgYXR0
cmlidXRlLnZhbHVlKCksIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwotICAg
IGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAg
ICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVp
Z2h0LCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KSk7Ci0gICAgZWxzZSBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAg
ICAgICAgICAgICB8fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAg
ICAgICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0
ZShhdHRyaWJ1dGUpKSB7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKKyAg
ICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUs
IHZhbHVlKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAg
c2V0WEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCisg
ICAgICAgIHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpy
eEF0dHIpCisgICAgICAgIHNldFJ4QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwor
ICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKKyAgICAgICAgc2V0UnlCYXNl
VmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRp
dmVMZW5ndGhzKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikK
KyAgICAgICAgc2V0SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1v
ZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAg
ICBlbHNlIGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAg
ICAgICAgfHwgU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAg
ICAgICAgICB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSkpIHsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAKLSAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRl
KTsKKyAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFs
dWUpOwogfQogCiB2b2lkIFNWR1JlY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaApp
bmRleCAwMzNiOGZlLi4wZjY2YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaApA
QCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3Vz
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogCiAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5YWNhOTA2Li40YWRmMzE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9p
ZCBTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKCkKICAgICAgICAgZG9jdW1l
bnQoKS0+cmVuZGVyZXIoKS0+cmVwYWludCgpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdTVkdFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIApAQCAtMjQxLDE0ICsyNDEsMTQgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKICAgICAgICAgYm9vbCBzZXRMaXN0
ZW5lciA9IHRydWU7CiAKICAgICAgICAgLy8gT25seSBoYW5kbGUgZXZlbnRzIGlmIHdlJ3JlIHRo
ZSBvdXRlcm1vc3QgPHN2Zz4gZWxlbWVudAotICAgICAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBIVE1MTmFtZXM6Om9udW5sb2FkQXR0cikKLSAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHJpYnV0ZSkp
OwotICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IEhUTUxOYW1lczo6b25yZXNp
emVBdHRyKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgICAgIGVsc2UgaWYg
KGF0dHJpYnV0ZS5uYW1lKCkgPT0gSFRNTE5hbWVzOjpvbnNjcm9sbEF0dHIpCi0gICAgICAgICAg
ICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5zY3JvbGxFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5m
cmFtZSgpLCBhdHRyaWJ1dGUpKTsKLSAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9
PSBTVkdOYW1lczo6b256b29tQXR0cikKLSAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnpvb21FdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUpKTsKKyAg
ICAgICAgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpvbnVubG9hZEF0dHIpCisgICAgICAgICAgICBk
b2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS51
bmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFt
ZSgpLCBuYW1lLCB2YWx1ZSkpOworICAgICAgICBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1lczo6
b25yZXNpemVBdHRyKQorICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUpKTsKKyAgICAgICAg
ZWxzZSBpZiAobmFtZSA9PSBIVE1MTmFtZXM6Om9uc2Nyb2xsQXR0cikKKyAgICAgICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNj
cm9sbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1l
KCksIG5hbWUsIHZhbHVlKSk7CisgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om9u
em9vbUF0dHIpCisgICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS56b29tRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2V0TGlzdGVuZXIgPSBmYWxzZTsKICAKQEAgLTI1NiwyNyArMjU2LDI3IEBA
IHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5u
YW1lKCkgPT0gSFRNTE5hbWVzOjpvbmFib3J0QXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyaWJ1dGUp
KTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IEhUTUxOYW1lczo6b25lcnJvckF0
dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9j
dW1lbnQoKS0+ZnJhbWUoKSwgYXR0cmlidXRlKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3Ro
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJv
cikpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyKQot
ICAgICAgICBzZXRZQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmli
dXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBzZXRXaWR0aEJhc2VW
YWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIGF0dHJpYnV0ZS52YWx1
ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAgICBlbHNlIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBzZXRIZWln
aHRCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgYXR0cmli
dXRlLnZhbHVlKCksIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwotICAgIGVs
c2UgaWYgKFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpCi0gICAgICAgICAgICAg
ICB8fCBTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkKLSAgICAgICAgICAg
ICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJp
YnV0ZSkKLSAgICAgICAgICAgICAgIHx8IFNWR0ZpdFRvVmlld0JveDo6cGFyc2VBdHRyaWJ1dGUo
dGhpcywgYXR0cmlidXRlKQotICAgICAgICAgICAgICAgfHwgU1ZHWm9vbUFuZFBhbjo6cGFyc2VB
dHRyaWJ1dGUodGhpcywgYXR0cmlidXRlKSkgeworICAgIGlmIChuYW1lID09IEhUTUxOYW1lczo6
b25hYm9ydEF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUpKTsKKyAgICBlbHNlIGlmIChu
YW1lID09IEhUTUxOYW1lczo6b25lcnJvckF0dHIpCisgICAgICAgIGRvY3VtZW50KCktPnNldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgbmFtZSwgdmFsdWUp
KTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgc2V0WEJh
c2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCisgICAgICAg
IHNldFlCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0
dHIpCisgICAgICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwor
ICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisgICAgICAgIHNldEhl
aWdodEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgZWxzZSBpZiAoU1ZH
VGVzdHM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgICAgfHwgU1ZH
TGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICAgIHx8
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVl
KQorICAgICAgICAgICAgICAgfHwgU1ZHRml0VG9WaWV3Qm94OjpwYXJzZUF0dHJpYnV0ZSh0aGlz
LCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICAgIHx8IFNWR1pvb21BbmRQYW46OnBhcnNlQXR0
cmlidXRlKHRoaXMsIG5hbWUsIHZhbHVlKSkgewogICAgIH0gZWxzZQotICAgICAgICBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgICAgICBT
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAK
LSAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRlKTsK
KyAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUp
OwogfQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCBj
ZWU0N2E0Li4xOGQ2MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTE0NCw3
ICsxNDQsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlzU1ZHKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogCiAg
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpIHsgcmV0dXJuIFN0eWxlZEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29u
dGV4dCk7IH0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQu
Y3BwCmluZGV4IGRlMmE1OGMuLjk1YjMyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0
RWxlbWVudC5jcHAKQEAgLTcwLDI2ICs3MCwyNiBAQCBib29sIFNWR1NjcmlwdEVsZW1lbnQ6Omlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJl
dHVybiBzdXBwb3J0ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJp
YnV0ZUhhc2hUcmFuc2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHU2NyaXB0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR1Nj
cmlwdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0
ZShhdHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICBTVkdFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAg
ICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnR5
cGVBdHRyKSB7Ci0gICAgICAgIHNldFR5cGUoYXR0cmlidXRlLnZhbHVlKCkpOworICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjp0eXBlQXR0cikgeworICAgICAgICBzZXRUeXBlKHZhbHVlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IEhUTUxO
YW1lczo6b25lcnJvckF0dHIpIHsKLSAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuZXJyb3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyaWJ1dGUpKTsKKyAgICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6Om9uZXJyb3JBdHRyKSB7
CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVycm9yRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgbmFtZSwgdmFsdWUpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0
cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1
dGUobmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKFNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NjcmlwdEVsZW1lbnQuaAppbmRleCAwNTUwNmVjLi40NDYxMmJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBT
VkdTY3JpcHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIGJvb2wgd2Fz
SW5zZXJ0ZWRCeVBhcnNlciwgYm9vbCBhbHJlYWR5U3RhcnRlZCk7CiAKICAgICBib29sIGlzU3Vw
cG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3Qg
aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9y
ZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9
IDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAppbmRleCA1YjBlNjlkLi5h
ZjRmNjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKQEAgLTYyLDE3ICs2
MiwxNiBAQCBib29sIFNWR1N0b3BFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5j
b250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5h
bWUpOwogfQogCi12b2lkIFNWR1N0b3BFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0g
ICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAg
ICBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICgh
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAg
ICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHJpYnV0ZS52YWx1ZSgpOworICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7CiAgICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgn
JScpKQotICAgICAgICAgICAgc2V0T2Zmc2V0QmFzZVZhbHVlKHZhbHVlLmxlZnQodmFsdWUubGVu
Z3RoKCkgLSAxKS50b0Zsb2F0KCkgLyAxMDAuMGYpOworICAgICAgICAgICAgc2V0T2Zmc2V0QmFz
ZVZhbHVlKHZhbHVlLnN0cmluZygpLmxlZnQodmFsdWUubGVuZ3RoKCkgLSAxKS50b0Zsb2F0KCkg
LyAxMDAuMGYpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZXRPZmZzZXRCYXNlVmFsdWUo
dmFsdWUudG9GbG9hdCgpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVs
ZW1lbnQuaAppbmRleCAyNWI5ZTNkLi44ZjNmZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVs
ZW1lbnQuaApAQCAtMzcsNyArMzcsNyBAQCBwcml2YXRlOgogICAgIFNWR1N0b3BFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogCiAgICAgdmlydHVhbCBib29sIGlzR3JhZGllbnRTdG9wKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAppbmRleCA4
NDg4MWUzLi5kMDA5YWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcApA
QCAtMTEwLDIwICsxMTAsMjAgQEAgYm9vbCBTVkdTdHlsZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0
ZWRBdHRyaWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFu
c2xhdG9yPihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHU3R5bGVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5h
bWUoKSkpIHsKLSAgICAgICAgU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsK
KyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICAgIFNWR0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp0aXRsZUF0dHIpIHsKKyAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6dGl0bGVBdHRyKSB7CiAgICAgICAgIGlmIChtX3NoZWV0
KQotICAgICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUoYXR0cmlidXRlLnZhbHVlKCkpOworICAg
ICAgICAgICAgbV9zaGVldC0+c2V0VGl0bGUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkKKyAg
ICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
eWxlRWxlbWVudC5oCmluZGV4IDY2ODgzNjUuLjgxNzFmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3R5bGVFbGVtZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKICAgICBTVkdTdHlsZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50KiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2Vy
ID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwg
aW50IGNoaWxkQ291bnREZWx0YSA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuY3BwCmluZGV4IDJkMTAyNDQuLjQ3ZjAzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5jcHAKQEAgLTI5OCwxOSArMjk4LDE5IEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYg
YXR0CiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShzdHls
ZSwgcHJvcGVydHlJRCwgYXR0cmlidXRlLnZhbHVlKCkpOwogfQogCi12b2lkIFNWR1N0eWxlZEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBT
VkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIFNWRyBhbmltYXRpb24gaGFz
IGN1cnJlbnRseSByZXF1aXJlcyBzcGVjaWFsIHN0b3JhZ2Ugb2YgdmFsdWVzIHNvIHdlIHNldAog
ICAgIC8vIHRoZSBjbGFzc05hbWUgaGVyZS4gIHN2Z0F0dHJpYnV0ZUNoYW5nZWQgYWN0dWFsbHkg
Y2F1c2VzIHRoZSByZXN1bHRpbmcKICAgICAvLyBzdHlsZSB1cGRhdGVzIChpbnN0ZWFkIG9mIFN0
eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKS4gV2UgZG9uJ3QKICAgICAvLyB0ZWxsIFN0eWxl
ZEVsZW1lbnQgYWJvdXQgdGhlIGNoYW5nZSB0byBhdm9pZCBwYXJzaW5nIHRoZSBjbGFzcyBsaXN0
IHR3aWNlCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gSFRNTE5hbWVzOjpjbGFzc0F0dHIp
IHsKLSAgICAgICAgc2V0Q2xhc3NOYW1lQmFzZVZhbHVlKGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAg
ICBpZiAobmFtZSA9PSBIVE1MTmFtZXM6OmNsYXNzQXR0cikgeworICAgICAgICBzZXRDbGFzc05h
bWVCYXNlVmFsdWUodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gaWQg
aXMgaGFuZGxlZCBieSBTdHlsZWRFbGVtZW50IHdoaWNoIFNWR0VsZW1lbnQgaW5oZXJpdHMgZnJv
bQotICAgIFNWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgU1ZHRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCiBib29sIFNWR1N0eWxlZEVs
ZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAppbmRleCA5YWUzYzA4Li5mMWU5MTgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHJv
dGVjdGVkOgogICAgIFNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZVNWR0VsZW1lbnQpOwogICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0Jik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJiwgU3R5bGVQcm9wZXJ0eVNldCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBPVkVSUklERTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQu
Y3BwCmluZGV4IGQ0YjhjNWMuLmQ4ZWE2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmNwcApAQCAtOTgsMTYgKzk4LDE2IEBA
IGJvb2wgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0CiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMu
Y29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJO
YW1lKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoYXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmli
dXRlKG5hbWUpKSB7CisgICAgICAgIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChh
dHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7CisgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlz
dCBuZXdMaXN0OwotICAgICAgICBuZXdMaXN0LnBhcnNlKGF0dHJpYnV0ZS52YWx1ZSgpKTsKKyAg
ICAgICAgbmV3TGlzdC5wYXJzZSh2YWx1ZSk7CiAgICAgICAgIGRldGFjaEFuaW1hdGVkVHJhbnNm
b3JtTGlzdFdyYXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0VHJhbnNmb3JtQmFz
ZVZhbHVlKG5ld0xpc3QpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oCmluZGV4IDg5MTM3NGUuLmYwYmMy
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudC5oCkBAIC01NSw3ICs1NSw3IEBAIHByb3RlY3RlZDoKICAgICBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBDb25zdHJ1
Y3Rpb25UeXBlID0gQ3JlYXRlU1ZHRWxlbWVudCk7CiAKICAgICBib29sIGlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU3ltYm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVu
dC5jcHAKaW5kZXggZDNhMWYzYS4uZjI5MzFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1i
b2xFbGVtZW50LmNwcApAQCAtNjUsMTggKzY1LDE4IEBAIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
cmV0dXJuIHN1cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0
cmlidXRlSGFzaFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdTeW1ib2xFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZH
U3ltYm9sRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmli
dXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7Ci0gICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1l
KSkgeworICAgICAgICBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoU1ZHTGFuZ1NwYWNlOjpwYXJz
ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdMYW5nU3BhY2U6OnBhcnNlQXR0cmli
dXRlKG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBpZiAoU1ZHRml0VG9WaWV3Qm94OjpwYXJzZUF0dHJpYnV0ZSh0
aGlzLCBhdHRyaWJ1dGUpKQorICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlQXR0cmlidXRl
KHRoaXMsIG5hbWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuaAppbmRleCAxZWJjZjg2
Li4wMTNhZTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5k
ZXJTdHlsZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCBmNzRl
MDExLi5lZDQ4YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTIy
MiwxNiArMjIyLDE1IEBAIGJvb2wgU1ZHVFJlZkVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIHJldHVybiBzdXBwb3J0ZWRBdHRy
aWJ1dGVzLmNvbnRhaW5zPFF1YWxpZmllZE5hbWUsIFNWR0F0dHJpYnV0ZUhhc2hUcmFuc2xhdG9y
PihhdHRyTmFtZSk7CiB9CiAKLXZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdUUmVmRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkKIHsKLSAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lKCkpKSB7
Ci0gICAgICAgIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJp
YnV0ZSk7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkgeworICAgICAgICBT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0
dHJpYnV0ZShhdHRyaWJ1dGUpKSB7CisgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VBdHRy
aWJ1dGUobmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJl
ZkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCmluZGV4IGI4
MGNiYTIuLmI0M2IzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5oCkBAIC00Myw3
ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CiAKICAg
ICBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXN0cy5jcHAKaW5kZXggZjI5YzQwZC4uZDlmN2U5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMu
Y3BwCkBAIC0xMjMsMTggKzEyMywxOCBAQCBib29sIFNWR1Rlc3RzOjppc1ZhbGlkKCkgY29uc3QK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCitib29sIFNWR1Rlc3RzOjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewot
ICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0
cikgewotICAgICAgICBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWUucmVzZXQoYXR0cmlidXRlLnZh
bHVlKCkpOworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpyZXF1aXJlZEZlYXR1cmVzQXR0cikg
eworICAgICAgICBtX3JlcXVpcmVkRmVhdHVyZXMudmFsdWUucmVzZXQodmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnJlcXVpcmVkRXh0ZW5zaW9uc0F0dHIpIHsKLSAgICAgICAgbV9yZXF1aXJlZEV4dGVuc2lv
bnMudmFsdWUucmVzZXQoYXR0cmlidXRlLnZhbHVlKCkpOworICAgIGlmIChuYW1lID09IFNWR05h
bWVzOjpyZXF1aXJlZEV4dGVuc2lvbnNBdHRyKSB7CisgICAgICAgIG1fcmVxdWlyZWRFeHRlbnNp
b25zLnZhbHVlLnJlc2V0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAg
IGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpzeXN0ZW1MYW5ndWFnZUF0dHIpIHsK
LSAgICAgICAgbV9zeXN0ZW1MYW5ndWFnZS52YWx1ZS5yZXNldChhdHRyaWJ1dGUudmFsdWUoKSk7
CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0cikgeworICAgICAg
ICBtX3N5c3RlbUxhbmd1YWdlLnZhbHVlLnJlc2V0KHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3Rz
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAppbmRleCBkNmFhOGJmLi41OThiNjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGVzdHMuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNFeHRlbnNpb24oY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7CiAKLSAgICBib29sIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpOworICAg
IGJvb2wgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpOwogICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKICAgICB2b2lkIGFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWROYW1l
PiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRl
eCA3MjNlM2MzLi4zOTQzZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcApAQCAtMjUwLDI1ICsyNTAsMjUgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUKICAgICB9CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJv
cjsKIAotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpCi0g
ICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7Ci0gICAg
ZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6bGVuZ3RoQWRqdXN0QXR0cikg
ewotICAgICAgICBTVkdMZW5ndGhBZGp1c3RUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdMZW5ndGhBZGp1c3RUeXBlPjo6ZnJvbVN0cmluZyhhdHRyaWJ1dGUudmFsdWUo
KSk7CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKKyAgICAgICAgU1ZHU3R5
bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOworICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIpIHsKKyAgICAgICAgU1ZHTGVuZ3RoQWRq
dXN0VHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoQWRqdXN0
VHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDAp
CiAgICAgICAgICAgICBzZXRMZW5ndGhBZGp1c3RCYXNlVmFsdWUocHJvcGVydHlWYWx1ZSk7Ci0g
ICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0
cikgewotICAgICAgICBtX3RleHRMZW5ndGgudmFsdWUgPSBTVkdMZW5ndGg6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlT3RoZXIsIGF0dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdh
dGl2ZUxlbmd0aHMpOwotICAgIH0gZWxzZSBpZiAoU1ZHVGVzdHM6OnBhcnNlQXR0cmlidXRlKGF0
dHJpYnV0ZSkKLSAgICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkpIHsKLSAgICB9IGVsc2UgaWYgKFNWR0xhbmdTcGFj
ZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkgeworICAgIH0gZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6dGV4dExlbmd0aEF0dHIpIHsKKyAgICAgICAgbV90ZXh0TGVuZ3RoLnZhbHVlID0g
U1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzKTsKKyAgICB9IGVsc2UgaWYgKFNWR1Rlc3RzOjpwYXJzZUF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICAgIHx8IFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKSkgeworICAgIH0gZWxzZSBp
ZiAoU1ZHTGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpIHsKICAgICB9IGVs
c2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXBvcnRBdHRyaWJ1dGVQ
YXJzaW5nRXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRlKTsKKyAgICByZXBvcnRBdHRyaWJ1dGVQ
YXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR1RleHRD
b250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAppbmRl
eCA1OTdhYTQxLi5hNDBmNjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9v
bCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCiAgICAg
Ym9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmly
dHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRFbGVtZW50LmNwcAppbmRleCBiOWNiMzY2Li43NTljYzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0RWxlbWVudC5jcHAKQEAgLTY0LDE2ICs2NCwxNiBAQCBib29sIFNWR1RleHRFbGVt
ZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBT
VkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQogCi12b2lkIFNWR1RleHRF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKK3ZvaWQg
U1ZHVGV4dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJp
YnV0ZShhdHRyaWJ1dGUubmFtZSgpKSkgewotICAgICAgICBTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUobmFtZSkpIHsKKyAgICAgICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KGF0dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKKyAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgewogICAgICAgICBTVkdUcmFuc2Zvcm1M
aXN0IG5ld0xpc3Q7Ci0gICAgICAgIG5ld0xpc3QucGFyc2UoYXR0cmlidXRlLnZhbHVlKCkpOwor
ICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRUcmFuc2Zvcm1C
YXNlVmFsdWUobmV3TGlzdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRF
bGVtZW50LmgKaW5kZXggMGVkOGVhMy4uOTMyNjUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRF
bGVtZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGb2N1cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRy
YW5zZm9ybSgpOwogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNw
YWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUgbW9kZSkgY29uc3QgeyByZXR1cm4g
U1ZHVHJhbnNmb3JtYWJsZTo6bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0obW9kZSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggYjQyZGUyOC4u
ZWM0ZDhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAg
LTg0LDI4ICs4NCwyNyBAQCBib29sIFNWR1RleHRQYXRoRWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRl
ZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5z
bGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdUZXh0UGF0aEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpCiB7CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vy
cm9yOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGUudmFsdWUoKTsK
IAotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpCi0gICAg
ICAgIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAg
ICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIp
CisgICAgaWYgKCFpc1N1cHBvcnRlZEF0dHJpYnV0ZShuYW1lKSkKKyAgICAgICAgU1ZHVGV4dENv
bnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CisgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQogICAgICAgICBzZXRTdGFydE9mZnNl
dEJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBw
YXJzZUVycm9yKSk7Ci0gICAgZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6
bWV0aG9kQXR0cikgeworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIp
IHsKICAgICAgICAgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9w
ZXJ0eVRyYWl0czxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAg
ICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgc2V0TWV0aG9kQmFzZVZh
bHVlKHByb3BlcnR5VmFsdWUpOwotICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBT
VkdOYW1lczo6c3BhY2luZ0F0dHIpIHsKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnNwYWNpbmdBdHRyKSB7CiAgICAgICAgIFNWR1RleHRQYXRoU3BhY2luZ1R5cGUgcHJvcGVydHlW
YWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1RleHRQYXRoU3BhY2luZ1R5cGU+Ojpmcm9tU3Ry
aW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAg
c2V0U3BhY2luZ0Jhc2VWYWx1ZShwcm9wZXJ0eVZhbHVlKTsKLSAgICB9IGVsc2UgaWYgKFNWR1VS
SVJlZmVyZW5jZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKSkgeworICAgIH0gZWxzZSBpZiAo
U1ZHVVJJUmVmZXJlbmNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkpIHsKICAgICB9IGVs
c2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICByZXBvcnRBdHRyaWJ1dGVQ
YXJzaW5nRXJyb3IocGFyc2VFcnJvciwgYXR0cmlidXRlKTsKKyAgICByZXBvcnRBdHRyaWJ1dGVQ
YXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIFNWR1RleHRQ
YXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCBkOTk1MGRi
Li4wMGViNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0x
MjQsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29u
dGFpbmVyTm9kZSopIE9WRVJSSURFOwogCiAgICAgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwogCiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmNwcAppbmRleCA0MmIyY2Q4Li44YmFmMTVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCkBAIC02OCw0OCArNjgs
NDggQEAgYm9vbCBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmli
dXRlcy5jb250YWluczxRdWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4o
YXR0ck5hbWUpOwogfQogCi12b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQordm9pZCBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUo
YXR0cmlidXRlLm5hbWUoKSkpIHsKLSAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUobmFt
ZSkpIHsKKyAgICAgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShuYW1l
LCB2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBTVkdOYW1lczo6eEF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0
dHIpIHsKICAgICAgICAgU1ZHTGVuZ3RoTGlzdCBuZXdMaXN0OwotICAgICAgICBuZXdMaXN0LnBh
cnNlKGF0dHJpYnV0ZS52YWx1ZSgpLCBMZW5ndGhNb2RlV2lkdGgpOworICAgICAgICBuZXdMaXN0
LnBhcnNlKHZhbHVlLCBMZW5ndGhNb2RlV2lkdGgpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFhM
aXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRYQmFzZVZhbHVlKG5ld0xp
c3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkg
PT0gU1ZHTmFtZXM6OnlBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7
CiAgICAgICAgIFNWR0xlbmd0aExpc3QgbmV3TGlzdDsKLSAgICAgICAgbmV3TGlzdC5wYXJzZShh
dHRyaWJ1dGUudmFsdWUoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgICAgIG5ld0xpc3QucGFy
c2UodmFsdWUsIExlbmd0aE1vZGVIZWlnaHQpOwogICAgICAgICBkZXRhY2hBbmltYXRlZFlMaXN0
V3JhcHBlcnMobmV3TGlzdC5zaXplKCkpOwogICAgICAgICBzZXRZQmFzZVZhbHVlKG5ld0xpc3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
U1ZHTmFtZXM6OmR4QXR0cikgeworICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpkeEF0dHIpIHsK
ICAgICAgICAgU1ZHTGVuZ3RoTGlzdCBuZXdMaXN0OwotICAgICAgICBuZXdMaXN0LnBhcnNlKGF0
dHJpYnV0ZS52YWx1ZSgpLCBMZW5ndGhNb2RlV2lkdGgpOworICAgICAgICBuZXdMaXN0LnBhcnNl
KHZhbHVlLCBMZW5ndGhNb2RlV2lkdGgpOwogICAgICAgICBkZXRhY2hBbmltYXRlZER4TGlzdFdy
YXBwZXJzKG5ld0xpc3Quc2l6ZSgpKTsKICAgICAgICAgc2V0RHhCYXNlVmFsdWUobmV3TGlzdCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBT
VkdOYW1lczo6ZHlBdHRyKSB7CisgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmR5QXR0cikgewog
ICAgICAgICBTVkdMZW5ndGhMaXN0IG5ld0xpc3Q7Ci0gICAgICAgIG5ld0xpc3QucGFyc2UoYXR0
cmlidXRlLnZhbHVlKCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgICAgICBuZXdMaXN0LnBhcnNl
KHZhbHVlLCBMZW5ndGhNb2RlSGVpZ2h0KTsKICAgICAgICAgZGV0YWNoQW5pbWF0ZWREeUxpc3RX
cmFwcGVycyhuZXdMaXN0LnNpemUoKSk7CiAgICAgICAgIHNldER5QmFzZVZhbHVlKG5ld0xpc3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkgPT0g
U1ZHTmFtZXM6OnJvdGF0ZUF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6cm90YXRl
QXR0cikgewogICAgICAgICBTVkdOdW1iZXJMaXN0IG5ld0xpc3Q7Ci0gICAgICAgIG5ld0xpc3Qu
cGFyc2UoYXR0cmlidXRlLnZhbHVlKCkpOworICAgICAgICBuZXdMaXN0LnBhcnNlKHZhbHVlKTsK
ICAgICAgICAgZGV0YWNoQW5pbWF0ZWRSb3RhdGVMaXN0V3JhcHBlcnMobmV3TGlzdC5zaXplKCkp
OwogICAgICAgICBzZXRSb3RhdGVCYXNlVmFsdWUobmV3TGlzdCk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCmluZGV4
IDdmNTg0N2QuLmY1MjFjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuaApAQCAtMzYsNyArMzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAog
ICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAppbmRleCAxNzM2MzEyLi5hYzA3NmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcApAQCAtMzAsMTAgKzMwLDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotYm9vbCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKQorYm9vbCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7Ci0gICAgaWYgKGF0dHJpYnV0ZS5uYW1lKCkubWF0Y2hlcyhYTGlua05hbWVzOjpocmVm
QXR0cikpIHsKLSAgICAgICAgc2V0SHJlZkJhc2VWYWx1ZShhdHRyaWJ1dGUudmFsdWUoKSk7Cisg
ICAgaWYgKG5hbWUubWF0Y2hlcyhYTGlua05hbWVzOjpocmVmQXR0cikpIHsKKyAgICAgICAgc2V0
SHJlZkJhc2VWYWx1ZSh2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5oCmluZGV4IDFiNmU4ZTkuLmE1NDgwMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgU1ZH
VVJJUmVmZXJlbmNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TVkdVUklSZWZlcmVuY2UoKSB7
IH0KIAotICAgIGJvb2wgcGFyc2VBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJik7CisgICAgYm9v
bCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAg
ICB2b2lkIGFkZFN1cHBvcnRlZEF0dHJpYnV0ZXMoSGFzaFNldDxRdWFsaWZpZWROYW1lPiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggZjFlMWMwMy4uZGQ0NjdkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTUzLDI4ICsxNTMsMjggQEAg
Ym9vbCBTVkdVc2VFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICByZXR1cm4gc3VwcG9ydGVkQXR0cmlidXRlcy5jb250YWluczxR
dWFsaWZpZWROYW1lLCBTVkdBdHRyaWJ1dGVIYXNoVHJhbnNsYXRvcj4oYXR0ck5hbWUpOwogfQog
Ci12b2lkIFNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKQordm9pZCBTVkdVc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIFNWR1BhcnNp
bmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkpCi0gICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwotICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xl
bmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgYXR0cmlidXRlLnZhbHVlKCksIHBhcnNl
RXJyb3IpKTsKLSAgICBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp5QXR0
cikKLSAgICAgICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCBhdHRyaWJ1dGUudmFsdWUoKSwgcGFyc2VFcnJvcikpOwotICAgIGVsc2UgaWYgKGF0
dHJpYnV0ZS5uYW1lKCkgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgc2V0V2lkdGhC
YXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCBhdHRyaWJ1dGUu
dmFsdWUoKSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7Ci0gICAgZWxzZSBp
ZiAoYXR0cmlidXRlLm5hbWUoKSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgc2V0
SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIGF0
dHJpYnV0ZS52YWx1ZSgpLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKLSAg
ICBlbHNlIGlmIChTVkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKQotICAgICAgICAg
ICAgIHx8IFNWR0xhbmdTcGFjZTo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKQotICAgICAgICAg
ICAgIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJp
YnV0ZSkKLSAgICAgICAgICAgICB8fCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKGF0
dHJpYnV0ZSkpIHsKKyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKQorICAgICAg
ICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFs
dWUpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQorICAgICAgICBzZXRY
QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKKyAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKKyAgICAg
ICAgc2V0WUJhc2VWYWx1ZShTVkdMZW5ndGg6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRo
QXR0cikKKyAgICAgICAgc2V0V2lkdGhCYXNlVmFsdWUoU1ZHTGVuZ3RoOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7
CisgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKKyAgICAgICAgc2V0
SGVpZ2h0QmFzZVZhbHVlKFNWR0xlbmd0aDo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICBlbHNlIGlmIChT
VkdUZXN0czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgfHwgU1ZH
TGFuZ1NwYWNlOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgICB8fCBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZUF0dHJpYnV0ZShuYW1lLCB2YWx1ZSkK
KyAgICAgICAgICAgICB8fCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZh
bHVlKSkgewogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAg
IHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBhdHRyaWJ1dGUpOworICAg
IHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1dlbGxGb3JtZWREb2N1bWVudChEb2N1bWVudCogZG9j
dW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCA0NmVlOGIzLi5mNmFlMTYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKIAogICAgIGJvb2wg
aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVjYWxjU3R5
bGUoU3R5bGVDaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKaW5kZXgg
ZGE0YjBkOS4uMTZjYjNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCkBA
IC02OSwyMyArNjksMjMgQEAgYm9vbCBTVkdWaWV3RWxlbWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1cHBvcnRlZEF0
dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0
b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewotICAgIGlmICghaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUoKSkp
IHsKLSAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsK
KyAgICBpZiAoIWlzU3VwcG9ydGVkQXR0cmlidXRlKG5hbWUpKSB7CisgICAgICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjp2aWV3VGFyZ2V0
QXR0cikgewotICAgICAgICB2aWV3VGFyZ2V0KCkucmVzZXQoYXR0cmlidXRlLnZhbHVlKCkpOwor
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0cikgeworICAgICAgICB2aWV3
VGFyZ2V0KCkucmVzZXQodmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYg
KFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSkp
CisgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlQXR0cmlidXRlKG5h
bWUsIHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OnBh
cnNlQXR0cmlidXRlKHRoaXMsIGF0dHJpYnV0ZSkpCisgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6
cGFyc2VBdHRyaWJ1dGUodGhpcywgbmFtZSwgdmFsdWUpKQogICAgICAgICByZXR1cm47Ci0gICAg
aWYgKFNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKHRoaXMsIGF0dHJpYnV0ZSkpCisgICAg
aWYgKFNWR1pvb21BbmRQYW46OnBhcnNlQXR0cmlidXRlKHRoaXMsIG5hbWUsIHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCmluZGV4IDhjOTJmMzEuLjFjYTljNTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBGSVhN
RTogc3ZnQXR0cmlidXRlQ2hhbmdlZCBtaXNzaW5nLgogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJS
SURFOwogCiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRl
cmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21BbmRQ
YW4uaAppbmRleCBiNTE0N2FiLi5kOTI2NGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHWm9vbUFuZFBhbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFu
LmgKQEAgLTU5LDEzICs1OSwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2Vab29t
QW5kUGFuKGNvbnN0IFVDaGFyKiYgc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIFNWR1pvb21BbmRQ
YW5UeXBlJik7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBTVkdFbGVtZW50VGFyZ2V0PgotICAgIHN0
YXRpYyBib29sIHBhcnNlQXR0cmlidXRlKFNWR0VsZW1lbnRUYXJnZXQqIHRhcmdldCwgY29uc3Qg
QXR0cmlidXRlJiBhdHRyaWJ1dGUpCisgICAgc3RhdGljIGJvb2wgcGFyc2VBdHRyaWJ1dGUoU1ZH
RWxlbWVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRhcmdldCk7CiAgICAg
ICAgIEFTU0VSVCh0YXJnZXQtPmRvY3VtZW50KCkpOwotICAgICAgICBpZiAoYXR0cmlidXRlLm5h
bWUoKSA9PSBTVkdOYW1lczo6em9vbUFuZFBhbkF0dHIpIHsKLSAgICAgICAgICAgIGNvbnN0IFVD
aGFyKiBzdGFydCA9IGF0dHJpYnV0ZS52YWx1ZSgpLmNoYXJhY3RlcnMoKTsKLSAgICAgICAgICAg
IGNvbnN0IFVDaGFyKiBlbmQgPSBzdGFydCArIGF0dHJpYnV0ZS52YWx1ZSgpLmxlbmd0aCgpOwor
ICAgICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6em9vbUFuZFBhbkF0dHIpIHsKKyAgICAgICAg
ICAgIGNvbnN0IFVDaGFyKiBzdGFydCA9IHZhbHVlLmNoYXJhY3RlcnMoKTsKKyAgICAgICAgICAg
IGNvbnN0IFVDaGFyKiBlbmQgPSBzdGFydCArIHZhbHVlLmxlbmd0aCgpOwogICAgICAgICAgICAg
U1ZHWm9vbUFuZFBhblR5cGUgem9vbUFuZFBhbiA9IFNWR1pvb21BbmRQYW5Vbmtub3duOwogICAg
ICAgICAgICAgcGFyc2Vab29tQW5kUGFuKHN0YXJ0LCBlbmQsIHpvb21BbmRQYW4pOwogICAgICAg
ICAgICAgdGFyZ2V0LT5zZXRab29tQW5kUGFuKHpvb21BbmRQYW4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCAyYjRlMGQ1Li40Nzli
MmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcApAQCAtNDI2LDI4ICs0MjYsMjggQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6aXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgcmV0dXJuIHN1
cHBvcnRlZEF0dHJpYnV0ZXMuY29udGFpbnM8UXVhbGlmaWVkTmFtZSwgU1ZHQXR0cmlidXRlSGFz
aFRyYW5zbGF0b3I+KGF0dHJOYW1lKTsKIH0KIAotdm9pZCBTVkdTTUlMRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpCit2b2lkIFNWR1NNSUxFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogewotICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNWR05hbWVzOjpi
ZWdpbkF0dHIpIHsKKyAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6YmVnaW5BdHRyKSB7CiAgICAg
ICAgIGlmICghbV9jb25kaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgZGlzY29ubmVj
dENvbmRpdGlvbnMoKTsKICAgICAgICAgICAgIG1fY29uZGl0aW9ucy5jbGVhcigpOwogICAgICAg
ICAgICAgcGFyc2VCZWdpbk9yRW5kKGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OmVuZEF0dHIp
LCBFbmQpOwogICAgICAgICB9Ci0gICAgICAgIHBhcnNlQmVnaW5PckVuZChhdHRyaWJ1dGUudmFs
dWUoKS5zdHJpbmcoKSwgQmVnaW4pOworICAgICAgICBwYXJzZUJlZ2luT3JFbmQodmFsdWUuc3Ry
aW5nKCksIEJlZ2luKTsKICAgICAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgICAgIGNv
bm5lY3RDb25kaXRpb25zKCk7Ci0gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IFNW
R05hbWVzOjplbmRBdHRyKSB7CisgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjplbmRB
dHRyKSB7CiAgICAgICAgIGlmICghbV9jb25kaXRpb25zLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgZGlzY29ubmVjdENvbmRpdGlvbnMoKTsKICAgICAgICAgICAgIG1fY29uZGl0aW9ucy5jbGVh
cigpOwogICAgICAgICAgICAgcGFyc2VCZWdpbk9yRW5kKGZhc3RHZXRBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OmJlZ2luQXR0ciksIEJlZ2luKTsKICAgICAgICAgfQotICAgICAgICBwYXJzZUJlZ2luT3JF
bmQoYXR0cmlidXRlLnZhbHVlKCkuc3RyaW5nKCksIEVuZCk7CisgICAgICAgIHBhcnNlQmVnaW5P
ckVuZCh2YWx1ZS5zdHJpbmcoKSwgRW5kKTsKICAgICAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAg
ICAgICAgICAgIGNvbm5lY3RDb25kaXRpb25zKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIFNWR0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGF0dHJpYnV0ZSk7CisgICAgICAgIFNWR0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBTVkdTTUlMRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAppbmRleCBlMWM5ZjE2Li5l
ZGUxOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVu
dC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBpc1NNSUxFbGVt
ZW50KE5vZGUqKTsKIAogICAgIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29u
dGFpbmVyTm9kZSopIE9WRVJSSURFOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>