<?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>93215</bug_id>
          
          <creation_ts>2012-08-05 18:22:43 -0700</creation_ts>
          <short_desc>[V8] Replace v8::Handle&lt;v8::Value&gt;() in custom bindings with v8Undefined()</short_desc>
          <delta_ts>2012-08-07 22:04:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687692</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 18:22:43 -0700</bug_when>
    <thetext>We should use v8Undefined() everywhere in V8 bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687696</commentid>
    <comment_count>1</comment_count>
      <attachid>156580</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-05 18:24:08 -0700</bug_when>
    <thetext>Created attachment 156580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689475</commentid>
    <comment_count>2</comment_count>
      <attachid>156580</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-07 15:22:27 -0700</bug_when>
    <thetext>Comment on attachment 156580
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689544</commentid>
    <comment_count>3</comment_count>
      <attachid>156580</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 16:00:28 -0700</bug_when>
    <thetext>Comment on attachment 156580
Patch

Rejecting attachment 156580 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
WebCore/bindings/v8/custom/V8NamedNodeMapCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8NodeListCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8SVGLengthCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8StorageCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8StyleSheetListCustom.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/13449601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689657</commentid>
    <comment_count>4</comment_count>
      <attachid>157056</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-07 17:39:26 -0700</bug_when>
    <thetext>Created attachment 157056
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689870</commentid>
    <comment_count>5</comment_count>
      <attachid>157056</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 22:02:53 -0700</bug_when>
    <thetext>Comment on attachment 157056
patch for landing

Clearing flags on attachment: 157056

Committed r124984: &lt;http://trac.webkit.org/changeset/124984&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156580</attachid>
            <date>2012-08-05 18:24:08 -0700</date>
            <delta_ts>2012-08-07 22:04:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93215-20120806102345.patch</filename>
            <type>text/plain</type>
            <size>35685</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRkNWZhMDE4ODQ5NDhl
MjgyM2NiMjhlMjQxYjZhNDVhODM0NDY4OS4uNTFjMWU3NTI4NmZiODkzYTkwYjc5ODM3MDk0NGY0
YTVhNDM3YWVjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA4LTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlcGxhY2Ug
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgaW4gY3VzdG9tIGJpbmRpbmdzIHdpdGggdjhVbmRlZmlu
ZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMy
MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBz
aG91bGQgdXNlIHY4VW5kZWZpbmVkKCkgZXZlcnl3aGVyZSBpbiBWOCBiaW5kaW5ncy4KKworICAg
ICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5U2V0dGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6dHJhY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29u
c29sZTo6cHJvZmlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6cHJv
ZmlsZUVuZENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01TdHJp
bmdNYXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01TdHJpbmdNYXA6Om5hbWVk
UHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3Bl
cnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3OjpzZXRJbnQ4Q2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6c2V0VWludDhDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9u
RXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOERpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnlDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29s
bGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFt
ZWRJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3Bl
cnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJv
cGVydHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtRWxlbWVudDo6aW5kZXhlZFBy
b3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZvcm1FbGVtZW50OjpuYW1l
ZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJh
bWVTZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lU2V0
RWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleGVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om5wT2JqZWN0TmFtZWRHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
bnBPYmplY3ROYW1lZFNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpucE9iamVjdEluZGV4ZWRH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RJbmRleGVkU2V0dGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEhUTUxTZWxlY3RFbGVtZW50OjppbmRleGVkUHJvcGVydHlHZXR0
ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25BY2Nlc3NvckdldHRlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4TmFtZWROb2RlTWFwOjppbmRleGVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhOYW1lZE5vZGVNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4Tm9kZUxpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFNWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHNDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzdG9yYWdlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6bmFtZWRQcm9w
ZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzdG9yYWdlU2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFN0eWxlU2hlZXRMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKwogMjAx
Mi0wOC0wNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9u
J3QgcmV1c2UgY2FjaGVkIHN0eWxlc2hlZXQgd2l0aCBmYWlsZWQgb3IgY2FuY2VsZWQgcmVzb3Vy
Y2UgbG9hZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggYWYyMzc1Zjdj
NzYxODA3OGQwZmQ3ZTBkNjY0NjJiNzljYTQyZjZkZS4uZTNmYTgwOGMwODc2MDk3NTNmNzEwZWZm
YTllYjZlZDNiMmZkZTkzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAg
LTE5NSwxNCArMTk1LDE0IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENTU1N0eWxlRGVjbGFy
YXRpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTCiAgICAgSU5DX1NUQVRT
KCJET00uQ1NTU3R5bGVEZWNsYXJhdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAgLy8g
Rmlyc3QgbG9vayBmb3IgQVBJIGRlZmluZWQgYXR0cmlidXRlcyBvbiB0aGUgc3R5bGUgZGVjbGFy
YXRpb24gb2JqZWN0LgogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFj
a1Byb3BlcnR5KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7
CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgLy8gU2VhcmNoIHRoZSBzdHls
ZSBkZWNsYXJhdGlvbi4KICAgICBDU1NQcm9wZXJ0eUluZm8qIHByb3BJbmZvID0gY3NzUHJvcGVy
dHlJbmZvKG5hbWUpOwogCiAgICAgLy8gRG8gbm90IGhhbmRsZSBub24tcHJvcGVydHkgbmFtZXMu
CiAgICAgaWYgKCFwcm9wSW5mbykKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIENTU1N0eWxlRGVjbGFy
YXRpb24qIGltcCA9IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSA9IGltcC0+Z2V0UHJvcGVydHlDU1NW
YWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BJbmZvLT5wcm9wSUQp
KTsKQEAgLTIyOCw3ICsyMjgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDU1NTdHlsZURl
Y2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgIENTU1N0
eWxlRGVjbGFyYXRpb24qIGltcCA9IFY4Q1NTU3R5bGVEZWNsYXJhdGlvbjo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgQ1NTUHJvcGVydHlJbmZvKiBwcm9wSW5mbyA9IGNzc1Byb3BlcnR5
SW5mbyhuYW1lKTsKICAgICBpZiAoIXByb3BJbmZvKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgU3Ry
aW5nIHByb3BlcnR5VmFsdWUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKHZhbHVlKTsK
ICAgICBpZiAocHJvcEluZm8tPmhhZFBpeGVsT3JQb3NQcmVmaXgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCmluZGV4IGU3
ZTBlZTdlMGJkNTJjYjU5NWJmMWYxNzkzOTc4Y2VhNjA5MjFmZTkuLmMxOWE3YjA5MjcxNWU1N2I2
NDM4YzQ1OGU0ZmIzYmIyM2Y0OWUzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC01MCw3ICs1MCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2soY3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrKFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2Fw
dHVyZSkpOwogICAgIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3VtZW50cyhjcmVh
dGVTY3JpcHRBcmd1bWVudHMoYXJncywgMCkpOwogICAgIGltcC0+dHJhY2Uoc2NyaXB0QXJndW1l
bnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CkBAIC02MSw3ICs2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OmFzc2Vy
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgYm9vbCBjb25kaXRpb24g
PSBhcmdzWzBdLT5Cb29sZWFuVmFsdWUoKTsKICAgICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBz
Y3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0QXJndW1lbnRzKGFyZ3MsIDEpKTsKICAgICBpbXAt
PmFzc2VydENvbmRpdGlvbihzY3JpcHRBcmd1bWVudHMucmVsZWFzZSgpLCBjYWxsU3RhY2ssIGNv
bmRpdGlvbik7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCkBA
IC03NCw3ICs3NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQ
YXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMF0pOwogICAg
IGltcC0+cHJvZmlsZSh0aXRsZSwgU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSwgY2FsbFN0YWNrKTsK
LSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnByb2ZpbGVFbmRD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtODYsNyArODYsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKICAgICBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPFdpdGhVbmRl
ZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKICAgICBpbXAtPnByb2ZpbGVFbmQo
dGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFjayk7Ci0gICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVN0cmluZ01hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01TdHJpbmdNYXBDdXN0b20uY3BwCmluZGV4IDVkNDNkNDA3MGQ0ZjQ2MDc3MzgyMTY0NzJj
NWQ4ZTg4YWUzODA1MzkuLmJmMTU5NmRkNDZiMzMwMWRhN2I0N2Y3MTRjNmY4MWM1OGM0NGYzMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVN0cmlu
Z01hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RE9NU3RyaW5nTWFwQ3VzdG9tLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhET01TdHJpbmdNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+CiAgICAgSU5DX1NUQVRTKCJET00uRE9NU3RyaW5nTWFwLk5hbWVkUHJvcGVydHlHZXR0
ZXIiKTsKICAgICBTdHJpbmcgdmFsdWUgPSBWOERPTVN0cmluZ01hcDo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSktPml0ZW0odG9XZWJDb3JlU3RyaW5nKG5hbWUpKTsKICAgICBpZiAodmFsdWUuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHY4U3RyaW5nT3JVbmRlZmluZWQodmFs
dWUsIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggOGZhMjgwOGU3
MzhiMDFhMTM1ZTlkYzljMDI3ZmJkYmMxMmQyMmQ2Yi4uM2E0ZmIxM2RiZGMzZTg1ZjdhNTgzZDVm
ZWY2ODk5MGM0Y2YwOWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC00NzIsMTcgKzQ3MiwxNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1
aW50MzJfdCBpbmRleCwgY29uc3QgdgogCiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBWOERPTVdp
bmRvdzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3aW5kb3cpCi0gICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCkt
PnNjb3BlZENoaWxkKGluZGV4KTsKICAgICBpZiAoY2hpbGQpCiAgICAgICAgIHJldHVybiB0b1Y4
KGNoaWxkLT5kb21XaW5kb3coKSwgaW5mby5HZXRJc29sYXRlKCkpOwogCi0gICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiAK
QEAgLTQ5MiwxMiArNDkyLDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6
bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAKICAgICBET01X
aW5kb3cqIHdpbmRvdyA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBpZiAoIXdpbmRvdykKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRv
dy0+ZnJhbWUoKTsKICAgICAvLyB3aW5kb3cgaXMgZGV0YWNoZWQgZnJvbSBhIGZyYW1lLgogICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAvLyBTZWFyY2ggc3ViLWZyYW1lcy4K
ICAgICBBdG9taWNTdHJpbmcgcHJvcE5hbWUgPSB2OFZhbHVlVG9BdG9taWNXZWJDb3JlU3RyaW5n
KG5hbWUpOwpAQCAtNTA3LDcgKzUwNyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdp
bmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAKICAg
ICAvLyBTZWFyY2ggSURMIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBwcm90b3R5cGUKICAgICBp
ZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5KG5hbWUpLklzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIAogICAgIC8vIFNlYXJjaCBuYW1lZCBpdGVtcyBpbiB0aGUgZG9jdW1l
bnQuCiAgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOwpAQCAtNTIzLDcgKzUy
Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IGJkZGJhOWFhMDhhZTgxYjkyYjE1NTkwMTAzZjE1ZjU3
MTkwMmZhNDIuLjQwZTFhN2U3Mzc3YWQzOTgwMTBhYTJiN2M4MzNhOWQzNGEwOWRlMzAgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1
c3RvbS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRh
Vmlldzo6c2V0SW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaW1w
LT5zZXRJbnQ4KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PGludDhfdD4odmFsdWUpLCBlYyk7CiAg
ICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2Vw
dGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGF0YVZpZXc6OnNldFVpbnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKQEAgLTEyMyw3ICsxMjMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmll
dzo6c2V0VWludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGltcC0+
c2V0VWludDgoYnl0ZU9mZnNldCwgc3RhdGljX2Nhc3Q8dWludDhfdD4odmFsdWUpLCBlYyk7CiAg
ICAgaWYgKFVOTElLRUxZKGVjKSkKICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2Vw
dGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IGUzZTI5MDE2MTZkMmE3
YTVkZTk3MmIzZjcxMmM5MzgwMTc5MjFiNjguLmJkMDc0Nzk5ZGQ3MDQyNWJkOGExMzkwMWNiYjZh
MTJmNzg3YzU1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTE3Niw3ICsx
NzYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERl
dmljZU1vdGlvbkV2ZW50Q2FsbGJhY2soY29uc3QgdgogICAgIGRvdWJsZSBpbnRlcnZhbCA9IGFy
Z3NbNl0tPk51bWJlclZhbHVlKCk7CiAgICAgUmVmUHRyPERldmljZU1vdGlvbkRhdGE+IGRldmlj
ZU1vdGlvbkRhdGEgPSBEZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUoYWNjZWxlcmF0aW9uLCBhY2Nl
bGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCByb3RhdGlvblJhdGUsIGludGVydmFsUHJvdmlkZWQs
IGludGVydmFsKTsKICAgICBpbXAtPmluaXREZXZpY2VNb3Rpb25FdmVudCh0eXBlLCBidWJibGVz
LCBjYW5jZWxhYmxlLCBkZXZpY2VNb3Rpb25EYXRhLmdldCgpKTsKLSAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAK
aW5kZXggYmJkYzNmY2U4YWE2N2JjODkyMjcyMzIyMjRmMDM1NWE2NTU3ZjJlYi4uMzdkNGExODNl
MGEyZDhhYzg5YTI3NGI1NTBlODljYzAxYTJkYTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRp
b25FdmVudEN1c3RvbS5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnRDYWxs
YmEKICAgICBib29sIGFic29sdXRlID0gYXJnc1s2XS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgUmVm
UHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4gb3JpZW50YXRpb24gPSBEZXZpY2VPcmllbnRhdGlv
bkRhdGE6OmNyZWF0ZShhbHBoYVByb3ZpZGVkLCBhbHBoYSwgYmV0YVByb3ZpZGVkLCBiZXRhLCBn
YW1tYVByb3ZpZGVkLCBnYW1tYSwgYWJzb2x1dGVQcm92aWRlZCwgYWJzb2x1dGUpOwogICAgIGlt
cC0+aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2VsYWJsZSwg
b3JpZW50YXRpb24uZ2V0KCkpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
KyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5
RW50cnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGly
ZWN0b3J5RW50cnlDdXN0b20uY3BwCmluZGV4IDZmZTUyNDI0ZjUwZjc2MzRiNDBmOGY0ZTVkYmYy
NDhmZDJmM2Q0YzUuLjdjMzkyYzhlOWJlYzY3ODhmYjQ2ZDNmYTgzNjhlOTBhYTY3ZTZjZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVu
dHJ5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
aXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGlyZWN0b3J5RW50cnk6OmdldERpcmVjdG9yeUNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMKICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFy
YW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHBhdGgsIGFyZ3NbMF0pOwogICAgIGlm
IChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1wLT5nZXREaXJlY3RvcnkocGF0aCk7
Ci0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3M7CiAg
ICAgaWYgKCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09iamVjdCgp
KSB7CkBAIC04Niw3ICs4Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERpcmVjdG9yeUVu
dHJ5OjpnZXREaXJlY3RvcnlDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAgICAgICAgIGVy
cm9yQ2FsbGJhY2sgPSBWOEVycm9yQ2FsbGJhY2s6OmNyZWF0ZShhcmdzWzNdLCBnZXRTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIH0KICAgICBpbXAtPmdldERpcmVjdG9yeShwYXRoLCBm
bGFncywgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTEwMCw3ICsxMDAsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZwogICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQYXJh
bWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgcGF0aCwgYXJnc1swXSk7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPD0gMSkgewogICAgICAgICBpbXAtPmdldEZpbGUocGF0aCk7Ci0gICAg
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRGbGFncz4gZmxhZ3M7CiAgICAgaWYg
KCFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSAmJiBhcmdzWzFdLT5Jc09iamVjdCgpKSB7CkBA
IC0xMzAsNyArMTMwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGlyZWN0b3J5RW50cnk6
OmdldEZpbGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICAgICAgZXJyb3JD
YWxsYmFjayA9IFY4RXJyb3JDYWxsYmFjazo6Y3JlYXRlKGFyZ3NbM10sIGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSk7CiAgICAgfQogICAgIGltcC0+Z2V0RmlsZShwYXRoLCBmbGFncywgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxl
Y3Rpb25DdXN0b20uY3BwCmluZGV4IDBjODNmYjUzNDE3ZTdkZWE5MDA3YzNjMmRjYWRjMGU1NTZm
NzdjZDkuLjUzMmUyNTdhYzc3ZWZmMWY1MGNhNThjY2M5Y2VkZjhiNzM3YzFjZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9u
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
QWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9u
LCBBdG9taWMKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVkSXRlbXMpOwog
CiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGlmIChu
YW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9WOChuYW1lZEl0ZW1zLmF0
KDApLnJlbGVhc2UoKSwgaXNvbGF0ZSk7CkBAIC03Niw5ICs3Niw5IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyCiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24uTmFtZWRQcm9w
ZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9w
ZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6
OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAg
IGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5hbWUpKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgSFRNTEFsbENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTEFsbENv
bGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiBnZXROYW1lZEl0
ZW1zKGltcCwgdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKSwgaW5mby5HZXRJc29s
YXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDdhNmY3Yjk1YmRmZjYwODZhZGVk
MmQ0OTUzZWFkYzhhNTkzNWI0NzEuLjM4MDJiYjNlYzZiYjJhNWY0OWE0NDBkZjgxYmI4OWMyMjll
NDM4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1zKEhUTUxDb2xsZWN0aW9uKiBjb2xs
ZWN0aW9uLCBBdG9taWNTdHIKICAgICBjb2xsZWN0aW9uLT5uYW1lZEl0ZW1zKG5hbWUsIG5hbWVk
SXRlbXMpOwogCiAgICAgaWYgKCFuYW1lZEl0ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAog
ICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQogICAgICAgICByZXR1cm4gdG9WOChuYW1l
ZEl0ZW1zLmF0KDApLnJlbGVhc2UoKSwgaXNvbGF0ZSk7CkBAIC02NSw5ICs2NSw5IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgSU5DX1NUQVRTKCJET00uSFRNTENvbGxlY3Rpb24uTmFt
ZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFsTmFt
ZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5KG5h
bWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgSFRNTENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTENv
bGxlY3Rpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIHJldHVybiBnZXROYW1lZEl0
ZW1zKGltcCwgdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKSwgaW5mby5HZXRJc29s
YXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMmZjYzU4MWY5YjNjMGEyZGExYjI5MGUw
N2Y1MWNlYzlkNjIzMmM1ZC4uYzIxNTBhMGZiMmZjNTYxY2IyOGI3YWYzYjdlZGVjOWY1ODExYTdh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04MywxMSArODMsMTEgQEAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IFY4SFRNTERvY3VtZW50OjpXcmFwSW5TaGFkb3dPYmplY3Qodjg6OkxvY2FsPHY4
OjpPYmplY3Q+IHcKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2V0TmFt
ZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBrZXksIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaHRtbERvY3VtZW50LT5o
YXNOYW1lZEl0ZW0oa2V5LmltcGwoKSkgJiYgIWh0bWxEb2N1bWVudC0+aGFzRXh0cmFOYW1lZEl0
ZW0oa2V5LmltcGwoKSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
KyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBSZWZQdHI8SFRNTENvbGxlY3Rp
b24+IGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5KTsKICAgICBp
ZiAoaXRlbXMtPmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVl
PigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIGlmIChpdGVtcy0+aGFz
RXhhY3RseU9uZUl0ZW0oKSkgewogICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMtPml0ZW0oMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9y
bUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCAxYzk1NjNkMGQwYzU4YzBmNTkwMjkyNjFj
NWY0ZWM1MmQzYjczOGEzLi5iZWMwMjBkOTVmODRjNDlhNjc5ZWY3M2Y2OGQ5YmU0ODk1YTk1ZWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9y
bUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWlu
dDMyX3QgaW5kZXgsIGMKIAogICAgIFJlZlB0cjxOb2RlPiBmb3JtRWxlbWVudCA9IGZvcm0tPmVs
ZW1lbnRzKCktPml0ZW0oaW5kZXgpOwogICAgIGlmICghZm9ybUVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAgICAgcmV0dXJuIHRvVjgoZm9ybUVsZW1lbnQucmVsZWFzZSgpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CiAKQEAgLTY1LDcgKzY1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRN
TEZvcm1FbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW4KICAg
ICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IGVsZW1lbnRzOwogICAgICAgICBpbXAtPmdldE5h
bWVkRWxlbWVudHModiwgZWxlbWVudHMpOwogICAgICAgICBpZiAoZWxlbWVudHMuaXNFbXB0eSgp
KQotICAgICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQogCiAgICAgLy8gU2Vjb25kIGNhbGwgbWF5
IHJldHVybiBkaWZmZXJlbnQgcmVzdWx0cyBmcm9tIHRoZSBmaXJzdCBjYWxsLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJh
bWVTZXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA5NzU3NGNlYWIzY2Y2NDA4ZGNhYjhiNzQ4MzY5
MjlkOTU5ODBlNTZhLi41MTllMDE1Zjc4MTRiM2NkMWUxMDFiY2MyMWJlNGI0ZmQzNjI0ZjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVT
ZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lZFByb3BlcnR5R2V0
dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jLT5mcmFt
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRvVjgoZnJhbWUtPmRvbVdpbmRvdygpLCBpbmZvLkdl
dElzb2xhdGUoKSk7CiAgICAgfQotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
KyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlv
bnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggNjFlZmE0NGYyZTVlMDM4
MjMxY2E1ZWI3ZjU4ZmU0NGRkZjZkNGIzOS4uOTAzMGI1MTJkN2QxNjMzNDVkYTNiM2ExNDcxMGI4
ZWEyZmNhYzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC0x
MTksNyArMTE5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW4KIAogICAgIFJlZlB0cjxOb2Rl
PiByZXN1bHQgPSBjb2xsZWN0aW9uLT5pdGVtKGluZGV4KTsKICAgICBpZiAoIXJlc3VsdCkKLSAg
ICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAppbmRleCA0YjE0ZjIw
N2UwN2FiMmQ3MThhYTk4NjdmNTQ4NWQ1MTg3MWIyNjU5Li40MDY2MzI1NzRkZTE4MTE1OWQ1Njk5
ZWQwZDRlNjg3ZWJiMzljZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwCkBAIC01
MCwxMSArNTAsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVjdE5hbWVk
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb24KICAgICBIVE1MUGx1Z0luRWxl
bWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0SW5zdGFu
Y2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdldEluc3RhbmNlKCk7CiAgICAgaWYgKCFzY3JpcHRJ
bnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBpbnN0
YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHNjcmlwdEluc3RhbmNlLT5pbnN0YW5j
ZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAg
cmV0dXJuIG5wT2JqZWN0R2V0TmFtZWRQcm9wZXJ0eShpbnN0YW5jZSwgbmFtZSwgaW5mbyk7CiB9
CkBAIC02NSwxMSArNjUsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBucE9iamVj
dE5hbWVkU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODoKICAgICBIVE1MUGx1
Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0
SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdldEluc3RhbmNlKCk7CiAgICAgaWYgKCFz
Y3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHNjcmlwdEluc3RhbmNlLT5p
bnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
CiAgICAgcmV0dXJuIG5wT2JqZWN0U2V0TmFtZWRQcm9wZXJ0eShpbnN0YW5jZSwgbmFtZSwgdmFs
dWUsIGluZm8pOwogfQpAQCAtMTM1LDExICsxMzUsMTEgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG5wT2JqZWN0SW5kZXhlZEdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29y
SW4KICAgICBIVE1MUGx1Z0luRWxlbWVudCogaW1wID0gQzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7CiAgICAgU2NyaXB0SW5zdGFuY2Ugc2NyaXB0SW5zdGFuY2UgPSBpbXAtPmdldEluc3RhbmNl
KCk7CiAgICAgaWYgKCFzY3JpcHRJbnN0YW5jZSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBpbnN0YW5jZSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KHNj
cmlwdEluc3RhbmNlLT5pbnN0YW5jZSgpKTsKICAgICBpZiAoaW5zdGFuY2UuSXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIG5wT2JqZWN0R2V0SW5kZXhlZFByb3BlcnR5KGlu
c3RhbmNlLCBpbmRleCwgaW5mbyk7CiB9CkBAIC0xNTEsMTEgKzE1MSwxMSBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbnBPYmplY3RJbmRleGVkU2V0dGVyKHVpbnQzMl90IGluZGV4LCB2ODo6TG9j
YWw8djg6OlZhbHVlPgogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBpbXAgPSBDOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRJbnN0YW5jZSBzY3JpcHRJbnN0YW5jZSA9IGltcC0+
Z2V0SW5zdGFuY2UoKTsKICAgICBpZiAoIXNjcmlwdEluc3RhbmNlKQotICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gdjg6OkxvY2FsPHY4OjpPYmpl
Y3Q+OjpOZXcoc2NyaXB0SW5zdGFuY2UtPmluc3RhbmNlKCkpOwogICAgIGlmIChpbnN0YW5jZS5J
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gbnBPYmplY3RTZXRJbmRleGVk
UHJvcGVydHkoaW5zdGFuY2UsIGluZGV4LCB2YWx1ZSwgaW5mbyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxl
bWVudEN1c3RvbS5jcHAKaW5kZXggMDE1YmUzYTBjNjIyMWIxNDY1ODY4MzQ1MDg3NzJhMzAyOTU1
YTAzMS4uNzE0NzNjNTZjZGU4Yjg5NjNhYWEzOGQzN2QwYzU5OTNkZGJmMjk3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxT
ZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNTEsNyArNTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90
IGluZGV4LAogICAgIEFTU0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3JhcHBlcihpbmZvLkhv
bGRlcigpKSk7CiAgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9IFY4SFRNTFNlbGVjdEVsZW1lbnQ6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpLT5pdGVtKGluZGV4KTsKICAgICBpZiAoIXJlc3VsdCkK
LSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCA3MmRjY2M3NjdjNWU3OTc4OWMwZTk2
YmUzNDJiMGQ1NDA0MGE5MzdjLi45ZGQ2YzBhYTJmNTkxMDNlMjc2NDdkZGZjMDA4ZjcyYTI5ZTQ4
YjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2Nh
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBWOExvY2F0aW9uOjpz
ZWFyY2hBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5yZWxvYWQuX2dldCIpOwotICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBs
YXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjaywgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0
ZSgpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
cHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpO
ZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRDYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBs
YXRlKCkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBWOERPTVdyYXBw
ZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhMb2NhdGlvbjo6R2V0VGVtcGxhdGUoKSwgaW5mby5UaGlz
KCkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGNhbiBvbmx5IHJl
YWNoIGhlcmUgYnkgJ29iamVjdC5fX3Byb3RvX18uZnVuYycsIGFuZCBpdCBzaG91bGQgcGFzc2Vk
CkBAIC0xNTcsNyArMTU3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJl
bG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICB9CiAgICAg
TG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFC
aW5kaW5nU2VjdXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwg
aW1wLT5mcmFtZSgpLCBmYWxzZSkpIHsKLSAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlv
bjo6cmVsb2FkQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKKyAgICAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgICAgICByZXR1
cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2
YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0xNjYsNyArMTY2LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW0KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZXBsYWNl
QWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgSU5DX1NUQVRTKCJET00uTG9jYXRpb24ucmVwbGFjZS5f
Z2V0Iik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBw
cml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjaywg
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpH
ZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBs
YWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9u
OjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gVjhET01XcmFwcGVyOjpsb29rdXBET01XcmFwcGVyKFY4TG9jYXRpb246OkdldFRlbXBsYXRl
KCksIGluZm8uVGhpcygpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAv
LyBjYW4gb25seSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQg
c2hvdWxkIHBhc3NlZApAQCAtMTc1LDcgKzE3NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjpyZXBsYWNlQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
CiAgICAgfQogICAgIExvY2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIp
OwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShCaW5kaW5nU3RhdGU6
Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgZmFsc2UpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFY4TG9jYXRpb246OnJlcGxhY2VDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAg
ICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRl
bXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkp
OwogICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQog
ICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0xODUsNyArMTg1
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkFjY2Vzc29yR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2Nh
dGlvbi5hc3NpZ24uX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0
aW9uOjphc3NpZ25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0
dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOExv
Y2F0aW9uOjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJv
dG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAgLTE5NCw3ICsxOTQsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlv
bjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNz
RnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIGZhbHNlKSkgewot
ICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJl
ZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxsYmFjaywgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdU
ZW1wbGF0ZSgpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25D
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246Okdl
dFJhd1RlbXBsYXRlKCkpKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVu
Y3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhO
YW1lZE5vZGVNYXBDdXN0b20uY3BwCmluZGV4IDcxNTA5MmZhZWM0OWRiOTE1NTVkNTFjZmViY2Zm
N2E0YTViMTY5NmQuLjZiZDJhMDViMTlhZTkyOGI4Yzg0M2JmMDc5YWY2NmQxNjliOTIxMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1h
cEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFt
ZWROb2RlTWFwQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhOYW1lZE5vZGVNYXA6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwg
Y29ucwogICAgIE5hbWVkTm9kZU1hcCogaW1wID0gVjhOYW1lZE5vZGVNYXA6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIFJlZlB0cjxOb2RlPiByZXN1bHQgPSBpbXAtPml0ZW0oaW5kZXgp
OwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIHRvVjgocmVz
dWx0LnJlbGVhc2UoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpAQCAtNTksMTQgKzU5LDE0IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hbWVkTm9kZU1hcDo6bmFtZWRQcm9wZXJ0eUdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBJTkNfU1RBVFMoIkRPTS5OYW1lZE5vZGVNYXAu
TmFtZWRQcm9wZXJ0eUdldHRlciIpOwogCiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRSZWFs
TmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogICAgIGlmIChpbmZvLkhvbGRlcigpLT5IYXNSZWFsTmFtZWRDYWxsYmFja1Byb3BlcnR5
KG5hbWUpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgTmFtZWROb2RlTWFwKiBpbXAgPSBWOE5hbWVk
Tm9kZU1hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPE5vZGU+IHJlc3Vs
dCA9IGltcC0+Z2V0TmFtZWRJdGVtKHRvV2ViQ29yZVN0cmluZyhuYW1lKSk7CiAgICAgaWYgKCFy
ZXN1bHQpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgp
LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXggOWUxYmU5YWRlYWM5MTcw
M2RiMGI1ODYxNGE0Y2ZhMzFmYmJlZjUzNi4uNjgxZmU0OWQxZWIxZTg1ODQ4NjU5NmU1OWM4ZDM2
NzAxZTM2YmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4Tm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNTUsNyArNTUsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhOb2RlTGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZQogCiAgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9IGxpc3QtPml0ZW1XaXRoTmFt
ZShrZXkpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIHRv
VjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAK
aW5kZXggMjkyYmMwZGRjZjgzYmJiNjY3ZjgyNzg4Y2YyMzFlODU5OTVlODZhNC4uYjE1MDQ4MjU1
YmI1OTE5YTc4YWEyZDA3YzJiNWY1ODI2Y2M0ZDYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNWR0xlbmd0aDo6Y29udmVydFRvU3Bl
Y2lmaWVkVW5pdHNDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAgICAgICAgIHJldHVybiBWOFByb3h5
OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHdyYXBwZXIt
PmNvbW1pdENoYW5nZSgpOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9t
LmNwcAppbmRleCA4OTM5NmEzMGNmMTllZTc2MjhjMTU2YTZhZDAwZTg2ZjMzMDZkMjI1Li4yNjU5
OTJiN2VhNjVjZTRjZDlmNzA1OGRhNDZlOTA5OTgwN2E3ZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNwcApAQCAtNjEs
NyArNjEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0b3JhZ2VHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgY29uc3QgdgogICAgIGlmIChuYW1lICE9ICJsZW5n
dGgiICYmIHN0b3JhZ2UtPmNvbnRhaW5zKG5hbWUpKQogICAgICAgICByZXR1cm4gdjhTdHJpbmco
c3RvcmFnZS0+Z2V0SXRlbShuYW1lKSwgaW5mby5HZXRJc29sYXRlKCkpOwogCi0gICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdG9yYWdlOjppbmRleGVkUHJvcGVydHlHZXR0ZXIo
dWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC03NSw3ICs3
NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Om5hbWVkUHJvcGVydHlHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiB7CiAgICAgSU5DX1NUQVRTKCJET00uU3Rv
cmFnZS5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAgICAgaWYgKCFpbmZvLkhvbGRlcigpLT5HZXRS
ZWFsTmFtZWRQcm9wZXJ0eUluUHJvdG90eXBlQ2hhaW4obmFtZSkuSXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIHJldHVybiBzdG9yYWdlR2V0dGVyKG5hbWUsIGluZm8pOwogfQogCkBAIC0x
MDMsNyArMTAzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdG9yYWdlU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiB2OE5hbWUsIHY4OjpMb2MKICAgICAgICAgcmV0dXJuIHY4
VmFsdWU7CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Q
cm90b3R5cGVDaGFpbih2OE5hbWUpLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHN0b3JhZ2UtPnNldEl0ZW0obmFtZSwgdmFsdWUsIGVj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxl
U2hlZXRMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAppbmRleCA4Nzk0NDkwNDNkZGI1NjA3NTBhOTk1NWQ1
MjI0NDQ1OGM4N2M5N2JhLi5jNGU4MmJiMDg3ODYyNzFjZDM0MzNkMDU2MTEyN2MyYmIzODM4Njcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNo
ZWV0TGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwCkBAIC00NCwxMyArNDQsMTMgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4U3R5bGVTaGVldExpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmcKICAgICBJTkNfU1RBVFMoIkRPTS5TdHlsZVNoZWV0TGlzdC5OYW1lZFBy
b3BlcnR5R2V0dGVyIik7CiAKICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkUHJv
cGVydHkobmFtZSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICAvLyBTZWFyY2ggc3R5bGUgc2hlZXQu
CiAgICAgU3R5bGVTaGVldExpc3QqIGltcCA9IFY4U3R5bGVTaGVldExpc3Q6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwogICAgIEhUTUxTdHlsZUVsZW1lbnQqIGl0ZW0gPSBpbXAtPmdldE5hbWVk
SXRlbSh0b1dlYkNvcmVTdHJpbmcobmFtZSkpOwogICAgIGlmICghaXRlbSkKLSAgICAgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIAogICAgIHJldHVybiB0b1Y4KGl0ZW0tPnNoZWV0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0K
</data>
<flag name="commit-queue"
          id="166833"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157056</attachid>
            <date>2012-08-07 17:39:26 -0700</date>
            <delta_ts>2012-08-07 22:02:53 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93215-20120808093901.patch</filename>
            <type>text/plain</type>
            <size>35762</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmZGFmNzc0YzVmMmRm
ZjdkOTUwZTA3OTc2MTA3ZWRmZWE4MGU0Yy4uMTJiOGFkZjhlOTY0OTAwMzE1YjdlMzQzZTcwNDgw
OTYwNjQyZGViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA4LTA1ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlcGxhY2Ug
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCkgaW4gY3VzdG9tIGJpbmRpbmdzIHdpdGggdjhVbmRlZmlu
ZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMy
MTUKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBXZSBzaG91
bGQgdXNlIHY4VW5kZWZpbmVkKCkgZXZlcnl3aGVyZSBpbiBWOCBiaW5kaW5ncy4KKworICAgICAg
ICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOENTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZFByb3BlcnR5U2V0dGVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6dHJhY2VDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOENvbnNvbGU6OmFzc2VydENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29s
ZTo6cHJvZmlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6cHJvZmls
ZUVuZENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01TdHJpbmdN
YXBDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01TdHJpbmdNYXA6Om5hbWVkUHJv
cGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0
dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3OjpzZXRJbnQ4Q2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6c2V0VWludDhDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZl
bnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnlDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpWOERpcmVjdG9yeUVudHJ5OjpnZXRGaWxlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldE5hbWVkSXRlbXMpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29sbGVj
dGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmFtZWRJ
dGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5
R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6OkdldE5hbWVkUHJvcGVy
dHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtRWxlbWVudDo6aW5kZXhlZFByb3Bl
cnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZvcm1FbGVtZW50OjpuYW1lZFBy
b3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVT
ZXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEZyYW1lU2V0RWxl
bWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjppbmRleGVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5wT2JqZWN0TmFtZWRHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bnBP
YmplY3ROYW1lZFNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpucE9iamVjdEluZGV4ZWRHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6bnBPYmplY3RJbmRleGVkU2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEhUTUxTZWxlY3RFbGVtZW50OjppbmRleGVkUHJvcGVydHlHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlcGxhY2VBY2Nlc3NvckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpWOExvY2F0aW9uOjphc3NpZ25BY2Nlc3NvckdldHRlcik6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4TmFtZWROb2RlTWFwOjppbmRleGVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VjhOYW1lZE5vZGVNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4Tm9kZUxpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNW
R0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHNDYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U3RvcmFnZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpz
dG9yYWdlR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4U3RvcmFnZTo6bmFtZWRQcm9wZXJ0
eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpzdG9yYWdlU2V0dGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOFN0eWxlU2hlZXRMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKwogMjAxMi0w
OC0wNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF0gUmVtb3ZlIFBsYXRmb3JtVG91Y2hFdmVudEVmbCBhbmQgUGxhdGZvcm1Ub3VjaFBvaW50RWZs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCmluZGV4IGFmMjM3NWY3Yzc2MTgwNzhk
MGZkN2UwZDY2NDYyYjc5Y2E0MmY2ZGUuLmUzZmE4MDhjMDg3NjA5NzUzZjcxMGVmZmE5ZWI2ZWQz
YjJmZGU5MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOENTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC0xOTUsMTQg
KzE5NSwxNCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDU1NTdHlsZURlY2xhcmF0aW9uOjpu
YW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgIElOQ19TVEFUUygiRE9NLkNT
U1N0eWxlRGVjbGFyYXRpb24uTmFtZWRQcm9wZXJ0eUdldHRlciIpOwogICAgIC8vIEZpcnN0IGxv
b2sgZm9yIEFQSSBkZWZpbmVkIGF0dHJpYnV0ZXMgb24gdGhlIHN0eWxlIGRlY2xhcmF0aW9uIG9i
amVjdC4KICAgICBpZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0
eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAg
ICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIC8vIFNlYXJjaCB0aGUgc3R5bGUgZGVjbGFy
YXRpb24uCiAgICAgQ1NTUHJvcGVydHlJbmZvKiBwcm9wSW5mbyA9IGNzc1Byb3BlcnR5SW5mbyhu
YW1lKTsKIAogICAgIC8vIERvIG5vdCBoYW5kbGUgbm9uLXByb3BlcnR5IG5hbWVzLgogICAgIGlm
ICghcHJvcEluZm8pCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBp
bXAgPSBWOENTU1N0eWxlRGVjbGFyYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAg
IFJlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUgPSBpbXAtPmdldFByb3BlcnR5Q1NTVmFsdWVJbnRl
cm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSW5mby0+cHJvcElEKSk7CkBAIC0y
MjgsNyArMjI4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6bmFtZWRQcm9wZXJ0eVNldHRlcih2ODo6TG9jYWw8djg6OlMKICAgICBDU1NTdHlsZURlY2xh
cmF0aW9uKiBpbXAgPSBWOENTU1N0eWxlRGVjbGFyYXRpb246OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIENTU1Byb3BlcnR5SW5mbyogcHJvcEluZm8gPSBjc3NQcm9wZXJ0eUluZm8obmFt
ZSk7CiAgICAgaWYgKCFwcm9wSW5mbykKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZh
bHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIFN0cmluZyBwcm9w
ZXJ0eVZhbHVlID0gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayh2YWx1ZSk7CiAgICAgaWYg
KHByb3BJbmZvLT5oYWRQaXhlbE9yUG9zUHJlZml4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAppbmRleCAyYmQyYmYxZjA5
MTNjOTBlYzJlODUzMGNmNTYzNGFjMzQ0YzU2MzQ0Li5kOGE5YjFmZjI4OWYxNDk2MWFiNjYyMDQ0
NDFmMDRlNTQ2YTc3MDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlw
dENhbGxTdGFjayhTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpKTsK
ICAgICBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoY3JlYXRlU2NyaXB0
QXJndW1lbnRzKGFyZ3MsIDApKTsKICAgICBpbXAtPnRyYWNlKHNjcmlwdEFyZ3VtZW50cy5yZWxl
YXNlKCksIGNhbGxTdGFjayk7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhD
b25zb2xlOjphc3NlcnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtNjAs
NyArNjAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjphc3NlcnRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGJvb2wgY29uZGl0aW9uID0gYXJnc1sw
XS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJn
dW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAxKSk7CiAgICAgaW1wLT5hc3NlcnRD
b25kaXRpb24oc2NyaXB0QXJndW1lbnRzLnJlbGVhc2UoKSwgY2FsbFN0YWNrLCBjb25kaXRpb24p
OwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpAQCAtNzMsNyAr
NzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKICAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVy
PFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz4sIHRpdGxlLCBhcmdzWzBdKTsKICAgICBpbXAtPnBy
b2ZpbGUodGl0bGUsIFNjcmlwdFN0YXRlOjpjdXJyZW50KCksIGNhbGxTdGFjayk7Ci0gICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
fQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTg1LDcgKzg1LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUVuZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgU1RSSU5HX1RP
X1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVkT3JO
dWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7CiAgICAgaW1wLT5wcm9maWxlRW5kKHRpdGxlLCBT
Y3JpcHRTdGF0ZTo6Y3VycmVudCgpLCBjYWxsU3RhY2spOwotICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01TdHJpbmdN
YXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcAppbmRleCBlNWRkM2MwNzQzYmE4M2Y2N2MyZDU2ZTcyNGE4NWViMDdm
NTZlNTg4Li41YjQ4YTVhZTE0NTZjZWU2YjIyYTdlNGFkMDIwNDcyY2M0NTYwYjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01TdHJpbmdNYXBDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVN0cmlu
Z01hcEN1c3RvbS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NU3RyaW5nTWFwOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgog
ICAgIElOQ19TVEFUUygiRE9NLkRPTVN0cmluZ01hcC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAg
ICAgU3RyaW5nIHZhbHVlID0gVjhET01TdHJpbmdNYXA6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
LT5pdGVtKHRvV2ViQ29yZVN0cmluZyhuYW1lKSk7CiAgICAgaWYgKHZhbHVlLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogICAgIHJldHVybiB2OFN0cmluZ09yVW5kZWZpbmVkKHZhbHVlLCBpbmZv
LkdldElzb2xhdGUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDUxYmY0MGM4NGM4OTU1NjMz
YmM1N2I5ZmE1MjY5NTI4NTMxNjE5NTQuLmJlNTlmZjBkODFlYjhhNDUzNDRjZjAyODg2MzYwMjRm
MzZkNTliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDcxLDE3ICs0NzEsMTcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3Qg
aW5kZXgsIGNvbnN0IHYKIAogICAgIERPTVdpbmRvdyogd2luZG93ID0gVjhET01XaW5kb3c6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAgIGlmICghd2luZG93KQotICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
CiAgICAgRnJhbWUqIGZyYW1lID0gd2luZG93LT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiAKICAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5zY29wZWRD
aGlsZChpbmRleCk7CiAgICAgaWYgKGNoaWxkKQogICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+
ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIAotICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKKyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogCkBAIC00OTEs
MTIgKzQ5MSwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkUHJv
cGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogCiAgICAgRE9NV2luZG93KiB3
aW5kb3cgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgaWYgKCF3
aW5kb3cpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmZyYW1l
KCk7CiAgICAgLy8gd2luZG93IGlzIGRldGFjaGVkIGZyb20gYSBmcmFtZS4KICAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgLy8gU2VhcmNoIHN1Yi1mcmFtZXMuCiAgICAgQXRv
bWljU3RyaW5nIHByb3BOYW1lID0gdjhWYWx1ZVRvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKTsK
QEAgLTUwNiw3ICs1MDYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5h
bWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogCiAgICAgLy8gU2Vh
cmNoIElETCBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgcHJvdG90eXBlCiAgICAgaWYgKCFpbmZv
LkhvbGRlcigpLT5HZXRSZWFsTmFtZWRQcm9wZXJ0eShuYW1lKS5Jc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiAKICAgICAvLyBTZWFyY2ggbmFtZWQgaXRlbXMgaW4gdGhlIGRvY3VtZW50LgogICAg
IERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHY4
OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3
Q3VzdG9tLmNwcAppbmRleCA2MGYyNjE1ZWQyN2Y4OTUxOTA2NzcwZGQzMzlmMDc1MmRhMGZiNzky
Li45MzJkNjYwZWVkNTM0ODVkOWJjMjc5NGNkYTIxMjhlN2UyZGEyMmE5IDEwMDc1NQotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3Bw
CkBAIC0xMDYsNyArMTA2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNl
dEludDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGltcC0+c2V0SW50
OChieXRlT2Zmc2V0LCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHZhbHVlKSwgZWMpOwogICAgIGlmIChV
TkxJS0VMWShlYykpCiAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7
CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERhdGFWaWV3OjpzZXRVaW50OENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBA
IC0xMjIsNyArMTIyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OnNldFVp
bnQ4Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpbXAtPnNldFVpbnQ4
KGJ5dGVPZmZzZXQsIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZhbHVlKSwgZWMpOwogICAgIGlmIChV
TkxJS0VMWShlYykpCiAgICAgICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7
CisgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1v
dGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCBjMzdmNTlmYjIzZDdmNzNhMDAzMjU3
MzM2NGZmMTY2OGM4NjM0MWMwLi42MTBhMzRiZGM1MTI1NjllNDZkYWEyMjNhYzZhMmI0Y2MwNmE2
YTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZp
Y2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rp
b25FdmVudENhbGxiYWNrKGNvbnN0IHYKICAgICBkb3VibGUgaW50ZXJ2YWwgPSBhcmdzWzZdLT5O
dW1iZXJWYWx1ZSgpOwogICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhPiBkZXZpY2VNb3Rpb25E
YXRhID0gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKGFjY2VsZXJhdGlvbiwgYWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgcm90YXRpb25SYXRlLCBpbnRlcnZhbFByb3ZpZGVkLCBpbnRlcnZh
bCk7CiAgICAgaW1wLT5pbml0RGV2aWNlTW90aW9uRXZlbnQodHlwZSwgYnViYmxlcywgY2FuY2Vs
YWJsZSwgZGV2aWNlTW90aW9uRGF0YS5nZXQoKSk7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IDc5
NDI4MzFmYmQ1ZjZhODliNGI3ODIwMzQyNzk3NjFlZTViZWFjNTguLjEyODMwMjQzOTc5ZmY1YTM1
MTQ2YWMwZTA0NzQyZWU3ZTE2NmJkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwCkBAIC05NCw3ICs5NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmlj
ZU9yaWVudGF0aW9uRXZlbnQ6OmluaXREZXZpY2VPcmllbnRhdGlvbkV2ZW50Q2FsbGJhCiAgICAg
Ym9vbCBhYnNvbHV0ZSA9IGFyZ3NbNl0tPkJvb2xlYW5WYWx1ZSgpOwogICAgIFJlZlB0cjxEZXZp
Y2VPcmllbnRhdGlvbkRhdGE+IG9yaWVudGF0aW9uID0gRGV2aWNlT3JpZW50YXRpb25EYXRhOjpj
cmVhdGUoYWxwaGFQcm92aWRlZCwgYWxwaGEsIGJldGFQcm92aWRlZCwgYmV0YSwgZ2FtbWFQcm92
aWRlZCwgZ2FtbWEsIGFic29sdXRlUHJvdmlkZWQsIGFic29sdXRlKTsKICAgICBpbXAtPmluaXRE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50KHR5cGUsIGJ1YmJsZXMsIGNhbmNlbGFibGUsIG9yaWVudGF0
aW9uLmdldCgpKTsKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVudHJ5Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERpcmVjdG9yeUVu
dHJ5Q3VzdG9tLmNwcAppbmRleCA5YzRmZDE0OGI5ZjBlMmMzOGU4NTQ5OTE2MDBjMDRjMjM3OWFm
MGNiLi5lNzgxOWIxZTJlYTBmODRlMWM1MTE2Njc1MWEwZDNkZTk5OWQ3NmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEaXJlY3RvcnlFbnRyeUN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGlyZWN0b3J5
RW50cnlDdXN0b20uY3BwCkBAIC01NSw3ICs1NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERpcmVjdG9yeUVudHJ5OjpnZXREaXJlY3RvcnlDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
CiAgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxX
aXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCBwYXRoLCBhcmdzWzBdKTsKICAgICBpZiAoYXJncy5M
ZW5ndGgoKSA8PSAxKSB7CiAgICAgICAgIGltcC0+Z2V0RGlyZWN0b3J5KHBhdGgpOwotICAgICAg
ICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIH0KICAgICBSZWZQdHI8V2ViS2l0RmxhZ3M+IGZsYWdzOwogICAgIGlmICgh
aXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkgJiYgYXJnc1sxXS0+SXNPYmplY3QoKSkgewpAQCAt
ODUsNyArODUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0
RGlyZWN0b3J5Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgICAgICBlcnJvckNhbGxi
YWNrID0gVjhFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1szXSwgZ2V0U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICB9CiAgICAgaW1wLT5nZXREaXJlY3RvcnkocGF0aCwgZmxhZ3MsIHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCkBAIC05OSw3ICs5OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERp
cmVjdG9yeUVudHJ5OjpnZXRGaWxlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAg
ICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjxXaXRo
VW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCBwYXRoLCBhcmdzWzBdKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8PSAxKSB7CiAgICAgICAgIGltcC0+Z2V0RmlsZShwYXRoKTsKLSAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
ICAgICB9CiAgICAgUmVmUHRyPFdlYktpdEZsYWdzPiBmbGFnczsKICAgICBpZiAoIWlzVW5kZWZp
bmVkT3JOdWxsKGFyZ3NbMV0pICYmIGFyZ3NbMV0tPklzT2JqZWN0KCkpIHsKQEAgLTEyOSw3ICsx
MjksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZUNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgICAgICBlcnJvckNhbGxiYWNrID0g
VjhFcnJvckNhbGxiYWNrOjpjcmVhdGUoYXJnc1szXSwgZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKTsKICAgICB9CiAgICAgaW1wLT5nZXRGaWxlKHBhdGgsIGZsYWdzLCBzdWNjZXNzQ2FsbGJh
Y2ssIGVycm9yQ2FsbGJhY2spOwotICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsK
KyAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3Rv
bS5jcHAKaW5kZXggMGM4M2ZiNTM0MTdlN2RlYTkwMDdjM2MyZGNhZGMwZTU1NmY3N2NkOS4uNTMy
ZTI1N2FjNzdlZmYxZjUwY2E1OGNjYzljZWRmOGI3MzdjMWNlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxBbGxDb2xsZWN0
aW9uQ3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGdldE5hbWVkSXRlbXMoSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIEF0b21pYwog
ICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAKICAgICBpZiAo
IW5hbWVkSXRlbXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgaWYgKG5hbWVkSXRlbXMu
c2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQoMCkucmVsZWFz
ZSgpLCBpc29sYXRlKTsKQEAgLTc2LDkgKzc2LDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SFRNTEFsbENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIK
ICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQWxsQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5R2V0dGVy
Iik7CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90
b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgaWYgKGluZm8u
SG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCi0gICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKICAgICBIVE1MQWxsQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB2
OFZhbHVlVG9BdG9taWNXZWJDb3JlU3RyaW5nKG5hbWUpLCBpbmZvLkdldElzb2xhdGUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVj
dGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
Q29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggN2E2ZjdiOTViZGZmNjA4NmFkZWQyZDQ5NTNlYWRj
OGE1OTM1YjQ3MS4uMzgwMmJiM2VjNmJiMmE1ZjQ5YTQ0MGRmODFiYjg5YzIyOWU0MzhjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rp
b25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIEF0
b21pY1N0cgogICAgIGNvbGxlY3Rpb24tPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CiAK
ICAgICBpZiAoIW5hbWVkSXRlbXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2
ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgaWYgKG5h
bWVkSXRlbXMuc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVybiB0b1Y4KG5hbWVkSXRlbXMuYXQo
MCkucmVsZWFzZSgpLCBpc29sYXRlKTsKQEAgLTY1LDkgKzY1LDkgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmcKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MQ29sbGVjdGlvbi5OYW1lZFByb3BlcnR5
R2V0dGVyIik7CiAKICAgICBpZiAoIWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5
SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgaWYg
KGluZm8uSG9sZGVyKCktPkhhc1JlYWxOYW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCi0gICAg
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQ29sbGVjdGlvbjo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB2
OFZhbHVlVG9BdG9taWNXZWJDb3JlU3RyaW5nKG5hbWUpLCBpbmZvLkdldElzb2xhdGUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAppbmRleCAyZmNjNTgxZjliM2MwYTJkYTFiMjkwZTA3ZjUxY2VjOWQ2
MjMyYzVkLi5jMjE1MGEwZmIyZmM1NjFjYjI4YjdhZjNiN2VkZWM5ZjU4MTFhN2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAKQEAgLTgzLDExICs4MywxMSBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4g
VjhIVE1MRG9jdW1lbnQ6OldyYXBJblNoYWRvd09iamVjdCh2ODo6TG9jYWw8djg6Ok9iamVjdD4g
dwogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5
KEhUTUxEb2N1bWVudCogaHRtbERvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCFodG1sRG9jdW1lbnQtPmhhc05hbWVkSXRl
bShrZXkuaW1wbCgpKSAmJiAhaHRtbERvY3VtZW50LT5oYXNFeHRyYU5hbWVkSXRlbShrZXkuaW1w
bCgpKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIFJlZlB0cjxIVE1MQ29sbGVjdGlvbj4gaXRlbXMg
PSBodG1sRG9jdW1lbnQtPmRvY3VtZW50TmFtZWRJdGVtcyhrZXkpOwogICAgIGlmIChpdGVtcy0+
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAg
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgaWYgKGl0ZW1zLT5oYXNFeGFjdGx5T25l
SXRlbSgpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBpdGVtcy0+aXRlbSgwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVs
ZW1lbnRDdXN0b20uY3BwCmluZGV4IDFjOTU2M2QwZDBjNThjMGY1OTAyOTI2MWM1ZjRlYzUyZDNi
NzM4YTMuLmJlYzAyMGQ5NWY4NGM0OWE2NzllZjczZjY4ZDliZTQ4OTVhOTVlZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZv
cm1FbGVtZW50Q3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MRm9ybUVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRl
eCwgYwogCiAgICAgUmVmUHRyPE5vZGU+IGZvcm1FbGVtZW50ID0gZm9ybS0+ZWxlbWVudHMoKS0+
aXRlbShpbmRleCk7CiAgICAgaWYgKCFmb3JtRWxlbWVudCkKLSAgICAgICAgcmV0dXJuIHY4OjpI
YW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKICAgICBy
ZXR1cm4gdG9WOChmb3JtRWxlbWVudC5yZWxlYXNlKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0K
IApAQCAtNjUsNyArNjUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUVsZW1l
bnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbgogICAgICAgICBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4gZWxlbWVudHM7CiAgICAgICAgIGltcC0+Z2V0TmFtZWRFbGVtZW50
cyh2LCBlbGVtZW50cyk7CiAgICAgICAgIGlmIChlbGVtZW50cy5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKICAgICB9CiAKICAgICAvLyBTZWNvbmQgY2FsbCBtYXkgcmV0dXJuIGRp
ZmZlcmVudCByZXN1bHRzIGZyb20gdGhlIGZpcnN0IGNhbGwsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1l
bnRDdXN0b20uY3BwCmluZGV4IDk3NTc0Y2VhYjNjZjY0MDhkY2FiOGI3NDgzNjkyOWQ5NTk4MGU1
NmEuLjUxOWUwMTVmNzgxNGIzY2QxZTEwMWJjYzIxYmU0YjRmZDM2MjRmNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGcmFtZVNldEVsZW1lbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxG
cmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2MtPmZyYW1lKCkpCiAgICAg
ICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGluZm8uR2V0SXNvbGF0ZSgp
KTsKICAgICB9Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIHJldHVy
biB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA2MWVmYTQ0ZjJlNWUwMzgyMzFjYTVlYjdm
NThmZTQ0ZGRmNmQ0YjM5Li45MDMwYjUxMmQ3ZDE2MzM0NWRhM2IzYTE0NzEwYjhlYTJmY2FjNGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTExOSw3ICsxMTks
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmluZGV4
ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbgogCiAgICAgUmVmUHRyPE5vZGU+IHJlc3VsdCA9
IGNvbGxlY3Rpb24tPml0ZW0oaW5kZXgpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogCiAgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5HZXRJc29sYXRlKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTFBsdWdJbkVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDRiMTRmMjA3ZTA3YWIyZDcx
OGFhOTg2N2Y1NDg1ZDUxODcxYjI2NTkuLjQwNjYzMjU3NGRlMTgxMTU5ZDU2OTllZDBkNGU2ODdl
YmIzOWNlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxQbHVnSW5FbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MUGx1Z0luRWxlbWVudEN1c3RvbS5jcHAKQEAgLTUwLDExICs1MCwx
MSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0TmFtZWRHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbgogICAgIEhUTUxQbHVnSW5FbGVtZW50KiBpbXAg
PSBDOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRJbnN0YW5jZSBzY3JpcHRJ
bnN0YW5jZSA9IGltcC0+Z2V0SW5zdGFuY2UoKTsKICAgICBpZiAoIXNjcmlwdEluc3RhbmNlKQot
ICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNlID0gdjg6
OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc2NyaXB0SW5zdGFuY2UtPmluc3RhbmNlKCkpOwogICAg
IGlmIChpbnN0YW5jZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1cm4gbnBP
YmplY3RHZXROYW1lZFByb3BlcnR5KGluc3RhbmNlLCBuYW1lLCBpbmZvKTsKIH0KQEAgLTY1LDEx
ICs2NSwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5wT2JqZWN0TmFtZWRTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OgogICAgIEhUTUxQbHVnSW5FbGVtZW50
KiBpbXAgPSBDOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBTY3JpcHRJbnN0YW5jZSBz
Y3JpcHRJbnN0YW5jZSA9IGltcC0+Z2V0SW5zdGFuY2UoKTsKICAgICBpZiAoIXNjcmlwdEluc3Rh
bmNlKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGluc3RhbmNl
ID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc2NyaXB0SW5zdGFuY2UtPmluc3RhbmNlKCkp
OwogICAgIGlmIChpbnN0YW5jZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICByZXR1
cm4gbnBPYmplY3RTZXROYW1lZFByb3BlcnR5KGluc3RhbmNlLCBuYW1lLCB2YWx1ZSwgaW5mbyk7
CiB9CkBAIC0xMzUsMTEgKzEzNSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RJ
bmRleGVkR2V0dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbgogICAgIEhU
TUxQbHVnSW5FbGVtZW50KiBpbXAgPSBDOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBT
Y3JpcHRJbnN0YW5jZSBzY3JpcHRJbnN0YW5jZSA9IGltcC0+Z2V0SW5zdGFuY2UoKTsKICAgICBp
ZiAoIXNjcmlwdEluc3RhbmNlKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGluc3RhbmNlID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcoc2NyaXB0SW5zdGFu
Y2UtPmluc3RhbmNlKCkpOwogICAgIGlmIChpbnN0YW5jZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKICAgICByZXR1cm4gbnBPYmplY3RHZXRJbmRleGVkUHJvcGVydHkoaW5zdGFuY2UsIGlu
ZGV4LCBpbmZvKTsKIH0KQEAgLTE1MSwxMSArMTUxLDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBucE9iamVjdEluZGV4ZWRTZXR0ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+CiAgICAgSFRNTFBsdWdJbkVsZW1lbnQqIGltcCA9IEM6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogICAgIFNjcmlwdEluc3RhbmNlIHNjcmlwdEluc3RhbmNlID0gaW1wLT5nZXRJbnN0YW5j
ZSgpOwogICAgIGlmICghc2NyaXB0SW5zdGFuY2UpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFuY2UgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46Ok5ldyhz
Y3JpcHRJbnN0YW5jZS0+aW5zdGFuY2UoKSk7CiAgICAgaWYgKGluc3RhbmNlLklzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4g
djhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiBucE9iamVjdFNldEluZGV4ZWRQcm9wZXJ0eShp
bnN0YW5jZSwgaW5kZXgsIHZhbHVlLCBpbmZvKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9t
LmNwcAppbmRleCAwMTViZTNhMGM2MjIxYjE0NjU4NjgzNDUwODc3MmEzMDI5NTVhMDMxLi43MTQ3
M2M1NmNkZThiODk2M2FhYTM4ZDM3ZDBjNTk5M2RkYmYyOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1l
bnRDdXN0b20uY3BwCkBAIC01MSw3ICs1MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxTZWxlY3RFbGVtZW50OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsCiAg
ICAgQVNTRVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKGluZm8uSG9sZGVyKCkpKTsK
ICAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gVjhIVE1MU2VsZWN0RWxlbWVudDo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSktPml0ZW0oaW5kZXgpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICBy
ZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVuZGVmaW5l
ZCgpOwogCiAgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5HZXRJc29sYXRl
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TG9jYXRpb25DdXN0b20uY3BwCmluZGV4IGNlNjg5ODU3NDQ1NTQwMzIxMDdjZWMxNDk0MGM0M2Y3
NTA4YjFiZmMuLjUxOTI1NjNkNzJlZmM1ZThmZWUwYTI5ZjMzZDQxYWQwNzgxODVmNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1
c3RvbS5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFY4TG9jYXRpb246OnNlYXJjaEFjY2Vz
c29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6Ogogdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIElOQ19TVEFUUygiRE9NLkxvY2F0aW9uLnJlbG9hZC5fZ2V0Iik7Ci0gICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
KSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7Cisg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVt
cGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3Vw
RE9NV3JhcHBlcihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CiAgICAg
aWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBi
eSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAgLTE1Nyw3
ICsxNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQWNjZXNz
b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIH0KICAgICBMb2NhdGlvbiog
aW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwg
aW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7
CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hh
cmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrLCB2OFVu
ZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUo
KSkpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAg
IH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTY2LDcg
KzE2Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3Nv
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9N
LkxvY2F0aW9uLnJlcGxhY2UuX2dldCIpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9u
OjpyZXBsYWNlQ2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0
dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOExv
Y2F0aW9uOjpHZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0Vt
cHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJv
dG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAgLTE3NSw3ICsxNzUsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUFjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlv
bjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBE
b05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9j
YXRpb246OnJlcGxhY2VDYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgICAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0g
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOwogICAgICAg
ICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVy
biBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CkBAIC0xODUsNyArMTg1LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbkFjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW0KIHsKICAgICBJTkNfU1RBVFMoIkRPTS5Mb2NhdGlvbi5hc3Np
Z24uX2dldCIpOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcHJpdmF0ZVRlbXBsYXRlID0KLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3Np
Z25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCksIHY4OjpTaWduYXR1cmU6Ok5ldyhW
OExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZSgpKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9j
YXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXco
VjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOExvY2F0aW9uOjpH
ZXRUZW1wbGF0ZSgpLCBpbmZvLlRoaXMoKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5j
JywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAgLTE5NCw3ICsxOTQsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbQogICAgIH0KICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRp
dmUoaG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9y
dFNlY3VyaXR5RXJyb3IpKSB7Ci0gICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OmFz
c2lnbkNhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgdjg6OlNpZ25hdHVyZTo6TmV3
KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKCkpKSk7CisgICAgICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFY4TG9jYXRpb246OmFzc2lnbkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoKSkpKTsKICAgICAgICAgcmV0dXJuIHNo
YXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggNzE1MDkyZmFl
YzQ5ZGI5MTU1NWQ1MWNmZWJjZmY3YTRhNWIxNjk2ZC4uNmJkMmEwNWIxOWFlOTI4YjhjODQzYmYw
NzlhZjY2ZDE2OWI5MjEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TmFtZWROb2RlTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOYW1lZE5vZGVNYXBDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hbWVkTm9kZU1hcDo6aW5kZXhlZFByb3BlcnR5R2V0
dGVyKHVpbnQzMl90IGluZGV4LCBjb25zCiAgICAgTmFtZWROb2RlTWFwKiBpbXAgPSBWOE5hbWVk
Tm9kZU1hcDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPE5vZGU+IHJlc3Vs
dCA9IGltcC0+aXRlbShpbmRleCk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAK
ICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9
CkBAIC01OSwxNCArNTksMTQgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TmFtZWROb2RlTWFw
OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIElOQ19TVEFU
UygiRE9NLk5hbWVkTm9kZU1hcC5OYW1lZFByb3BlcnR5R2V0dGVyIik7CiAKICAgICBpZiAoIWlu
Zm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1lKS5J
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAg
ICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgaWYgKGluZm8uSG9sZGVyKCktPkhhc1JlYWxO
YW1lZENhbGxiYWNrUHJvcGVydHkobmFtZSkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKICAgICBOYW1lZE5v
ZGVNYXAqIGltcCA9IFY4TmFtZWROb2RlTWFwOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAg
ICBSZWZQdHI8Tm9kZT4gcmVzdWx0ID0gaW1wLT5nZXROYW1lZEl0ZW0odG9XZWJDb3JlU3RyaW5n
KG5hbWUpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIHJldHVybiB0
b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcApp
bmRleCA5ZTFiZTlhZGVhYzkxNzAzZGIwYjU4NjE0YTRjZmEzMWZiYmVmNTM2Li42ODFmZTQ5ZDFl
YjFlODU4NDg2NTk2ZTU5YzhkMzY3MDFlMzZiY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lCiAKICAgICBSZWZQdHI8Tm9kZT4gcmVzdWx0
ID0gbGlzdC0+aXRlbVdpdGhOYW1lKGtleSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7CiAKICAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBpbmZvLkdldElzb2xhdGUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
VkdMZW5ndGhDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHTGVuZ3RoQ3VzdG9tLmNwcAppbmRleCAzN2FkMjdiN2QwMDdjOTg5Yzg0MTY5OWMwMDYxMjQw
ODEzOTQ0MWNhLi5hOGFhMGEyMmVkODI2NzNmNGUwMzI0NWZkZGU2OGFkOTQyY2VlOWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0
aEN1c3RvbS5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1ZH
TGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmcKICAg
ICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRl
KCkpOwogCiAgICAgd3JhcHBlci0+Y29tbWl0Q2hhbmdlKCk7Ci0gICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFN0b3JhZ2VDdXN0b20uY3BwCmluZGV4IDg5Mzk2YTMwY2YxOWVlNzYyOGMxNTZhNmFk
MDBlODZmMzMwNmQyMjUuLjI2NTk5MmI3ZWE2NWNlNGNkOWY3MDU4ZGE0NmU5MDk5ODA3YTdmOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3JhZ2VD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0b3Jh
Z2VDdXN0b20uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3RvcmFnZUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gdjhOYW1lLCBjb25zdCB2CiAg
ICAgaWYgKG5hbWUgIT0gImxlbmd0aCIgJiYgc3RvcmFnZS0+Y29udGFpbnMobmFtZSkpCiAgICAg
ICAgIHJldHVybiB2OFN0cmluZyhzdG9yYWdlLT5nZXRJdGVtKG5hbWUpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiAKLSAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFN0b3JhZ2U6Omlu
ZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKQEAgLTc1LDcgKzc1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U3RvcmFn
ZTo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKIHsKICAg
ICBJTkNfU1RBVFMoIkRPTS5TdG9yYWdlLk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKICAgICBpZiAo
IWluZm8uSG9sZGVyKCktPkdldFJlYWxOYW1lZFByb3BlcnR5SW5Qcm90b3R5cGVDaGFpbihuYW1l
KS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgcmV0dXJuIHN0b3JhZ2VHZXR0ZXIobmFt
ZSwgaW5mbyk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN0b3JhZ2VTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IHY4TmFtZSwgdjg6Okxv
YwogICAgICAgICByZXR1cm4gdjhWYWx1ZTsKIAogICAgIGlmICghaW5mby5Ib2xkZXIoKS0+R2V0
UmVhbE5hbWVkUHJvcGVydHlJblByb3RvdHlwZUNoYWluKHY4TmFtZSkuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAgIHJldHVybiB2OFVu
ZGVmaW5lZCgpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgc3RvcmFnZS0+c2V0
SXRlbShuYW1lLCB2YWx1ZSwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwCmluZGV4IDg3OTQ0
OTA0M2RkYjU2MDc1MGE5OTU1ZDUyMjQ0NDU4Yzg3Yzk3YmEuLmM0ZTgyYmIwODc4NjI3MWNkMzQz
M2QwNTYxMTI3YzJiYjM4Mzg2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAKQEAgLTQ0LDEz
ICs0NCwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdHlsZVNoZWV0TGlzdDo6bmFtZWRQ
cm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZwogICAgIElOQ19TVEFUUygiRE9NLlN0
eWxlU2hlZXRMaXN0Lk5hbWVkUHJvcGVydHlHZXR0ZXIiKTsKIAogICAgIGlmIChpbmZvLkhvbGRl
cigpLT5IYXNSZWFsTmFtZWRQcm9wZXJ0eShuYW1lKSkKLSAgICAgICAgcmV0dXJuIHY4OjpIYW5k
bGU8djg6OlZhbHVlPigpOworICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIC8v
IFNlYXJjaCBzdHlsZSBzaGVldC4KICAgICBTdHlsZVNoZWV0TGlzdCogaW1wID0gVjhTdHlsZVNo
ZWV0TGlzdDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgSFRNTFN0eWxlRWxlbWVudCog
aXRlbSA9IGltcC0+Z2V0TmFtZWRJdGVtKHRvV2ViQ29yZVN0cmluZyhuYW1lKSk7CiAgICAgaWYg
KCFpdGVtKQotICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogCiAgICAgcmV0dXJuIHRvVjgoaXRlbS0+c2hlZXQoKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>