<?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>196060</bug_id>
          
          <creation_ts>2019-03-20 23:30:02 -0700</creation_ts>
          <short_desc>Stop using LegacySync messages in WebPasteboardProxy</short_desc>
          <delta_ts>2019-03-21 14:04:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1519497</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-20 23:30:02 -0700</bug_when>
    <thetext>Stop using LegacySync messages in WebPasteboardProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519498</commentid>
    <comment_count>1</comment_count>
      <attachid>365495</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-20 23:30:13 -0700</bug_when>
    <thetext>Created attachment 365495
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519509</commentid>
    <comment_count>2</comment_count>
      <attachid>365502</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-20 23:48:47 -0700</bug_when>
    <thetext>Created attachment 365502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519664</commentid>
    <comment_count>3</comment_count>
      <attachid>365553</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-21 09:08:06 -0700</bug_when>
    <thetext>Created attachment 365553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519920</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-21 14:03:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/r243325</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519921</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-21 14:04:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/49123050&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365495</attachid>
            <date>2019-03-20 23:30:13 -0700</date>
            <delta_ts>2019-03-20 23:48:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196060-20190320233012.patch</filename>
            <type>text/plain</type>
            <size>37658</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE5LTAzLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBM
ZWdhY3lTeW5jIG1lc3NhZ2VzIGluIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MDYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnBhc3RlYm9h
cmRDb3B5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkQ2hhbmdlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRVbmlxdWVOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OmdldFBhc3RlYm9hcmRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OmFkZFBhc3RlYm9hcmRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9t
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9X
ZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlVG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OnJlYWRGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlBh
c3RlYm9hcmRQcm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgorCiAyMDE5
LTAzLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21w
dXRlIHF1b3RhIGFmdGVyIG5ldHdvcmsgcHJvY2VzcyByZXN0YXJ0IGJhc2VkIG9uIGRlZmF1bHQg
cXVvdGEgYW5kIHNwYWNlIHVzZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
c3RlYm9hcmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
MTQgKzYzLDE0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZW1vdmVXZWJQcm9jZXMKIAog
I2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHR5cGVzID0geyB9OworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291
bnQgPSAwOworICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCShyZXZpc2lvbiAy
NDMxODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNTAgKzczLDUwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0
ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lkIHdyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB1
cmwsIFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KTsKLSAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbyYgZmlsZW5hbWUpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Cisg
ICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJik7CiAgICAgdm9pZCB1cGRh
dGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGlkZW50aWZp
ZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcyk7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJk
VHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHBhc3Rl
Ym9hcmRUeXBlcyk7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6
OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgU3RyaW5nJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgVmVj
dG9yPFN0cmluZz4mKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFNo
YXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwotICAgIHZvaWQgcGFzdGVib2Fy
ZENvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3Rl
Ym9hcmQsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCk7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJk
Q2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIGNoYW5n
ZUNvdW50KTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkVVJM
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nJik7Ci0gICAgdm9pZCBh
ZGRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KTsK
LSAgICB2b2lkIHNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCB1aW50NjRfdCYgbmV3Q2hh
bmdlQ291bnQpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRDb2xv
cihjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIHVpbnQ2NF90Jik7Ci0gICAg
dm9pZCBzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCB1aW50NjRf
dCYgbmV3Q2hhbmdlQ291bnQpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlw
ZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplLCB1aW50NjRfdCYg
bmV3Q2hhbmdlQ291bnQpOworICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGVBcnJheSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCBn
ZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90
KT4mJik7CisgICAgdm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJv
YXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1
aW50NjRfdCk+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50KGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYm
KTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkNvbG9y
JiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRVUkwoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAg
dm9pZCBhZGRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3Rl
Ym9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCYs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYm
KTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3Rl
Ym9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0
X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogI2VuZGlmCiAK
LSAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9t
RGF0YSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBuZXdDaGFuZ2VD
b3VudCk7Ci0gICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgVmVjdG9yPFN0cmluZz4m
IHR5cGVzKTsKKyAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHR5cGVzU2FmZUZvckRPTVRvUmVh
ZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKIAogI2lm
IFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViU2VsZWN0aW9uRGF0YSYpOwotICAgIHZvaWQgcmVhZEZy
b21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViU2VsZWN0aW9uRGF0
YSYpOworICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBXZWJTZWxlY3Rpb25EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHJlYWRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViU2VsZWN0aW9uRGF0YSYmKT4mJik7CiAKICAg
ICBXZWJGcmFtZVByb3h5KiBtX3ByaW1hcnlTZWxlY3Rpb25Pd25lciB7IG51bGxwdHIgfTsKICAg
ICBXZWJGcmFtZVByb3h5KiBtX2ZyYW1lV3JpdGluZ1RvQ2xpcGJvYXJkIHsgbnVsbHB0ciB9Owog
I2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIAogI2lmIFVTRShMSUJXUEUpCi0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXMoVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7Ci0gICAgdm9p
ZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIFdURjo6U3RyaW5nJik7Ci0gICAgdm9pZCB3cml0ZVdlYkNvbnRlbnRU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQmKTsKLSAgICB2
b2lkIHdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZFR5cGVzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7CisgICAgdm9pZCB3cml0ZVdl
YkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bh
c3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogCiAgICAgV2ViUHJvY2Vzc1Byb3h5
TGlzdCBtX3dlYlByb2Nlc3NQcm94eUxpc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAy
NDMxODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI2LDQ4ICsyNiw0OCBAQCBtZXNzYWdlcyAtPiBX
ZWJQYXN0ZWJvYXJkUHJveHkgewogICAgIFdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1
Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQgY29udGVudCwgU3RyaW5nIHBhc3RlYm9h
cmROYW1lKQogICAgIFdyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRJbWFnZSBwYXN0ZWJvYXJkSW1hZ2UsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBX
cml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFN0cmluZyBzdHJpbmcpIExlZ2FjeVN5bmMKLSAgICBSZWFkVVJMRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmws
IFN0cmluZyB0aXRsZSkgTGVnYWN5U3luYwotICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1
aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6
ZSkgTGVnYWN5U3luYwotICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSkgLT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIExlZ2FjeVN5bmMKLSAgICBBbGxQYXN0
ZWJvYXJkSXRlbUluZm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OlBhc3RlYm9hcmRJdGVtSW5mbz4gYWxsSW5mbykgTGVnYWN5U3luYwotICAgIEluZm9ybWF0aW9u
Rm9ySXRlbUF0SW5kZXgodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgTGVnYWN5U3luYworICAg
IFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9h
cmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgc3RyaW5nKSBEZWxheWVk
CisgICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIERlbGF5ZWQKKyAgICBSZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRs
ZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIERlbGF5ZWQKKyAgICBHZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVtc0NvdW50KSBEZWxh
eWVkCisgICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbEluZm8pIERlbGF5ZWQKKyAg
ICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvIGluZm8pIERl
bGF5ZWQKICAgICBVcGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoVmVjdG9yPFN0cmluZz4g
aWRlbnRpZmllcnMsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICNlbmRpZgogCi0gICAgV3JpdGVD
dXN0b21EYXRhKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBkYXRhLCBTdHJp
bmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5U3luYwot
ICAgIFR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nIG9yaWdpbikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBMZWdhY3lTeW5jCisgICAg
V3JpdGVDdXN0b21EYXRhKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSBkYXRh
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgRGVsYXll
ZAorICAgIFR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nIG9yaWdpbikgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBEZWxheWVkCiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAjIFBhc3RlYm9hcmQgbWVzc2FnZXMuCi0gICAgR2V0TnVt
YmVyT2ZGaWxlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZp
bGVzKSBMZWdhY3lTeW5jCi0gICAgR2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBMZWdhY3lTeW5jCi0gICAgR2V0UGFzdGVi
b2FyZFBhdGhuYW1lc0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUpIC0+IChWZWN0b3I8U3RyaW5nPiBwYXRobmFtZXMsIFdlYktpdDo6U2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lvbnMpIExlZ2FjeVN5bmMgV2FudHND
b25uZWN0aW9uCi0gICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChTdHJpbmcgc3RyaW5nKSBMZWdhY3lT
eW5jCi0gICAgR2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmluZz4gc3RyaW5ncykgTGVn
YWN5U3luYwotICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6Okhh
bmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIExlZ2FjeVN5bmMKLSAgICBQYXN0ZWJvYXJkQ29w
eShTdHJpbmcgZnJvbVBhc3RlYm9hcmQsIFN0cmluZyB0b1Bhc3RlYm9hcmQpIC0+ICh1aW50NjRf
dCBjaGFuZ2VDb3VudCkgTGVnYWN5U3luYwotICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VDb3VudChT
dHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5U3lu
YwotICAgIEdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKCkgLT4gKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgTGVnYWN5U3luYwotICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgTGVnYWN5U3luYwotICAgIEdldFBhc3RlYm9h
cmRVUkwoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybFN0cmluZykgTGVnYWN5
U3luYwotICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3Rv
cjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBlcykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBMZWdh
Y3lTeW5jCi0gICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVj
dG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIExl
Z2FjeVN5bmMKLSAgICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJk
VVJMIHBhc3RlYm9hcmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGNo
YW5nZUNvdW50KSBMZWdhY3lTeW5jIFdhbnRzQ29ubmVjdGlvbgotICAgIFNldFBhc3RlYm9hcmRD
b2xvcihTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yKSAtPiAodWlu
dDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMKLSAgICBTZXRQYXN0ZWJvYXJkU3RyaW5nRm9y
VHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5n
IHN0cmluZykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBMZWdhY3lTeW5jCi0gICAgU2V0UGFz
dGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBz
aXplKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMKKyAgICBHZXROdW1iZXJP
ZkZpbGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IG51bWJlck9mRmlsZXMp
IERlbGF5ZWQKKyAgICBHZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIERlbGF5ZWQKKyAgICBHZXRQYXN0ZWJvYXJkUGF0aG5h
bWVzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkg
LT4gKFZlY3RvcjxTdHJpbmc+IHBhdGhuYW1lcywgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGVBcnJheSBzYW5kYm94RXh0ZW5zaW9ucykgRGVsYXllZCBXYW50c0Nvbm5lY3Rpb24KKyAg
ICBHZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFN0cmluZyBzdHJpbmcpIERlbGF5ZWQKKyAgICBHZXRQYXN0
ZWJvYXJkU3RyaW5nc0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUpIC0+IChWZWN0b3I8U3RyaW5nPiBzdHJpbmdzKSBEZWxheWVkCisgICAgR2V0UGFz
dGVib2FyZEJ1ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUpIC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0
X3Qgc2l6ZSkgRGVsYXllZAorICAgIFBhc3RlYm9hcmRDb3B5KFN0cmluZyBmcm9tUGFzdGVib2Fy
ZCwgU3RyaW5nIHRvUGFzdGVib2FyZCkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBEZWxheWVk
CisgICAgR2V0UGFzdGVib2FyZENoYW5nZUNvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KHVpbnQ2NF90IGNoYW5nZUNvdW50KSBEZWxheWVkCisgICAgR2V0UGFzdGVib2FyZFVuaXF1ZU5h
bWUoKSAtPiAoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSBEZWxheWVkCisgICAgR2V0UGFzdGVib2Fy
ZENvbG9yKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYkNvcmU6OkNvbG9yIGNvbG9yKSBE
ZWxheWVkCisgICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChT
dHJpbmcgdXJsU3RyaW5nKSBEZWxheWVkCisgICAgQWRkUGFzdGVib2FyZFR5cGVzKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzKSAtPiAodWludDY0
X3QgY2hhbmdlQ291bnQpIERlbGF5ZWQKKyAgICBTZXRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBh
c3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMpIC0+ICh1aW50NjRf
dCBjaGFuZ2VDb3VudCkgRGVsYXllZAorICAgIFNldFBhc3RlYm9hcmRVUkwoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRVUkwgcGFzdGVib2FyZFVSTCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAodWludDY0X3QgY2hhbmdlQ291bnQpIERlbGF5ZWQgV2FudHNDb25uZWN0aW9uCisgICAgU2V0
UGFzdGVib2FyZENvbG9yKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6Q29sb3IgY29s
b3IpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgRGVsYXllZAorICAgIFNldFBhc3RlYm9hcmRT
dHJpbmdGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBl
LCBTdHJpbmcgc3RyaW5nKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIERlbGF5ZWQKKyAgICBT
ZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2
NF90IHNpemUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgRGVsYXllZAogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShHVEspCi0gICAgV3JpdGVUb0NsaXBib2FyZChTdHJpbmcgcGFzdGVib2FyZE5h
bWUsIHN0cnVjdCBXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGEgcGFzdGVib2FyZENvbnRlbnQpIExl
Z2FjeVN5bmMKLSAgICBSZWFkRnJvbUNsaXBib2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
IChzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25EYXRhIHBhc3RlYm9hcmRDb250ZW50KSBMZWdh
Y3lTeW5jCisgICAgV3JpdGVUb0NsaXBib2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUsIHN0cnVj
dCBXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGEgcGFzdGVib2FyZENvbnRlbnQpIC0+ICgpIERlbGF5
ZWQKKyAgICBSZWFkRnJvbUNsaXBib2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1
Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25EYXRhIHBhc3RlYm9hcmRDb250ZW50KSBEZWxheWVkCiAj
ZW5kaWYKIAogI2lmIFVTRShMSUJXUEUpCi0gICAgR2V0UGFzdGVib2FyZFR5cGVzKCkgLT4gKFZl
Y3RvcjxTdHJpbmc+IHR5cGVzKSBMZWdhY3lTeW5jCi0gICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChTdHJpbmcgc3Ry
aW5nKSBMZWdhY3lTeW5jCi0gICAgV3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBX
ZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCBjb250ZW50KSBMZWdhY3lTeW5jCi0gICAgV3Jp
dGVTdHJpbmdUb1Bhc3RlYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgdGV4dCkg
TGVnYWN5U3luYworICAgIEdldFBhc3RlYm9hcmRUeXBlcygpIC0+IChWZWN0b3I8U3RyaW5nPiB0
eXBlcykgRGVsYXllZAorICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRl
eCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoU3RyaW5nIHN0cmluZykgRGVsYXllZAorICAg
IFdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFdl
YkNvbnRlbnQgY29udGVudCkgLT4gKCkgRGVsYXllZAorICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJv
YXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQpIC0+ICgpIERlbGF5ZWQKICNl
bmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFzdGVib2Fy
ZFByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxNCArMzgsMTggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVHlw
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBWZWN0b3I8U3Ry
aW5nPiBwYXN0ZWJvYXJkVHlwZXM7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5nZXRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocGFzdGVib2FyZFR5cGVzKSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUsCi0gICAgVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1lcywgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlQXJyYXkmIHNhbmRib3hFeHRlbnNpb25zKQorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJiBwYXRobmFtZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5
JiYgc2FuZGJveEV4dGVuc2lvbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIFZlY3Rv
cjxTdHJpbmc+IHBhdGhuYW1lczsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBz
YW5kYm94RXh0ZW5zaW9uczsKICAgICBmb3IgKGF1dG8qIHdlYlByb2Nlc3NQcm94eSA6IG1fd2Vi
UHJvY2Vzc1Byb3h5TGlzdCkgewogICAgICAgICBpZiAoIXdlYlByb2Nlc3NQcm94eS0+aGFzQ29u
bmVjdGlvbihjb25uZWN0aW9uKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNjMsMTE5ICs2
NywxMTcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRQYQogICAgICAg
ICB9CiAjZW5kaWYKICAgICB9CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShwYXRobmFt
ZXMpLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25zKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcmIHN0cmluZykKK3Zv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBzdHJpbmcgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnN0cmluZ0ZvclR5
cGUocGFzdGVib2FyZFR5cGUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVi
b2FyZChwYXN0ZWJvYXJkTmFtZSkuc3RyaW5nRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSkpOwogfQog
Ci12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IFZlY3RvcjxTdHJpbmc+JiBzdHJpbmdzKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHN0cmluZ3MgPSBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFN0cmluZ3NGb3JUeXBlKHBhc3RlYm9hcmRU
eXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLmFsbFN0cmluZ3NGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBTaGFyZWRNZW1v
cnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCYgc2l6ZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmJ1ZmZlckZvclR5cGUocGFzdGVib2FyZFR5cGUpOwogICAgIGlmICgh
YnVmZmVyKQotICAgICAgICByZXR1cm47Ci0gICAgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOworICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB1aW50NjRfdCBzaXpl
ID0gYnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47CisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOwogICAgIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7
CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CiAgICAgbWVtY3B5KHNoYXJlZE1lbW9y
eUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgc2l6ZSk7CisgICAgU2hhcmVkTWVtb3J5
OjpIYW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhh
bmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShoYW5kbGUpLCBzaXplKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0
IFN0cmluZyYgdG9QYXN0ZWJvYXJkLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpCit2b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6cGFzdGVib2FyZENvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVi
b2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bhc3RlYm9hcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG5ld0NoYW5nZUNvdW50ID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKHRvUGFzdGVib2FyZCkuY29weShmcm9tUGFzdGVib2FyZCk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHRvUGFzdGVib2FyZCkuY29w
eShmcm9tUGFzdGVib2FyZCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZENoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90
JiBjaGFuZ2VDb3VudCkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ2hh
bmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY2hhbmdlQ291bnQg
PSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNoYW5nZUNvdW50KCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jaGFu
Z2VDb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRV
bmlxdWVOYW1lKFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFVuaXF1ZU5hbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgcGFzdGVib2FyZE5hbWUgPSBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnVuaXF1ZU5hbWUoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9y
bVBhc3RlYm9hcmQ6OnVuaXF1ZU5hbWUoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpnZXRQYXN0ZWJvYXJkQ29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29y
ZTo6Q29sb3ImIGNvbG9yKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRD
b2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OkNvbG9yJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbG9yID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb2xvcigpOyAgICAKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvbG9yKCkp
OwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFVSTChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXVEY6OlN0cmluZyYgdXJsU3RyaW5nKQordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRVUkwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICB1cmxTdHJpbmcgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnVybCgpLnN0cmluZygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudXJsKCkuc3RyaW5nKCkpOwogfQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIHVpbnQ2NF90JiBu
ZXdDaGFuZ2VDb3VudCkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphZGRQYXN0ZWJvYXJkVHlw
ZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLmFkZFR5cGVzKHBhc3RlYm9hcmRUeXBlcyk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hZGRUeXBlcyhwYXN0
ZWJvYXJkVHlwZXMpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFzdGVib2FyZFR5cGVzLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpCit2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRUeXBlcyhw
YXN0ZWJvYXJkVHlwZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKSk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBmb3IgKGF1dG8qIHdlYlByb2Nlc3NQcm94eSA6IG1fd2ViUHJvY2Vz
c1Byb3h5TGlzdCkgewogICAgICAgICBpZiAoIXdlYlByb2Nlc3NQcm94eS0+aGFzQ29ubmVjdGlv
bihjb25uZWN0aW9uKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICghd2Vi
UHJvY2Vzc1Byb3h5LT5jaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MocGFzdGVib2FyZFVS
TC51cmwuc3RyaW5nKCkpKSB7Ci0gICAgICAgICAgICBuZXdDaGFuZ2VDb3VudCA9IDA7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHkt
PmNoZWNrVVJMUmVjZWl2ZWRGcm9tV2ViUHJvY2VzcyhwYXN0ZWJvYXJkVVJMLnVybC5zdHJpbmco
KSkpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7CiAKLSAgICAgICAg
bmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFVS
TChwYXN0ZWJvYXJkVVJMKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRVUkwocGFz
dGVib2FyZFVSTCkpOwogICAgIH0KLSAgICBuZXdDaGFuZ2VDb3VudCA9IDA7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoMCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJv
YXJkQ29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6c2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNv
bnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldENvbG9yKGNvbG9yKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldENvbG9yKGNv
bG9yKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5n
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50
KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0U3RyaW5nRm9yVHlwZShzdHJpbmcsIHBhc3RlYm9h
cmRUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLnNldFN0cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJvYXJkVHlwZSkpOwogfQog
Ci12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSwgdWludDY0
X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9h
cmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVp
bnQ2NF90IHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgbmV3Q2hh
bmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZv
clR5cGUoMCwgcGFzdGVib2FyZFR5cGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChoYW5kbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoMCwgcGFzdGVi
b2FyZFR5cGUpKTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVh
ZE9ubHkpOwogICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIHNpemUpOwot
ICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5z
ZXRCdWZmZXJGb3JUeXBlKGJ1ZmZlci5wdHIoKSwgcGFzdGVib2FyZFR5cGUpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVy
Rm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKLXZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5h
bWUsIHVpbnQ2NF90JiBudW1iZXJPZkZpbGVzKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dE51bWJlck9mRmlsZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbnVtYmVy
T2ZGaWxlcyA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkubnVtYmVyT2ZGaWxl
cygpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkubnVtYmVyT2ZGaWxlcygpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5
cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMpCit2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgdHlw
ZXMgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnR5cGVzU2FmZUZvckRPTVRv
UmVhZEFuZFdyaXRlKG9yaWdpbik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShvcmln
aW4pKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25z
dCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YSYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291
bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGRhdGEpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkud3Jp
dGUoZGF0YSkpOwogfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTIwMCw0NCArMjAy
LDQ4IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmluZ1RvUGEKICAgICBQbGF0
Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKHBhc3RlYm9hcmRUeXBlLCB0ZXh0
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcmIHZhbHVlKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgdmFsdWUgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRTdHJpbmco
aW5kZXgsIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRTdHJpbmcoaW5kZXgsIHBhc3RlYm9hcmRUeXBl
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQo
dWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFN0cmluZyYgdXJs
LCBTdHJpbmcmIHRpdGxlKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRVUkxGcm9tUGFz
dGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiB1cmwsIFN0cmluZyYmIHRpdGxlKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICB1cmwgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsKKyAgICBTdHJpbmcgdGl0bGU7CisgICAgU3Ry
aW5nIHVybCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZFVSTChpbmRl
eCwgdGl0bGUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUodXJsKSwgV1RGTW92ZSh0
aXRsZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1
aW50NjRfdCYgc2l6ZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkQnVmZmVyRnJvbVBh
c3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2hhcmVk
TWVtb3J5OjpIYW5kbGUmJiwgdWludDY0X3Qgc2l6ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5yZWFkQnVmZmVyKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgaWYg
KCFidWZmZXIpCi0gICAgICAgIHJldHVybjsKLSAgICBzaXplID0gYnVmZmVyLT5zaXplKCk7Cisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOworICAgIHVpbnQ2NF90IHNp
emUgPSBidWZmZXItPnNpemUoKTsKICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CiAgICAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShzaXpl
KTsKICAgICBpZiAoIXNoYXJlZE1lbW9yeUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKICAgICBtZW1jcHkoc2hhcmVkTWVt
b3J5QnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBzaXplKTsKKyAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVhdGVIYW5kbGUo
aGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZSksIHNpemUpOwogfQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgdWludDY0X3QmIGl0ZW1zQ291bnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBpdGVtc0NvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuY291bnQoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFBhc3RlYm9hcmRJ
dGVtSW5mbz4mIGFsbEluZm8pCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWxsUGFzdGVib2Fy
ZEl0ZW1JbmZvKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFBhc3RlYm9hcmRJdGVtSW5mbz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgYWxsSW5mbyA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWxs
UGFzdGVib2FyZEl0ZW1JbmZvKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0
ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRlbUluZm8oKSk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjppbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGludCBpbmRl
eCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzdGVib2FyZEl0ZW1JbmZvJiBpbmZv
KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBp
bmZvID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5pbmZvcm1hdGlvbkZvckl0
ZW1BdEluZGV4KGluZGV4KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgpKTsKIH0K
IAogdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnVwZGF0ZVN1cHBvcnRlZFR5cGVJZGVudGlmaWVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaWRlbnRpZmllcnMsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2Fy
ZFByb3h5R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVRvQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYlNlbGVjdGlvbkRhdGEmIHNlbGVj
dGlvbikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYlNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFNl
dEZvclNjb3BlPFdlYkZyYW1lUHJveHkqPiBmcmFtZVdyaXRpbmdUb0NsaXBib2FyZChtX2ZyYW1l
V3JpdGluZ1RvQ2xpcGJvYXJkLCBtX3ByaW1hcnlTZWxlY3Rpb25Pd25lcik7CiAgICAgUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZVRvQ2xpcGJvYXJkKHNlbGVjdGlvbi5z
ZWxlY3Rpb25EYXRhLCBbdGhpc10gewpAQCAtNDIsMTEgKzQyLDEyIEBAIHZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5Ojp3cml0ZVRvQ2xpcGJvYXIKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
c2V0UHJpbWFyeVNlbGVjdGlvbk93bmVyKG51bGxwdHIpOwogICAgIH0pOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkRnJvbUNsaXBi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJTZWxlY3Rpb25EYXRhJiBzZWxl
Y3Rpb24pCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEZyb21DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJTZWxlY3Rp
b25EYXRhJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbGVjdGlvbiA9IFdlYlNl
bGVjdGlvbkRhdGEoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkRnJvbUNs
aXBib2FyZCgpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJTZWxlY3Rpb25EYXRhKFBsYXRm
b3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEZyb21DbGlwYm9hcmQoKSkpOwogfQog
CiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UHJpbWFyeVNlbGVjdGlvbk93bmVyKFdlYkZy
YW1lUHJveHkqIGZyYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBh
c3RlYm9hcmRQcm94eVdQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQYXN0ZWJvYXJkUHJveHlXUEUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwyNCArMzIsMjggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkVHlwZXMoVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVHlwZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBWZWN0b3I8U3RyaW5n
PiBwYXN0ZWJvYXJkVHlwZXM7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKCkuZ2V0VHlwZXMocGFz
dGVib2FyZFR5cGVzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRU
eXBlcykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0
ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBXVEY6
OlN0cmluZyYgdmFsdWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21Q
YXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICB2YWx1ZSA9IFBsYXRmb3JtUGFzdGVib2FyZCgpLnJlYWRTdHJpbmcoaW5kZXgsIHBhc3Rl
Ym9hcmRUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQoKS5y
ZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6d3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3Rl
Ym9hcmRXZWJDb250ZW50JiBjb250ZW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRl
V2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVu
dCYgY29udGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFBsYXRmb3JtUGFzdGVib2FyZCgpLndyaXRlKGNvbnRlbnQpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZVN0cmlu
Z1RvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHRleHQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUGxhdGZvcm1Q
YXN0ZWJvYXJkKCkud3JpdGUocGFzdGVib2FyZFR5cGUsIHRleHQpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365502</attachid>
            <date>2019-03-20 23:48:47 -0700</date>
            <delta_ts>2019-03-21 09:08:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196060-20190320234846.patch</filename>
            <type>text/plain</type>
            <size>36790</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE5LTAzLTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBM
ZWdhY3lTeW5jIG1lc3NhZ2VzIGluIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MDYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnBhc3RlYm9h
cmRDb3B5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkQ2hhbmdlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRVbmlxdWVOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OmdldFBhc3RlYm9hcmRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OmFkZFBhc3RlYm9hcmRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9t
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9X
ZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlVG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OnJlYWRGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlBh
c3RlYm9hcmRQcm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgorCiAyMDE5
LTAzLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21w
dXRlIHF1b3RhIGFmdGVyIG5ldHdvcmsgcHJvY2VzcyByZXN0YXJ0IGJhc2VkIG9uIGRlZmF1bHQg
cXVvdGEgYW5kIHNwYWNlIHVzZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
c3RlYm9hcmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
MTQgKzYzLDE0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZW1vdmVXZWJQcm9jZXMKIAog
I2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHR5cGVzID0geyB9OworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291
bnQgPSAwOworICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCShyZXZpc2lvbiAy
NDMxODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNDggKzczLDQ4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0
ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lkIHdyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB1
cmwsIFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KTsKLSAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbyYgZmlsZW5hbWUpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Cisg
ICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJik7CiAgICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcyk7Ci0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcyk7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9y
VHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgU3RyaW5nJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwotICAgIHZvaWQg
cGFzdGVib2FyZENvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5n
JiB0b1Bhc3RlYm9hcmQsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCk7Ci0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0
X3QmIGNoYW5nZUNvdW50KTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yJik7Ci0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVVJMKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nJik7Ci0g
ICAgdm9pZCBhZGRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgdWludDY0X3QmIG5ld0NoYW5n
ZUNvdW50KTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCB1aW50NjRf
dCYgbmV3Q2hhbmdlQ291bnQpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KTsKLSAgICB2b2lkIHNldFBhc3Rl
Ym9hcmRDb2xvcihjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIHVpbnQ2NF90
Jik7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
LCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplLCB1
aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpOworICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
KT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgcGF0aG5hbWVzLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYs
IHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZy
b21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OkNvbG9yJiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRVUkwoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
Jik7CisgICAgdm9pZCBhZGRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lk
IHNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRDb2xvcihjb25zdCBT
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lk
IHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBu
ZXdDaGFuZ2VDb3VudCk7Ci0gICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgVmVjdG9y
PFN0cmluZz4mIHR5cGVzKTsKKyAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHR5cGVzU2FmZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
KTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViU2VsZWN0aW9uRGF0YSYpOwotICAgIHZv
aWQgcmVhZEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViU2Vs
ZWN0aW9uRGF0YSYpOworICAgIHZvaWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBXZWJTZWxlY3Rpb25EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKKyAgICB2b2lkIHJlYWRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViU2VsZWN0aW9uRGF0YSYmKT4m
Jik7CiAKICAgICBXZWJGcmFtZVByb3h5KiBtX3ByaW1hcnlTZWxlY3Rpb25Pd25lciB7IG51bGxw
dHIgfTsKICAgICBXZWJGcmFtZVByb3h5KiBtX2ZyYW1lV3JpdGluZ1RvQ2xpcGJvYXJkIHsgbnVs
bHB0ciB9OwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIAogI2lmIFVTRShMSUJXUEUpCi0gICAg
dm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcyk7
Ci0gICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFdURjo6U3RyaW5nJik7CisgICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVHlwZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7
CisgICAgdm9pZCByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PiYmKTsKICAgICB2b2lkIHdyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZChjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkV2ViQ29udGVudCYpOwogICAgIHZvaWQgd3JpdGVTdHJpbmdUb1Bhc3RlYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJik7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdl
cy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJk
UHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjYsNDggKzI2LDQ4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAgICAgV3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29u
dGVudCBjb250ZW50LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAgICAgV3JpdGVJbWFnZVRvUGFz
dGVib2FyZChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlIHBhc3RlYm9hcmRJbWFnZSwg
U3RyaW5nIHBhc3RlYm9hcmROYW1lKQogICAgIFdyaXRlU3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmlu
ZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKLSAg
ICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJv
YXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHN0cmluZykgTGVnYWN5
U3luYwotICAgIFJlYWRVUkxGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwgU3RyaW5nIHRpdGxlKSBMZWdhY3lTeW5jCi0g
ICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVi
b2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSBMZWdhY3lTeW5jCi0gICAgR2V0UGFzdGVi
b2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgaXRlbXND
b3VudCkgTGVnYWN5U3luYwotICAgIEFsbFBhc3RlYm9hcmRJdGVtSW5mbyhTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2FyZEl0ZW1JbmZvPiBhbGxJbmZv
KSBMZWdhY3lTeW5jCi0gICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCh1aW50NjRfdCBpbmRl
eCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbyBpbmZvKSBMZWdhY3lTeW5jCisgICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFN0cmluZyBzdHJpbmcpIERlbGF5ZWQKKyAgICBSZWFkVVJMRnJvbVBhc3RlYm9hcmQo
dWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmwsIFN0
cmluZyB0aXRsZSkgRGVsYXllZAorICAgIFJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50NjRf
dCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgRGVs
YXllZAorICAgIEdldFBhc3RlYm9hcmRJdGVtc0NvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkg
LT4gKHVpbnQ2NF90IGl0ZW1zQ291bnQpIERlbGF5ZWQKKyAgICBBbGxQYXN0ZWJvYXJkSXRlbUlu
Zm8oU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbz4gYWxsSW5mbykgRGVsYXllZAorICAgIEluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgo
dWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8gaW5mbykgRGVsYXllZAogICAgIFVwZGF0ZVN1cHBvcnRlZFR5
cGVJZGVudGlmaWVycyhWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVycywgU3RyaW5nIHBhc3RlYm9h
cmROYW1lKQogI2VuZGlmCiAKLSAgICBXcml0ZUN1c3RvbURhdGEoc3RydWN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhIGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2
NF90IGNoYW5nZUNvdW50KSBMZWdhY3lTeW5jCi0gICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgb3JpZ2luKSAtPiAoVmVjdG9yPFN0
cmluZz4gdHlwZXMpIExlZ2FjeVN5bmMKKyAgICBXcml0ZUN1c3RvbURhdGEoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhIGRhdGEsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4g
KHVpbnQ2NF90IGNoYW5nZUNvdW50KSBEZWxheWVkCisgICAgVHlwZXNTYWZlRm9yRE9NVG9SZWFk
QW5kV3JpdGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgb3JpZ2luKSAtPiAoVmVjdG9y
PFN0cmluZz4gdHlwZXMpIERlbGF5ZWQKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICMgUGFz
dGVib2FyZCBtZXNzYWdlcy4KLSAgICBHZXROdW1iZXJPZkZpbGVzKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgLT4gKHVpbnQ2NF90IG51bWJlck9mRmlsZXMpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0
ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlw
ZXMpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFZlY3RvcjxTdHJpbmc+
IHBhdGhuYW1lcywgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSBzYW5kYm94
RXh0ZW5zaW9ucykgTGVnYWN5U3luYyBXYW50c0Nvbm5lY3Rpb24KLSAgICBHZXRQYXN0ZWJvYXJk
U3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFN0cmluZyBzdHJpbmcpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0ZWJvYXJkU3RyaW5n
c0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+
IChWZWN0b3I8U3RyaW5nPiBzdHJpbmdzKSBMZWdhY3lTeW5jCi0gICAgR2V0UGFzdGVib2FyZEJ1
ZmZlckZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUp
IC0+IChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkg
TGVnYWN5U3luYwotICAgIFBhc3RlYm9hcmRDb3B5KFN0cmluZyBmcm9tUGFzdGVib2FyZCwgU3Ry
aW5nIHRvUGFzdGVib2FyZCkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBMZWdhY3lTeW5jCi0g
ICAgR2V0UGFzdGVib2FyZENoYW5nZUNvdW50KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVp
bnQ2NF90IGNoYW5nZUNvdW50KSBMZWdhY3lTeW5jCi0gICAgR2V0UGFzdGVib2FyZFVuaXF1ZU5h
bWUoKSAtPiAoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSBMZWdhY3lTeW5jCi0gICAgR2V0UGFzdGVi
b2FyZENvbG9yKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFdlYkNvcmU6OkNvbG9yIGNvbG9y
KSBMZWdhY3lTeW5jCi0gICAgR2V0UGFzdGVib2FyZFVSTChTdHJpbmcgcGFzdGVib2FyZE5hbWUp
IC0+IChTdHJpbmcgdXJsU3RyaW5nKSBMZWdhY3lTeW5jCi0gICAgQWRkUGFzdGVib2FyZFR5cGVz
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmluZz4gcGFzdGVib2FyZFR5cGVzKSAt
PiAodWludDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMKLSAgICBTZXRQYXN0ZWJvYXJkVHlw
ZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMp
IC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5U3luYwotICAgIFNldFBhc3RlYm9hcmRV
Ukwoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRVUkwgcGFzdGVib2FyZFVSTCwgU3RyaW5nIHBh
c3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMgV2FudHND
b25uZWN0aW9uCi0gICAgU2V0UGFzdGVib2FyZENvbG9yKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
V2ViQ29yZTo6Q29sb3IgY29sb3IpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5U3lu
YwotICAgIFNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwg
U3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgc3RyaW5nKSAtPiAodWludDY0X3QgY2hhbmdl
Q291bnQpIExlZ2FjeVN5bmMKLSAgICBTZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3Vu
dCkgTGVnYWN5U3luYworICAgIEdldE51bWJlck9mRmlsZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAodWludDY0X3QgbnVtYmVyT2ZGaWxlcykgRGVsYXllZAorICAgIEdldFBhc3RlYm9hcmRU
eXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiB0eXBlcykgRGVs
YXllZAorICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmluZz4gcGF0aG5hbWVz
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRib3hFeHRlbnNpb25z
KSBEZWxheWVkIFdhbnRzQ29ubmVjdGlvbgorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBl
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoU3RyaW5n
IHN0cmluZykgRGVsYXllZAorICAgIEdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFZlY3RvcjxTdHJpbmc+
IHN0cmluZ3MpIERlbGF5ZWQKKyAgICBHZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZShTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkgLT4gKFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSBEZWxheWVkCisgICAgUGFzdGVi
b2FyZENvcHkoU3RyaW5nIGZyb21QYXN0ZWJvYXJkLCBTdHJpbmcgdG9QYXN0ZWJvYXJkKSAtPiAo
dWludDY0X3QgY2hhbmdlQ291bnQpIERlbGF5ZWQKKyAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291
bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIERlbGF5
ZWQKKyAgICBHZXRQYXN0ZWJvYXJkVW5pcXVlTmFtZSgpIC0+IChTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIERlbGF5ZWQKKyAgICBHZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAoV2ViQ29yZTo6Q29sb3IgY29sb3IpIERlbGF5ZWQKKyAgICBHZXRQYXN0ZWJvYXJkVVJM
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFN0cmluZyB1cmxTdHJpbmcpIERlbGF5ZWQKKyAg
ICBBZGRQYXN0ZWJvYXJkVHlwZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5n
PiBwYXN0ZWJvYXJkVHlwZXMpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgRGVsYXllZAorICAg
IFNldFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+
IHBhc3RlYm9hcmRUeXBlcykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBEZWxheWVkCisgICAg
U2V0UGFzdGVib2FyZFVSTChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJk
VVJMLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgRGVs
YXllZCBXYW50c0Nvbm5lY3Rpb24KKyAgICBTZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3Rl
Ym9hcmROYW1lLCBXZWJDb3JlOjpDb2xvciBjb2xvcikgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50
KSBEZWxheWVkCisgICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+ICh1aW50NjRf
dCBjaGFuZ2VDb3VudCkgRGVsYXllZAorICAgIFNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBXZWJLaXQ6OlNoYXJl
ZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgLT4gKHVpbnQ2NF90IGNoYW5n
ZUNvdW50KSBEZWxheWVkCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBXcml0ZVRv
Q2xpcGJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RydWN0IFdlYktpdDo6V2ViU2VsZWN0
aW9uRGF0YSBwYXN0ZWJvYXJkQ29udGVudCkgTGVnYWN5U3luYwotICAgIFJlYWRGcm9tQ2xpcGJv
YXJkKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYlNlbGVjdGlv
bkRhdGEgcGFzdGVib2FyZENvbnRlbnQpIExlZ2FjeVN5bmMKKyAgICBXcml0ZVRvQ2xpcGJvYXJk
KFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RydWN0IFdlYktpdDo6V2ViU2VsZWN0aW9uRGF0YSBw
YXN0ZWJvYXJkQ29udGVudCkgLT4gKCkgRGVsYXllZAorICAgIFJlYWRGcm9tQ2xpcGJvYXJkKFN0
cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGEg
cGFzdGVib2FyZENvbnRlbnQpIERlbGF5ZWQKICNlbmRpZgogCiAjaWYgVVNFKExJQldQRSkKLSAg
ICBHZXRQYXN0ZWJvYXJkVHlwZXMoKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIExlZ2FjeVN5
bmMKLSAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBw
YXN0ZWJvYXJkVHlwZSkgLT4gKFN0cmluZyBzdHJpbmcpIExlZ2FjeVN5bmMKLSAgICBXcml0ZVdl
YkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50
IGNvbnRlbnQpIExlZ2FjeVN5bmMKLSAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcg
cGFzdGVib2FyZFR5cGUsIFN0cmluZyB0ZXh0KSBMZWdhY3lTeW5jCisgICAgR2V0UGFzdGVib2Fy
ZFR5cGVzKCkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBEZWxheWVkCisgICAgUmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+
IChTdHJpbmcgc3RyaW5nKSBEZWxheWVkCisgICAgV3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJk
KHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCBjb250ZW50KQorICAgIFdyaXRl
U3RyaW5nVG9QYXN0ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQpCiAj
ZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9h
cmRQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTQgKzM4LDE4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVi
b2FyZFR5cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5
cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgVmVjdG9yPFN0
cmluZz4gcGFzdGVib2FyZFR5cGVzOwogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuZ2V0VHlwZXMocGFzdGVib2FyZFR5cGVzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
Z2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlLAotICAgIFZlY3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZUFycmF5JiBzYW5kYm94RXh0ZW5zaW9ucykKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJh
eSYmIHNhbmRib3hFeHRlbnNpb25zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBWZWN0
b3I8U3RyaW5nPiBwYXRobmFtZXM7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkg
c2FuZGJveEV4dGVuc2lvbnM7CiAgICAgZm9yIChhdXRvKiB3ZWJQcm9jZXNzUHJveHkgOiBtX3dl
YlByb2Nlc3NQcm94eUxpc3QpIHsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmhhc0Nv
bm5lY3Rpb24oY29ubmVjdGlvbikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTYzLDExOSAr
NjcsMTE3IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkUGEKICAgICAg
ICAgfQogI2VuZGlmCiAgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGF0aG5h
bWVzKSwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9ucykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJiBzdHJpbmcpCit2
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgc3RyaW5nID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zdHJpbmdGb3JU
eXBlKHBhc3RlYm9hcmRUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnN0cmluZ0ZvclR5cGUocGFzdGVib2FyZFR5cGUpKTsKIH0K
IAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBWZWN0b3I8U3RyaW5nPiYgc3RyaW5ncykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQ
YXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzdHJpbmdzID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJk
VHlwZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5hbGxTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdl
YlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVt
b3J5OjpIYW5kbGUmIGhhbmRsZSwgdWludDY0X3QmIHNpemUpCit2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTaGFyZWRNZW1vcnk6OkhhbmRsZSYmLCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAo
IWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuOwotICAgIHNpemUgPSBidWZmZXItPnNpemUoKTsKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgdWludDY0X3Qgc2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKICAgICBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemUp
OwogICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOwogICAgIG1lbWNweShzaGFyZWRNZW1v
cnlCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIHNpemUpOworICAgIFNoYXJlZE1lbW9y
eTo6SGFuZGxlIGhhbmRsZTsKICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZSho
YW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoaGFuZGxlKSwgc2l6ZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5OjpwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25z
dCBTdHJpbmcmIHRvUGFzdGVib2FyZCwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBX
ZWJQYXN0ZWJvYXJkUHJveHk6OnBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3Rl
Ym9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXdDaGFuZ2VDb3VudCA9
IFBsYXRmb3JtUGFzdGVib2FyZCh0b1Bhc3RlYm9hcmQpLmNvcHkoZnJvbVBhc3RlYm9hcmQpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZCh0b1Bhc3RlYm9hcmQpLmNv
cHkoZnJvbVBhc3RlYm9hcmQpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBh
c3RlYm9hcmRDaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRf
dCYgY2hhbmdlQ291bnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZENo
YW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNoYW5nZUNvdW50
ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jaGFuZ2VDb3VudCgpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hh
bmdlQ291bnQoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJk
VW5pcXVlTmFtZShTdHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHBhc3RlYm9hcmROYW1lID0gUGxhdGZv
cm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZv
cm1QYXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNv
cmU6OkNvbG9yJiBjb2xvcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJk
Q29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpDb2xvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb2xvciA9
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCisgICAgY29t
cGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb2xvcigp
KTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRVUkwoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVVJMKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgdXJsU3RyaW5nID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS51cmwoKS5zdHJpbmcoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnVybCgpLnN0cmluZygpKTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmFkZFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCB1aW50NjRfdCYg
bmV3Q2hhbmdlQ291bnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5
cGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBw
YXN0ZWJvYXJkVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5hZGRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWRkVHlwZXMocGFz
dGVib2FyZFR5cGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJv
YXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcywgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXdD
aGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMo
cGFzdGVib2FyZFR5cGVzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKK3ZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgZm9yIChhdXRvKiB3ZWJQcm9jZXNzUHJveHkgOiBtX3dlYlByb2Nl
c3NQcm94eUxpc3QpIHsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmhhc0Nvbm5lY3Rp
b24oY29ubmVjdGlvbikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIXdl
YlByb2Nlc3NQcm94eS0+Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKHBhc3RlYm9hcmRV
UkwudXJsLnN0cmluZygpKSkgewotICAgICAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSAwOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5
LT5jaGVja1VSTFJlY2VpdmVkRnJvbVdlYlByb2Nlc3MocGFzdGVib2FyZFVSTC51cmwuc3RyaW5n
KCkpKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOwogCi0gICAgICAg
IG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRV
UkwocGFzdGVib2FyZFVSTCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VVJMKHBh
c3RlYm9hcmRVUkwpKTsKICAgICB9Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSAwOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVi
b2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvciwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnNldFBhc3RlYm9hcmRDb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRDb2xvcihjb2xvcik7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRDb2xvcihj
b2xvcikpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3Vu
dCkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBjb25zdCBTdHJpbmcmIHN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldFN0cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJv
YXJkVHlwZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKS5zZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5cGUpKTsKIH0K
IAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90IHNpemUsIHVpbnQ2
NF90JiBuZXdDaGFuZ2VDb3VudCkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJv
YXJkQnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1
aW50NjRfdCBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7Ci0gICAgICAgIG5ld0No
YW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJG
b3JUeXBlKDAsIHBhc3RlYm9hcmRUeXBlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBp
ZiAoaGFuZGxlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKDAsIHBhc3Rl
Ym9hcmRUeXBlKSk7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVy
ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsK
LSAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSku
c2V0QnVmZmVyRm9yVHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZl
ckZvclR5cGUoYnVmZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXROdW1iZXJPZkZpbGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG51bWJl
ck9mRmlsZXMgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLm51bWJlck9mRmls
ZXMoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLm51bWJlck9mRmlsZXMoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0
eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQordm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHR5
cGVzID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS50eXBlc1NhZmVGb3JET01U
b1JlYWRBbmRXcml0ZShvcmlnaW4pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkudHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUob3Jp
Z2luKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29u
c3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKK3ZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGEmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG5ld0NoYW5nZUNv
dW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKTsKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndy
aXRlKGRhdGEpKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yMDAsNDQgKzIw
Miw0OCBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1BhCiAgICAgUGxh
dGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4
dCk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nJiB2YWx1ZSkKK3ZvaWQgV2ViUGFzdGVi
b2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHZhbHVlID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5n
KGluZGV4LCBwYXN0ZWJvYXJkVHlwZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJvYXJkVHlw
ZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJk
KHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHVy
bCwgU3RyaW5nJiB0aXRsZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBh
c3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgdXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKS5yZWFkVVJMKGluZGV4LCB0aXRsZSk7CisgICAgU3RyaW5nIHRpdGxlOworICAgIFN0
cmluZyB1cmwgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5k
ZXgsIHRpdGxlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybCksIFdURk1vdmUo
dGl0bGUpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFz
dGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwg
dWludDY0X3QmIHNpemUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21Q
YXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFBsYXRmb3JtUGFzdGVib2FyZChw
YXN0ZWJvYXJkTmFtZSkucmVhZEJ1ZmZlcihpbmRleCwgcGFzdGVib2FyZFR5cGUpOwogICAgIGlm
ICghYnVmZmVyKQotICAgICAgICByZXR1cm47Ci0gICAgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwor
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB1aW50NjRfdCBz
aXplID0gYnVmZmVyLT5zaXplKCk7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOwogICAgIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6
ZSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CiAgICAgbWVtY3B5KHNoYXJlZE1l
bW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgc2l6ZSk7CisgICAgU2hhcmVkTWVt
b3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxl
KGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGUpLCBzaXplKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGl0ZW1zQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7
CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1l
KS5jb3VudCgpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJ
dGVtSW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8UGFzdGVib2FyZEl0
ZW1JbmZvPiYgYWxsSW5mbykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJk
SXRlbUluZm8oY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBhbGxJbmZvID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQ
YXN0ZWJvYXJkSXRlbUluZm8oKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpKTsKIH0KIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4
LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8p
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUGFzdGVib2FyZEl0ZW1JbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlu
Zm8gPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaW5kZXgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCkpOwogfQog
CiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJk
UHJveHlHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVG9DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViU2VsZWN0aW9uRGF0YSYgc2VsZWN0
aW9uKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgU2V0
Rm9yU2NvcGU8V2ViRnJhbWVQcm94eSo+IGZyYW1lV3JpdGluZ1RvQ2xpcGJvYXJkKG1fZnJhbWVX
cml0aW5nVG9DbGlwYm9hcmQsIG1fcHJpbWFyeVNlbGVjdGlvbk93bmVyKTsKICAgICBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlVG9DbGlwYm9hcmQoc2VsZWN0aW9uLnNl
bGVjdGlvbkRhdGEsIFt0aGlzXSB7CkBAIC00MiwxMSArNDIsMTIgQEAgdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OndyaXRlVG9DbGlwYm9hcgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBz
ZXRQcmltYXJ5U2VsZWN0aW9uT3duZXIobnVsbHB0cik7CiAgICAgfSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRGcm9tQ2xpcGJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYlNlbGVjdGlvbkRhdGEmIHNlbGVj
dGlvbikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlNlbGVjdGlv
bkRhdGEmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VsZWN0aW9uID0gV2ViU2Vs
ZWN0aW9uRGF0YShQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRGcm9tQ2xp
cGJvYXJkKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYlNlbGVjdGlvbkRhdGEoUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkRnJvbUNsaXBib2FyZCgpKSk7CiB9CiAK
IHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQcmltYXJ5U2VsZWN0aW9uT3duZXIoV2ViRnJh
bWVQcm94eSogZnJhbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUGFz
dGVib2FyZFByb3h5V1BFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93cGUvV2ViUGFzdGVib2FyZFByb3h5V1BFLmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94eVdQRS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDE0ICszMiwxNiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9h
cmRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzKQordm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmdldFBhc3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIFZlY3RvcjxTdHJpbmc+
IHBhc3RlYm9hcmRUeXBlczsKICAgICBQbGF0Zm9ybVBhc3RlYm9hcmQoKS5nZXRUeXBlcyhwYXN0
ZWJvYXJkVHlwZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGFzdGVib2FyZFR5
cGVzKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIFdURjo6
U3RyaW5nJiB2YWx1ZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBh
c3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHZhbHVlID0gUGxhdGZvcm1QYXN0ZWJvYXJkKCkucmVhZFN0cmluZyhpbmRleCwgcGFzdGVi
b2FyZFR5cGUpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZCgpLnJl
YWRTdHJpbmcoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKSk7CiB9CiAKIHZvaWQgV2ViUGFzdGVib2Fy
ZFByb3h5Ojp3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365553</attachid>
            <date>2019-03-21 09:08:06 -0700</date>
            <delta_ts>2019-03-21 13:53:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196060-20190321090805.patch</filename>
            <type>text/plain</type>
            <size>36038</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDMyNzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBACisyMDE5LTAzLTIxICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBM
ZWdhY3lTeW5jIG1lc3NhZ2VzIGluIFdlYlBhc3RlYm9hcmRQcm94eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MDYwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFz
dGVib2FyZFByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnBhc3RlYm9h
cmRDb3B5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJv
YXJkQ2hhbmdlQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRVbmlxdWVOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OmdldFBhc3RlYm9hcmRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OmFkZFBhc3RlYm9hcmRUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6c2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVi
b2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9yVHlwZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6Z2V0TnVtYmVyT2ZGaWxlcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5k
V3JpdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9t
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zy
b21QYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFByb3h5OjpyZWFk
VVJMRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6
OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9h
cmRQcm94eTo6Z2V0UGFzdGVib2FyZEl0ZW1zQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhc3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhc3RlYm9hcmRQcm94eTo6dHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OndyaXRlQ3VzdG9tRGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9X
ZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OndyaXRlVG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJk
UHJveHk6OnJlYWRGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlBh
c3RlYm9hcmRQcm94eVdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0UGFzdGVib2FyZFR5cGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFzdGVib2FyZFBy
b3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0
ZWJvYXJkUHJveHk6OndyaXRlV2ViQ29udGVudFRvUGFzdGVib2FyZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQpOgorCiAyMDE5
LTAzLTIwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21w
dXRlIHF1b3RhIGFmdGVyIG5ldHdvcmsgcHJvY2VzcyByZXN0YXJ0IGJhc2VkIG9uIGRlZmF1bHQg
cXVvdGEgYW5kIHNwYWNlIHVzZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
c3RlYm9hcmRQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFzdGVib2FyZFByb3h5LmNwcAkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMs
MTQgKzYzLDE0IEBAIHZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZW1vdmVXZWJQcm9jZXMKIAog
I2lmICFQTEFURk9STShDT0NPQSkKIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnR5cGVzU2Fm
ZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3Rv
cjxTdHJpbmc+JiB0eXBlcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHR5cGVzID0geyB9OworICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQg
V2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGEmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQp
Cit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291
bnQgPSAwOworICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOwogfQogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCShyZXZpc2lvbiAy
NDMxODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtNzMsNDggKzczLDQ4IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3cml0
ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRl
bnQmLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICAgICB2b2lkIHdyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEltYWdlJiwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSk7CiAgICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVib2FyZChjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRf
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcmKTsKLSAgICB2b2lkIHJlYWRVUkxGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nJiB1
cmwsIFN0cmluZyYgdGl0bGUpOwotICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90JiBzaXplKTsK
LSAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHVpbnQ2NF90JiBpdGVtc0NvdW50KTsKLSAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8V2ViQ29yZTo6UGFzdGVi
b2FyZEl0ZW1JbmZvPiYpOwotICAgIHZvaWQgaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OlBhc3RlYm9hcmRJ
dGVtSW5mbyYgZmlsZW5hbWUpOworICAgIHZvaWQgcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Cisg
ICAgdm9pZCByZWFkVVJMRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBT
dHJpbmcmJiB0aXRsZSk+JiYpOworICAgIHZvaWQgcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRJdGVtc0Nv
dW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3Jl
OjpQYXN0ZWJvYXJkSXRlbUluZm8+JiYpPiYmKTsKKyAgICB2b2lkIGluZm9ybWF0aW9uRm9ySXRl
bUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlBhc3RlYm9hcmRJdGVtSW5mbyYmKT4mJik7CiAgICAg
dm9pZCB1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4m
IGlkZW50aWZpZXJzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKTsKICNlbmRpZgogI2lm
IFBMQVRGT1JNKENPQ09BKQotICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgbnVtYmVyT2ZGaWxlcyk7Ci0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmlu
Zz4mIHBhc3RlYm9hcmRUeXBlcyk7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9y
VHlwZShJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZFN0cmlu
Z0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgU3RyaW5nJik7Ci0gICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5
cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgVmVjdG9yPFN0cmluZz4mKTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRCdWZmZXJGb3JU
eXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUsIFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3QmIHNpemUpOwotICAgIHZvaWQg
cGFzdGVib2FyZENvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5n
JiB0b1Bhc3RlYm9hcmQsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCk7Ci0gICAgdm9pZCBnZXRQ
YXN0ZWJvYXJkQ2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgdWludDY0
X3QmIGNoYW5nZUNvdW50KTsKLSAgICB2b2lkIGdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUpOwotICAgIHZvaWQgZ2V0UGFzdGVib2FyZENvbG9yKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yJik7Ci0gICAgdm9pZCBnZXRQYXN0
ZWJvYXJkVVJMKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdURjo6U3RyaW5nJik7Ci0g
ICAgdm9pZCBhZGRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgdWludDY0X3QmIG5ld0NoYW5n
ZUNvdW50KTsKLSAgICB2b2lkIHNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCB1aW50NjRf
dCYgbmV3Q2hhbmdlQ291bnQpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMJiwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KTsKLSAgICB2b2lkIHNldFBhc3Rl
Ym9hcmRDb2xvcihjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIHVpbnQ2NF90
Jik7Ci0gICAgdm9pZCBzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
LCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpOwotICAgIHZvaWQgc2V0UGFzdGVib2FyZEJ1ZmZl
ckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCB1aW50NjRfdCBzaXplLCB1
aW50NjRfdCYgbmV3Q2hhbmdlQ291bnQpOworICAgIHZvaWQgZ2V0TnVtYmVyT2ZGaWxlcyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90
KT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkUGF0aG5hbWVzRm9yVHlwZShJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgcGF0aG5hbWVzLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJk
U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT4mJik7Cisg
ICAgdm9pZCBnZXRQYXN0ZWJvYXJkU3RyaW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisgICAgdm9pZCBnZXRQYXN0ZWJvYXJkQnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFuZGxlJiYs
IHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBwYXN0ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZy
b21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZ2V0UGFzdGVib2FyZENoYW5nZUNvdW50
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRDb2xvcihj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNv
cmU6OkNvbG9yJiYpPiYmKTsKKyAgICB2b2lkIGdldFBhc3RlYm9hcmRVUkwoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
Jik7CisgICAgdm9pZCBhZGRQYXN0ZWJvYXJkVHlwZXMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgIHZvaWQgc2V0UGFzdGVib2FyZFR5cGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJv
YXJkVHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lk
IHNldFBhc3RlYm9hcmRVUkwoSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UGFzdGVi
b2FyZFVSTCYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRDb2xvcihjb25zdCBT
dHJpbmcmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIHNldFBhc3RlYm9hcmRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lk
IHNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxl
JiwgdWludDY0X3Qgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwog
I2VuZGlmCiAKLSAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2NF90JiBu
ZXdDaGFuZ2VDb3VudCk7Ci0gICAgdm9pZCB0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgVmVjdG9y
PFN0cmluZz4mIHR5cGVzKTsKKyAgICB2b2lkIHdyaXRlQ3VzdG9tRGF0YShjb25zdCBXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YSYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHR5cGVzU2FmZUZv
ckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
KTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgV2ViU2VsZWN0aW9uRGF0YSYpOwotICAgIHZv
aWQgcmVhZEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViU2Vs
ZWN0aW9uRGF0YSYpOworICAgIHZvaWQgcmVhZEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJTZWxlY3Rpb25EYXRhJiYp
PiYmKTsKIAogICAgIFdlYkZyYW1lUHJveHkqIG1fcHJpbWFyeVNlbGVjdGlvbk93bmVyIHsgbnVs
bHB0ciB9OwogICAgIFdlYkZyYW1lUHJveHkqIG1fZnJhbWVXcml0aW5nVG9DbGlwYm9hcmQgeyBu
dWxscHRyIH07CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiAjaWYgVVNFKExJQldQRSkKLSAg
ICB2b2lkIGdldFBhc3RlYm9hcmRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVz
KTsKLSAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgV1RGOjpTdHJpbmcmKTsKKyAgICB2b2lkIGdldFBh
c3RlYm9hcmRUeXBlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
KTsKKyAgICB2b2lkIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
Jik+JiYpOwogICAgIHZvaWQgd3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50Jik7CiAgICAgdm9pZCB3cml0ZVN0cmluZ1RvUGFzdGVi
b2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjQzMTgwKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw0OCArMjYsNDggQEAgbWVzc2FnZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICAgICBX
cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJD
b250ZW50IGNvbnRlbnQsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkKICAgICBXcml0ZUltYWdlVG9Q
YXN0ZWJvYXJkKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UgcGFzdGVib2FyZEltYWdl
LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpCiAgICAgV3JpdGVTdHJpbmdUb1Bhc3RlYm9hcmQoU3Ry
aW5nIHBhc3RlYm9hcmRUeXBlLCBTdHJpbmcgdGV4dCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKQot
ICAgIFJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3Rl
Ym9hcmRUeXBlLCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgc3RyaW5nKSBMZWdh
Y3lTeW5jCi0gICAgUmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+IChTdHJpbmcgdXJsLCBTdHJpbmcgdGl0bGUpIExlZ2FjeVN5bmMK
LSAgICBSZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0
ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViS2l0OjpTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0
ZWJvYXJkSXRlbXNDb3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBpdGVt
c0NvdW50KSBMZWdhY3lTeW5jCi0gICAgQWxsUGFzdGVib2FyZEl0ZW1JbmZvKFN0cmluZyBwYXN0
ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpQYXN0ZWJvYXJkSXRlbUluZm8+IGFsbElu
Zm8pIExlZ2FjeVN5bmMKLSAgICBJbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KHVpbnQ2NF90IGlu
ZGV4LCBTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvIGluZm8pIExlZ2FjeVN5bmMKKyAgICBSZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQo
dWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHBhc3RlYm9hcmRO
YW1lKSAtPiAoU3RyaW5nIHN0cmluZykgRGVsYXllZAorICAgIFJlYWRVUkxGcm9tUGFzdGVib2Fy
ZCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybCwg
U3RyaW5nIHRpdGxlKSBEZWxheWVkCisgICAgUmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVpbnQ2
NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkg
LT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSBE
ZWxheWVkCisgICAgR2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1l
KSAtPiAodWludDY0X3QgaXRlbXNDb3VudCkgRGVsYXllZAorICAgIEFsbFBhc3RlYm9hcmRJdGVt
SW5mbyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8V2ViQ29yZTo6UGFzdGVib2Fy
ZEl0ZW1JbmZvPiBhbGxJbmZvKSBEZWxheWVkCisgICAgSW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRl
eCh1aW50NjRfdCBpbmRleCwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRJdGVtSW5mbyBpbmZvKSBEZWxheWVkCiAgICAgVXBkYXRlU3VwcG9ydGVk
VHlwZUlkZW50aWZpZXJzKFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzLCBTdHJpbmcgcGFzdGVi
b2FyZE5hbWUpCiAjZW5kaWYKIAotICAgIFdyaXRlQ3VzdG9tRGF0YShzdHJ1Y3QgV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGEgZGF0YSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAodWlu
dDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMKLSAgICBUeXBlc1NhZmVGb3JET01Ub1JlYWRB
bmRXcml0ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4pIC0+IChWZWN0b3I8
U3RyaW5nPiB0eXBlcykgTGVnYWN5U3luYworICAgIFdyaXRlQ3VzdG9tRGF0YShzdHJ1Y3QgV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEgZGF0YSwgU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAodWludDY0X3QgY2hhbmdlQ291bnQpIERlbGF5ZWQKKyAgICBUeXBlc1NhZmVGb3JET01Ub1Jl
YWRBbmRXcml0ZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBvcmlnaW4pIC0+IChWZWN0
b3I8U3RyaW5nPiB0eXBlcykgRGVsYXllZAogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgIyBQ
YXN0ZWJvYXJkIG1lc3NhZ2VzLgotICAgIEdldE51bWJlck9mRmlsZXMoU3RyaW5nIHBhc3RlYm9h
cmROYW1lKSAtPiAodWludDY0X3QgbnVtYmVyT2ZGaWxlcykgTGVnYWN5U3luYwotICAgIEdldFBh
c3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChWZWN0b3I8U3RyaW5nPiB0
eXBlcykgTGVnYWN5U3luYwotICAgIEdldFBhc3RlYm9hcmRQYXRobmFtZXNGb3JUeXBlKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmlu
Zz4gcGF0aG5hbWVzLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5IHNhbmRi
b3hFeHRlbnNpb25zKSBMZWdhY3lTeW5jIFdhbnRzQ29ubmVjdGlvbgotICAgIEdldFBhc3RlYm9h
cmRTdHJpbmdGb3JUeXBlKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRU
eXBlKSAtPiAoU3RyaW5nIHN0cmluZykgTGVnYWN5U3luYwotICAgIEdldFBhc3RlYm9hcmRTdHJp
bmdzRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSkg
LT4gKFZlY3RvcjxTdHJpbmc+IHN0cmluZ3MpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0ZWJvYXJk
QnVmZmVyRm9yVHlwZShTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXpl
KSBMZWdhY3lTeW5jCi0gICAgUGFzdGVib2FyZENvcHkoU3RyaW5nIGZyb21QYXN0ZWJvYXJkLCBT
dHJpbmcgdG9QYXN0ZWJvYXJkKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMK
LSAgICBHZXRQYXN0ZWJvYXJkQ2hhbmdlQ291bnQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAo
dWludDY0X3QgY2hhbmdlQ291bnQpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0ZWJvYXJkVW5pcXVl
TmFtZSgpIC0+IChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0
ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoV2ViQ29yZTo6Q29sb3IgY29s
b3IpIExlZ2FjeVN5bmMKLSAgICBHZXRQYXN0ZWJvYXJkVVJMKFN0cmluZyBwYXN0ZWJvYXJkTmFt
ZSkgLT4gKFN0cmluZyB1cmxTdHJpbmcpIExlZ2FjeVN5bmMKLSAgICBBZGRQYXN0ZWJvYXJkVHlw
ZXMoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJkVHlwZXMp
IC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5U3luYwotICAgIFNldFBhc3RlYm9hcmRU
eXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+IHBhc3RlYm9hcmRUeXBl
cykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBMZWdhY3lTeW5jCi0gICAgU2V0UGFzdGVib2Fy
ZFVSTChzdHJ1Y3QgV2ViQ29yZTo6UGFzdGVib2FyZFVSTCBwYXN0ZWJvYXJkVVJMLCBTdHJpbmcg
cGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgTGVnYWN5U3luYyBXYW50
c0Nvbm5lY3Rpb24KLSAgICBTZXRQYXN0ZWJvYXJkQ29sb3IoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBXZWJDb3JlOjpDb2xvciBjb2xvcikgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBMZWdhY3lT
eW5jCi0gICAgU2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1l
LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFN0cmluZyBzdHJpbmcpIC0+ICh1aW50NjRfdCBjaGFu
Z2VDb3VudCkgTGVnYWN5U3luYwotICAgIFNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6SGFuZGxlIGhhbmRsZSwgdWludDY0X3Qgc2l6ZSkgLT4gKHVpbnQ2NF90IGNoYW5nZUNv
dW50KSBMZWdhY3lTeW5jCisgICAgR2V0TnVtYmVyT2ZGaWxlcyhTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+ICh1aW50NjRfdCBudW1iZXJPZkZpbGVzKSBEZWxheWVkCisgICAgR2V0UGFzdGVib2Fy
ZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBE
ZWxheWVkCisgICAgR2V0UGFzdGVib2FyZFBhdGhuYW1lc0ZvclR5cGUoU3RyaW5nIHBhc3RlYm9h
cmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChWZWN0b3I8U3RyaW5nPiBwYXRobmFt
ZXMsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVuc2lv
bnMpIERlbGF5ZWQgV2FudHNDb25uZWN0aW9uCisgICAgR2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5
cGUoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChTdHJp
bmcgc3RyaW5nKSBEZWxheWVkCisgICAgR2V0UGFzdGVib2FyZFN0cmluZ3NGb3JUeXBlKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoVmVjdG9yPFN0cmlu
Zz4gc3RyaW5ncykgRGVsYXllZAorICAgIEdldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKFN0cmlu
ZyBwYXN0ZWJvYXJkTmFtZSwgU3RyaW5nIHBhc3RlYm9hcmRUeXBlKSAtPiAoV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IHNpemUpIERlbGF5ZWQKKyAgICBQYXN0
ZWJvYXJkQ29weShTdHJpbmcgZnJvbVBhc3RlYm9hcmQsIFN0cmluZyB0b1Bhc3RlYm9hcmQpIC0+
ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgRGVsYXllZAorICAgIEdldFBhc3RlYm9hcmRDaGFuZ2VD
b3VudChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+ICh1aW50NjRfdCBjaGFuZ2VDb3VudCkgRGVs
YXllZAorICAgIEdldFBhc3RlYm9hcmRVbmlxdWVOYW1lKCkgLT4gKFN0cmluZyBwYXN0ZWJvYXJk
TmFtZSkgRGVsYXllZAorICAgIEdldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFzdGVib2FyZE5h
bWUpIC0+IChXZWJDb3JlOjpDb2xvciBjb2xvcikgRGVsYXllZAorICAgIEdldFBhc3RlYm9hcmRV
UkwoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoU3RyaW5nIHVybFN0cmluZykgRGVsYXllZAor
ICAgIEFkZFBhc3RlYm9hcmRUeXBlcyhTdHJpbmcgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJp
bmc+IHBhc3RlYm9hcmRUeXBlcykgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBEZWxheWVkCisg
ICAgU2V0UGFzdGVib2FyZFR5cGVzKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgVmVjdG9yPFN0cmlu
Zz4gcGFzdGVib2FyZFR5cGVzKSAtPiAodWludDY0X3QgY2hhbmdlQ291bnQpIERlbGF5ZWQKKyAg
ICBTZXRQYXN0ZWJvYXJkVVJMKHN0cnVjdCBXZWJDb3JlOjpQYXN0ZWJvYXJkVVJMIHBhc3RlYm9h
cmRVUkwsIFN0cmluZyBwYXN0ZWJvYXJkTmFtZSkgLT4gKHVpbnQ2NF90IGNoYW5nZUNvdW50KSBE
ZWxheWVkIFdhbnRzQ29ubmVjdGlvbgorICAgIFNldFBhc3RlYm9hcmRDb2xvcihTdHJpbmcgcGFz
dGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yIGNvbG9yKSAtPiAodWludDY0X3QgY2hhbmdlQ291
bnQpIERlbGF5ZWQKKyAgICBTZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShTdHJpbmcgcGFzdGVi
b2FyZE5hbWUsIFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHN0cmluZykgLT4gKHVpbnQ2
NF90IGNoYW5nZUNvdW50KSBEZWxheWVkCisgICAgU2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUo
U3RyaW5nIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcgcGFzdGVib2FyZFR5cGUsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlLCB1aW50NjRfdCBzaXplKSAtPiAodWludDY0X3QgY2hh
bmdlQ291bnQpIERlbGF5ZWQKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIFdyaXRl
VG9DbGlwYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxl
Y3Rpb25EYXRhIHBhc3RlYm9hcmRDb250ZW50KSBMZWdhY3lTeW5jCi0gICAgUmVhZEZyb21DbGlw
Ym9hcmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYktpdDo6V2ViU2VsZWN0
aW9uRGF0YSBwYXN0ZWJvYXJkQ29udGVudCkgTGVnYWN5U3luYworICAgIFdyaXRlVG9DbGlwYm9h
cmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25EYXRh
IHBhc3RlYm9hcmRDb250ZW50KQorICAgIFJlYWRGcm9tQ2xpcGJvYXJkKFN0cmluZyBwYXN0ZWJv
YXJkTmFtZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGEgcGFzdGVib2FyZENv
bnRlbnQpIERlbGF5ZWQKICNlbmRpZgogCiAjaWYgVVNFKExJQldQRSkKLSAgICBHZXRQYXN0ZWJv
YXJkVHlwZXMoKSAtPiAoVmVjdG9yPFN0cmluZz4gdHlwZXMpIExlZ2FjeVN5bmMKLSAgICBSZWFk
U3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIFN0cmluZyBwYXN0ZWJvYXJkVHlw
ZSkgLT4gKFN0cmluZyBzdHJpbmcpIExlZ2FjeVN5bmMKLSAgICBXcml0ZVdlYkNvbnRlbnRUb1Bh
c3RlYm9hcmQoc3RydWN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250ZW50IGNvbnRlbnQpIExl
Z2FjeVN5bmMKLSAgICBXcml0ZVN0cmluZ1RvUGFzdGVib2FyZChTdHJpbmcgcGFzdGVib2FyZFR5
cGUsIFN0cmluZyB0ZXh0KSBMZWdhY3lTeW5jCisgICAgR2V0UGFzdGVib2FyZFR5cGVzKCkgLT4g
KFZlY3RvcjxTdHJpbmc+IHR5cGVzKSBEZWxheWVkCisgICAgUmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkKHVpbnQ2NF90IGluZGV4LCBTdHJpbmcgcGFzdGVib2FyZFR5cGUpIC0+IChTdHJpbmcgc3Ry
aW5nKSBEZWxheWVkCisgICAgV3JpdGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKHN0cnVjdCBXZWJD
b3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCBjb250ZW50KQorICAgIFdyaXRlU3RyaW5nVG9QYXN0
ZWJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nIHRleHQpCiAjZW5kaWYKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhc3Rl
Ym9hcmRQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzgsMTQgKzM4LDE4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVzKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgVmVjdG9yPFN0cmluZz4gcGFzdGVi
b2FyZFR5cGVzOwogICAgIFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuZ2V0VHlw
ZXMocGFzdGVib2FyZFR5cGVzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3Rl
Ym9hcmRUeXBlcykpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2Fy
ZFBhdGhuYW1lc0ZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLAotICAgIFZl
Y3RvcjxTdHJpbmc+JiBwYXRobmFtZXMsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFycmF5JiBz
YW5kYm94RXh0ZW5zaW9ucykKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYgcGF0aG5hbWVzLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVBcnJheSYmIHNhbmRib3hF
eHRlbnNpb25zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBw
YXRobmFtZXM7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJyYXkgc2FuZGJveEV4dGVu
c2lvbnM7CiAgICAgZm9yIChhdXRvKiB3ZWJQcm9jZXNzUHJveHkgOiBtX3dlYlByb2Nlc3NQcm94
eUxpc3QpIHsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmhhc0Nvbm5lY3Rpb24oY29u
bmVjdGlvbikpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTYzLDExOSArNjcsMTE3IEBAIHZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkUGEKICAgICAgICAgfQogI2VuZGlm
CiAgICAgfQorICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocGF0aG5hbWVzKSwgV1RGTW92
ZShzYW5kYm94RXh0ZW5zaW9ucykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0
UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU3RyaW5nJiBzdHJpbmcpCit2b2lkIFdlYlBhc3Rl
Ym9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc3RyaW5nID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zdHJpbmdGb3JUeXBlKHBhc3RlYm9h
cmRUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLnN0cmluZ0ZvclR5cGUocGFzdGVib2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRTdHJpbmdzRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBWZWN0b3I8U3Ry
aW5nPiYgc3RyaW5ncykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkU3Ry
aW5nc0ZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzdHJpbmdzID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5hbGxTdHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxT
dHJpbmdzRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6Z2V0UGFzdGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUm
IGhhbmRsZSwgdWludDY0X3QmIHNpemUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFz
dGVib2FyZEJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTaGFyZWRNZW1v
cnk6OkhhbmRsZSYmLCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5idWZmZXJGb3JUeXBlKHBhc3RlYm9hcmRUeXBlKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAg
ICAgICAgcmV0dXJuOwotICAgIHNpemUgPSBidWZmZXItPnNpemUoKTsKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CisgICAgdWludDY0X3Qgc2l6ZSA9IGJ1ZmZlci0+
c2l6ZSgpOwogICAgIGlmICghc2l6ZSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFy
ZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKHNpemUpOwogICAgIGlmICgh
c2hhcmVkTWVtb3J5QnVmZmVyKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIDApOwogICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZmZXItPmRh
dGEoKSwgYnVmZmVyLT5kYXRhKCksIHNpemUpOworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKICAgICBzaGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoaGFuZGxlKSwgc2l6ZSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpwYXN0
ZWJvYXJkQ29weShjb25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRv
UGFzdGVib2FyZCwgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJk
UHJveHk6OnBhc3RlYm9hcmRDb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0
IFN0cmluZyYgdG9QYXN0ZWJvYXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXdDaGFuZ2VDb3VudCA9IFBsYXRmb3JtUGFz
dGVib2FyZCh0b1Bhc3RlYm9hcmQpLmNvcHkoZnJvbVBhc3RlYm9hcmQpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZCh0b1Bhc3RlYm9hcmQpLmNvcHkoZnJvbVBhc3Rl
Ym9hcmQpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRDaGFu
Z2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRfdCYgY2hhbmdlQ291
bnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVib2FyZENoYW5nZUNvdW50KGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNoYW5nZUNvdW50ID0gUGxhdGZvcm1Q
YXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jaGFuZ2VDb3VudCgpOworICAgIGNvbXBsZXRpb25I
YW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY2hhbmdlQ291bnQoKSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVW5pcXVlTmFtZShT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3Rl
Ym9hcmRVbmlxdWVOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHBhc3RlYm9hcmROYW1lID0gUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp1bmlxdWVOYW1lKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp1bmlxdWVOYW1lKCkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVi
b2FyZENvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYkNvcmU6OkNvbG9yJiBj
b2xvcikKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkQ29sb3IoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpD
b2xvciYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb2xvciA9IFBsYXRmb3JtUGFz
dGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuY29sb3IoKTsgICAgCisgICAgY29tcGxldGlvbkhhbmRs
ZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb2xvcigpKTsKIH0KIAotdm9p
ZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRVUkwoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgV1RGOjpTdHJpbmcmIHVybFN0cmluZykKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5OjpnZXRQYXN0ZWJvYXJkVVJMKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgdXJsU3RyaW5nID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS51cmwo
KS5zdHJpbmcoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnVybCgpLnN0cmluZygpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OmFkZFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCB1aW50NjRfdCYgbmV3Q2hhbmdlQ291
bnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6YWRkUGFzdGVib2FyZFR5cGVzKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS5hZGRUeXBlcyhwYXN0ZWJvYXJkVHlwZXMpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBs
YXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuYWRkVHlwZXMocGFzdGVib2FyZFR5cGVz
KSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkVHlwZXMoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgdWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnNldFBhc3RlYm9hcmRUeXBlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBuZXdDaGFuZ2VDb3VudCA9
IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VHlwZXMocGFzdGVib2FyZFR5
cGVzKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLnNldFR5cGVzKHBhc3RlYm9hcmRUeXBlcykpOwogfQogCi12b2lkIFdlYlBhc3RlYm9h
cmRQcm94eTo6c2V0UGFzdGVib2FyZFVSTChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNv
bnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5
OjpzZXRQYXN0ZWJvYXJkVVJMKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgUGFz
dGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgZm9yIChhdXRvKiB3ZWJQcm9jZXNzUHJveHkgOiBtX3dlYlByb2Nlc3NQcm94eUxpc3Qp
IHsKICAgICAgICAgaWYgKCF3ZWJQcm9jZXNzUHJveHktPmhhc0Nvbm5lY3Rpb24oY29ubmVjdGlv
bikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIXdlYlByb2Nlc3NQcm94
eS0+Y2hlY2tVUkxSZWNlaXZlZEZyb21XZWJQcm9jZXNzKHBhc3RlYm9hcmRVUkwudXJsLnN0cmlu
ZygpKSkgewotICAgICAgICAgICAgbmV3Q2hhbmdlQ291bnQgPSAwOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghd2ViUHJvY2Vzc1Byb3h5LT5jaGVja1VSTFJl
Y2VpdmVkRnJvbVdlYlByb2Nlc3MocGFzdGVib2FyZFVSTC51cmwuc3RyaW5nKCkpKQorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOwogCi0gICAgICAgIG5ld0NoYW5nZUNv
dW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRVUkwocGFzdGVib2Fy
ZFVSTCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0VVJMKHBhc3RlYm9hcmRVUkwp
KTsKICAgICB9Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSAwOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KDApOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZENvbG9yKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvciwg
dWludDY0X3QmIG5ld0NoYW5nZUNvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFBh
c3RlYm9hcmRDb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS5zZXRDb2xvcihjb2xvcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRDb2xvcihjb2xvcikpOwogfQog
Ci12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6c2V0UGFzdGVib2FyZFN0cmluZ0ZvclR5cGUoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKK3ZvaWQgV2Vi
UGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkU3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgbmV3Q2hhbmdlQ291bnQgPSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFz
dGVib2FyZE5hbWUpLnNldFN0cmluZ0ZvclR5cGUoc3RyaW5nLCBwYXN0ZWJvYXJkVHlwZSk7Cisg
ICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5z
ZXRTdHJpbmdGb3JUeXBlKHN0cmluZywgcGFzdGVib2FyZFR5cGUpKTsKIH0KIAotdm9pZCBXZWJQ
YXN0ZWJvYXJkUHJveHk6OnNldFBhc3RlYm9hcmRCdWZmZXJGb3JUeXBlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIHVpbnQ2NF90IHNpemUsIHVpbnQ2NF90JiBuZXdDaGFu
Z2VDb3VudCkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpzZXRQYXN0ZWJvYXJkQnVmZmVyRm9y
VHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFuZGxlLCB1aW50NjRfdCBzaXpl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKSB7Ci0gICAgICAgIG5ld0NoYW5nZUNvdW50ID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKDAsIHBh
c3RlYm9hcmRUeXBlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaGFuZGxlLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS5zZXRCdWZmZXJGb3JUeXBlKDAsIHBhc3RlYm9hcmRUeXBlKSk7
CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVt
b3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAg
ICBhdXRvIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXIgKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBzaXplKTsKLSAgICBuZXdDaGFu
Z2VDb3VudCA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkuc2V0QnVmZmVyRm9y
VHlwZShidWZmZXIucHRyKCksIHBhc3RlYm9hcmRUeXBlKTsKKyAgICBjb21wbGV0aW9uSGFuZGxl
cihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnNldEJ1ZmZlckZvclR5cGUoYnVm
ZmVyLnB0cigpLCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6Z2V0TnVtYmVyT2ZGaWxlcyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCB1aW50NjRf
dCYgbnVtYmVyT2ZGaWxlcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXROdW1iZXJPZkZp
bGVzKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG51bWJlck9mRmlsZXMgPSBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLm51bWJlck9mRmlsZXMoKTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLm51bWJl
ck9mRmlsZXMoKSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp0eXBlc1NhZmVGb3JE
T01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgVmVjdG9yPFN0cmluZz4mIHR5cGVzKQordm9pZCBXZWJQYXN0ZWJvYXJkUHJv
eHk6OnR5cGVzU2FmZUZvckRPTVRvUmVhZEFuZFdyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHR5cGVzID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS50eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0
ZShvcmlnaW4pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0
ZWJvYXJkTmFtZSkudHlwZXNTYWZlRm9yRE9NVG9SZWFkQW5kV3JpdGUob3JpZ2luKSk7CiB9CiAK
LXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUs
IHVpbnQ2NF90JiBuZXdDaGFuZ2VDb3VudCkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojp3cml0
ZUN1c3RvbURhdGEoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGEmIGRhdGEsIGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG5ld0NoYW5nZUNvdW50ID0gUGxhdGZv
cm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShkYXRhKTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLndyaXRlKGRhdGEpKTsK
IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0yMDAsNDQgKzIwMiw0OCBAQCB2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVTdHJpbmdUb1BhCiAgICAgUGxhdGZvcm1QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKS53cml0ZShwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CiB9CiAKLXZv
aWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3Qg
aW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZE5hbWUsIFdURjo6U3RyaW5nJiB2YWx1ZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQodWludDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHZhbHVlID0g
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0
ZWJvYXJkVHlwZSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKS5yZWFkU3RyaW5nKGluZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCi12
b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFVSTEZyb21QYXN0ZWJvYXJkKHVpbnQ2NF90IGlu
ZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBTdHJpbmcmIHVybCwgU3RyaW5nJiB0
aXRsZSkKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkVVJMRnJvbVBhc3RlYm9hcmQodWlu
dDY0X3QgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nJiYgdXJsLCBTdHJpbmcmJiB0aXRsZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgdXJsID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFk
VVJMKGluZGV4LCB0aXRsZSk7CisgICAgU3RyaW5nIHRpdGxlOworICAgIFN0cmluZyB1cmwgPSBQ
bGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRVUkwoaW5kZXgsIHRpdGxlKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHVybCksIFdURk1vdmUodGl0bGUpKTsKIH0K
IAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZCh1aW50
NjRfdCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgdWludDY0X3QmIHNp
emUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiYsIHVpbnQ2NF90IHNpemUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkucmVhZEJ1ZmZlcihpbmRleCwgcGFzdGVib2FyZFR5cGUpOwogICAgIGlmICghYnVmZmVyKQot
ICAgICAgICByZXR1cm47Ci0gICAgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwKTsKKyAgICB1aW50NjRfdCBzaXplID0gYnVmZmVy
LT5zaXplKCk7CiAgICAgaWYgKCFzaXplKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDApOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNo
YXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CiAgICAgaWYg
KCFzaGFyZWRNZW1vcnlCdWZmZXIpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgMCk7CiAgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+
ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgc2l6ZSk7CisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUg
aGFuZGxlOwogICAgIHNoYXJlZE1lbW9yeUJ1ZmZlci0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hh
cmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShoYW5kbGUpLCBzaXplKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6Omdl
dFBhc3RlYm9hcmRJdGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIHVpbnQ2
NF90JiBpdGVtc0NvdW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmdldFBhc3RlYm9hcmRJ
dGVtc0NvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQodWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGl0ZW1zQ291bnQg
PSBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmNvdW50KCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5jb3VudCgpKTsK
IH0KIAotdm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OmFsbFBhc3RlYm9hcmRJdGVtSW5mbyhjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBWZWN0b3I8UGFzdGVib2FyZEl0ZW1JbmZvPiYgYWxs
SW5mbykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjphbGxQYXN0ZWJvYXJkSXRlbUluZm8oY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
UGFzdGVib2FyZEl0ZW1JbmZvPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBhbGxJ
bmZvID0gUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5hbGxQYXN0ZWJvYXJkSXRl
bUluZm8oKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVi
b2FyZE5hbWUpLmFsbFBhc3RlYm9hcmRJdGVtSW5mbygpKTsKIH0KIAotdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW50IGluZGV4LCBjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmROYW1lLCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCit2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6aW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbnQgaW5kZXgsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUGFzdGVib2Fy
ZEl0ZW1JbmZvJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGluZm8gPSBQbGF0Zm9y
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5k
ZXgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJk
TmFtZSkuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCkpOwogfQogCiB2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6dXBkYXRlU3VwcG9ydGVkVHlwZUlkZW50aWZpZXJzKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBpZGVudGlmaWVycywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJk
UHJveHlHdGsuY3BwCShyZXZpc2lvbiAyNDMxODApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsOSAr
NDQsOSBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVUb0NsaXBib2FyCiAgICAgfSk7
CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpyZWFkRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24pCit2b2lk
IFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJTZWxlY3Rpb25EYXRhJiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbGVjdGlvbiA9IFdlYlNlbGVjdGlvbkRhdGEo
UGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkRnJvbUNsaXBib2FyZCgpKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJTZWxlY3Rpb25EYXRhKFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkucmVhZEZyb21DbGlwYm9hcmQoKSkpOwogfQogCiB2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6c2V0UHJpbWFyeVNlbGVjdGlvbk93bmVyKFdlYkZyYW1lUHJveHkqIGZy
YW1lKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBhc3RlYm9hcmRQcm94
eVdQRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlBh
c3RlYm9hcmRQcm94eVdQRS5jcHAJKHJldmlzaW9uIDI0MzE4MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dwZS9XZWJQYXN0ZWJvYXJkUHJveHlXUEUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwxNCArMzIsMTYgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5OjpnZXRQYXN0ZWJvYXJkVHlwZXMoVmVj
dG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcykKK3ZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpn
ZXRQYXN0ZWJvYXJkVHlwZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXN0ZWJvYXJk
VHlwZXM7CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKCkuZ2V0VHlwZXMocGFzdGVib2FyZFR5cGVz
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHBhc3RlYm9hcmRUeXBlcykpOwogfQog
Ci12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVpbnQ2
NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBXVEY6OlN0cmluZyYgdmFs
dWUpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKHVp
bnQ2NF90IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB2YWx1ZSA9
IFBsYXRmb3JtUGFzdGVib2FyZCgpLnJlYWRTdHJpbmcoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKTsK
KyAgICBjb21wbGV0aW9uSGFuZGxlcihQbGF0Zm9ybVBhc3RlYm9hcmQoKS5yZWFkU3RyaW5nKGlu
ZGV4LCBwYXN0ZWJvYXJkVHlwZSkpOwogfQogCiB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6d3Jp
dGVXZWJDb250ZW50VG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRXZWJDb250
ZW50JiBjb250ZW50KQo=
</data>
<flag name="review"
          id="381989"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>